การบันทึกข้อมูลที่จะมีรูปภาพจาก Android เข้าฐานข้อมูล (MySQL, SQL Server) โดยไม่บังคับว่ารูปภาพว่ามีหรือไม่?

กระทู้คำถาม
ในการบันทึกข้อมูลและรูปภาพจาก Android เข้าฐานข้อมูล MySQL หรือ SQL Server โดยไม่บังคับว่ารูปภาพว่ามีหรือไม่มี ต้องใช้คำสั่งอะไรเป็นการควบคุม ใครมีความรู้ทางด้านนี้ช่วยบอกให้หน่อยนะครับ จะขอบคุณอย่างมากครับFacepalmFacepalmFacepalmFacepalmอมยิ้ม03อมยิ้ม03


ตัวอย่างโค้ตครับ
package com.android.car;

import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import org.apache.http.NameValuePair;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import org.apache.http.message.BasicNameValuePair;
import java.util.List;
import android.os.StrictMode;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import org.json.JSONException;
import org.json.JSONObject;
import android.widget.Toast;import java.io.BufferedReader;
import java.io.InputStream;
import android.util.Log;
import android.app.AlertDialog;
import java.io.ByteArrayOutputStream;

public class SaveActivity extends ActionBarActivity {
    // ประกาศตัวแปร
    private TextView name, tel;
    private String name1, tel1;
    private String pathSignature;
    private Button ok;
    private ImageView signatureView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_save);
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
        init();  // แยกประกอบรับค่ามาจาก XML
        intents();  // แสดงค่าที่รับมาจาก File กรอกข้อมูล
        totamsum();  // ผสมระหว่าง File กรอกข้อมูล เข้าสู่รับค่าจาก XML
        okbutton();  // ทำการบันทึกเข้า MySQL หรือ SQL Server
    }

    private void init() {   // รับค่า XML
        name = (TextView) findViewById(R.id.name);
        tel = (TextView) findViewById(R.id.tel);
        ok = (Button) findViewById(R.id.ok);
        signatureView = (ImageView)findViewById(R.id.signatureView);
    }

    private void intents() {  // แสดงค่าจาก File กรอกข้อมูล
        Intent save11 = getIntent();
        name1 = save11.getStringExtra("name");
        tel1 = save11.getStringExtra("tel");
        pathSignature = save11.getStringExtra("pathSignature");
    }

    private void totamsum() {  // ผสมระหว่าง File กรอกข้อมูล เข้ารับค่าจาก XML
        name.setText(name1);
        tel.setText(tel1);
        signatureView.setImageBitmap(BitmapFactory.decodeFile(pathSignature));
    }

    private void okbutton() {  // ทำการบันทึก
        ok.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(SaveData()) {
                }
            }
        });
    }

    public boolean SaveData() {
        
        final AlertDialog.Builder ad = new AlertDialog.Builder(this);  // ตรวจสอบการผิดพลาด
        ad.setTitle("Error! ");
        ad.setIcon(android.R.drawable.btn_star_big_on);
        ad.setPositiveButton("Close", null);

        URLEdit.url_Save();  // ส่งไปยัง File บันทึก URL
        String url = URLEdit.url_Save();  // รับจาก File บันทึก URL

        String strSDPath = pathSignature.toString();  // รูปภาพ ซึ่งจะมีหรือไม่มีก็ได้
        String resServer = uploadFiletoServer(strSDPath, url);

        List<NameValuePair> params = new ArrayList<NameValuePair>ร้องไห้);  // รับตัวแปรพร้อมส่งไปยัง PHP เพื่อบันทึกลง MySQL หรือ SQL Server
        params.add(new BasicNameValuePair("nName", name.getText().toString()));
        params.add(new BasicNameValuePair("nTel", tel.getText().toString()));
        params.add(new BasicNameValuePair("pic_file", pathSignature.toString()));
        params.add(new BasicNameValuePair("pic_name", resServer.toString()));

        getJSONUrl.getUrl(url, params);  // ประมวลผล
        String resultServer = getJSONUrl.returnString();

        String strStatusID = "0";
        String strError = "Unknow!";
        String strName = "";

        JSONObject c;
        try {
            c = new JSONObject(resultServer);
            strStatusID = c.getString("StatusID");
            strError = c.getString("Error");
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        if (strStatusID.equals("1")) {
            ad.setMessage(strError);
            ad.show();
        } else {
            Toast.makeText(SaveActivity.this, "Save Finish", Toast.LENGTH_SHORT).show();
        }
        return true;
    }

    public String uploadFiletoServer(String strSDPath, String url) {  // ประมวลรูปภาพ
        int bytesRead, bytesAvailable, bufferSize;
        byte[] buffer;
        int maxBufferSize = 1 * 1024 * 1024;
        int resCode = 0;
        String resMessage = "";
        String lineEnd = "\r\n";
        String twoHyphens = "--";
        String boundary =  "*****";
        try {
            File file = new File(strSDPath);
            if(!file.exists()) {
                return "{\"StatusID\":\"0\",\"Error\":\"Please check path on SD Card\"}";
            }
            FileInputStream fileInputStream = new FileInputStream(new File(strSDPath));
            URL url1 = new URL(url);
            HttpURLConnection conn = (HttpURLConnection) url1.openConnection();
            conn.setDoInput(true);
            conn.setDoOutput(true);
            conn.setUseCaches(false);
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Connection", "Keep-Alive");
            conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
            DataOutputStream outputStream = new DataOutputStream(conn.getOutputStream());
            outputStream.writeBytes(twoHyphens + boundary + lineEnd);
            outputStream.writeBytes("Content-Disposition: form-data; name=\"pic_name\";filename=\"" + strSDPath + "\"" + lineEnd);
            outputStream.writeBytes(lineEnd);
            bytesAvailable = fileInputStream.available();
            bufferSize = Math.min(bytesAvailable, maxBufferSize);
            buffer = new byte[bufferSize];
            bytesRead = fileInputStream.read(buffer, 0, bufferSize);
            while (bytesRead > 0) {
                outputStream.write(buffer, 0, bufferSize);
                bytesAvailable = fileInputStream.available();
                bufferSize = Math.min(bytesAvailable, maxBufferSize);
                bytesRead = fileInputStream.read(buffer, 0, bufferSize);
            }
            outputStream.writeBytes(lineEnd);
            outputStream.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
            resCode = conn.getResponseCode();
            if(resCode == HttpURLConnection.HTTP_OK) {
                InputStream is = conn.getInputStream();
                ByteArrayOutputStream bos = new ByteArrayOutputStream();
                int read = 0;
                while ((read = is.read()) != -1) {
                    bos.write(read);
                }
                byte[] result = bos.toByteArray();
                bos.close();
                resMessage = new String(result);
            }
            Log.d("resCode=",Integer.toString(resCode));
            Log.d("resMessage=",resMessage.toString());
            fileInputStream.close();
            outputStream.flush();
            outputStream.close();
            return resMessage.toString();
        } catch (Exception ex) {
            // Exception handling
            return null;
        }
    }
}
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่