我正在尝试使用 Web 服务从远程 SQL 数据库存储/检索信息。由于某种原因,空字符串被插入到数据库中,而不是我想要存储的字符串。
如果 DB 中不存在具有 deviceID 的条目,我需要存储字符串 deviceID 和 dateStamp。
DB表名是trials,列是:_id | device_id | 安装日期
注意:与数据库连接和交互,只存储“”和“”而不是字符串。
有人可以告诉我这是为什么吗?这是我第一次尝试这种事情,所以遇到了很多麻烦并尝试修改我发现的片段以满足我的需要。
这是我的java代码:
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.provider.Settings.Secure;
import android.widget.Toast;
public class LicenseCheck extends Activity
{
String deviceID="",dateStamp="";
byte[] data;
HttpPost httppost;
StringBuffer buffer;
HttpResponse response;
HttpClient httpclient;
InputStream inputStream;
List<NameValuePair> nameValuePairs;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
final String android_id = Secure.getString(getApplicationContext().getContentResolver(),Secure.ANDROID_ID);
deviceID = android_id;
Date now = new Date();
dateStamp = String.valueOf(now);
try
{
httpclient = new DefaultHttpClient();
httppost = new HttpPost("http://99.57.234.12/Main.php");
// Add your data
nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("device_id", deviceID));
nameValuePairs.add(new BasicNameValuePair("install_date", dateStamp));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
response = httpclient.execute(httppost);
inputStream = response.getEntity().getContent();
data = new byte[256];
buffer = new StringBuffer();
int len = 0;
while (-1 != (len = inputStream.read(data)) )
{
buffer.append(new String(data, 0, len));
}
inputStream.close();
} catch (Exception e) {
Toast.makeText(LicenseCheck.this, "error"+e.toString(), Toast.LENGTH_LONG).show();
}
if(buffer.charAt(0)=='Y')
{
Toast.makeText(LicenseCheck.this, "working: " + buffer.toString() + ".", Toast.LENGTH_LONG).show();
Move_to_next();
LicenseCheck.this.finish();
} else {
Toast.makeText(LicenseCheck.this, "Trial Started", Toast.LENGTH_LONG).show();
Move_to_next();
LicenseCheck.this.finish();
}
}
public void Move_to_next()
{
startActivity(new Intent(this, MainMenu.class));
}
}
这是PHP:
<?php
require_once('Connections.php');
mysql_select_db($database_localhost,$localhost);
$device = $_POST['device_id'];
$date = $_POST['install_date'];
$query_search = "select * from trials where device_id = '".$device."'";
$query_exec = mysql_query($query_search) or die(mysql_error());
$rows = mysql_num_rows($query_exec);
if($rows --> 0)
{
echo "Y";
$result = mysql_query("SELECT device_id,install_date FROM trials WHERE device_id = '".$device."'");
if (!$result) {
echo 'Could not run query: ' . mysql_error();
exit;
}
$row = mysql_fetch_row($result);
echo $row[0]; // device_id
echo $row[1]; // install_date
} else {
echo "N";
mysql_query("INSERT INTO trials (device_id, install_date) VALUES ( '".$device."', '".$date."')") or die (mysql_error());
}
?>