การบันทึกข้อมูลที่จะมีรูปภาพจาก Android เข้าฐานข้อมูล (MySQL, SQL Server) โดยต้องมีข้อมูล แต่ไม่บังคับว่าจะมีรูปภาพหรือไม่
ในการบันทึกข้อมูลและรูปภาพจาก Android เข้าฐานข้อมูล MySQL หรือ SQL Server โดย ต้องมีข้อมูล แต่ไม่บังคับว่าจะมีรูปภาพหรือไม่ ต้องใช้คำสั่งอะไรเป็นการควบคุม ใครมีความรู้ทางด้านนี้ช่วยบอกให้หน่อยนะครับ จะขอบคุณอย่างมากครับ
Code
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;
}
}
}
Tag : Mobile, MySQL, Ms SQL Server 2008, Android, Tablets, JAVA
ประวัติการแก้ไข 2015-05-27 17:22:41 2015-05-27 17:23:20
Date :
2015-05-27 16:36:46
By :
suparuark
View :
920
Reply :
2
ไม่ค่อยเข้าใจคำถามครับ ปกติถ้ารูปภาพไม่มีก็ไม่ต้อง Insert ครับ
Date :
2015-05-27 17:01:38
By :
mr.win
ไม่มีรูปภาพ แต่จะมีข้อความอื่นๆ น่ะครับ อย่างเช่น การถ่ายน้ำมันเครื่อง ก่อนการถ่ายจะมีการตรวจเช็คตำหนิของรถ จะมีการถ่ายรูปเพื่อยืนยันว่าคนคันนี้มีตำหนิ แต่ถ้าไม่มีตำหนิ ก็จะไม่จำเป็นต้องถ่ายรูปเอาไว้น่ะครับ
Date :
2015-05-27 17:08:57
By :
suparuark
Load balance : Server 05