java - 如何使用 android (PHP) 连接 MySQL 数据库?

标签 java php android mysql

我已经尝试了几乎所有遇到过的关于这个问题的代码。

我在下面留下了示例代码。

//select.php
         <?php
$host='127.0.0.1';
$uname='root';
$pwd='';
$db="android";
$id=$_REQUEST['id'];
$con = mysql_connect($host,$uname,$pwd) or die("connection failed");
$sqlString = "select * from sample where id='$id'  ";
$rs = mysql_query($sqlString);  
if($rs){
while($objRs = mysql_fetch_assoc($rs)){
$output[] = $objRs; }
echo json_encode($output); }
mysql_close($con);
?>

//主要 Activity

        @Override
        public void onClick(View v) {

        id=e_id.getText().toString();
        select();
        }
        });
        }

        public void select()    {
        ArrayList<NameValuePair> nameValuePairs = new 
        ArrayList<NameValuePair>();
        nameValuePairs.add(new BasicNameValuePair("id",id));

        try
        {
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("http://10.0.2.2/select.php");
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
        is = entity.getContent();
        Log.e("pass 1", "connection success ");
        }
        catch(Exception e)
        {
        Log.e("Fail 1", e.toString());
        Toast.makeText(getApplicationContext(), "Invalid IP Address",
        Toast.LENGTH_LONG).show();
        }

        try
        {
        BufferedReader reader = new BufferedReader
        (new InputStreamReader(is,"iso-8859-1"),8);
        StringBuilder sb = new StringBuilder();
        while ((line = reader.readLine()) != null)
        {
        sb.append(line + "\n");
        }
        is.close();
        result = sb.toString();
        Log.e("pass 2", "connection success ");
        }
        catch(Exception e)
        {
        Log.e("Fail 2", e.toString());
        }

        try
        {
        JSONObject json_data = new JSONObject(result);
        name=(json_data.getString("name"));
        Toast.makeText(getBaseContext(), "Name : "+name,
        Toast.LENGTH_SHORT).show();
        }
        catch(Exception e)
        {
        Log.e("Fail 3", e.toString());
        }        }}

我写这封信给。

 <uses-permission android:name="android.permission.INTERNET"/>  

//logcat

   E/Fail 1: android.os.NetworkOnMainThreadException
 E/Fail 2: java.lang.NullPointerException: lock == null
 E/Fail 3: java.lang.NullPointerException

当我尝试运行该应用程序时,出现IP 地址无效 错误。 我需要一些建议。我应该如何尝试使用 android (PHP) 连接 MySQL 数据库?

最佳答案

异常清楚地表明您正在主线程上调用网络操作,这就是它不起作用的原因。使用异步任务进行网络操作即可工作。从 api level 11 开始,android 限制主线程上的网络操作,如果这样做,它将在主线程异常上抛出错误网络。你也遇到了同样的异常。

关于java - 如何使用 android (PHP) 连接 MySQL 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45050006/

相关文章:

php - 通过 php 在 html 元素的属性中打印特殊字符

javascript - PHP/Javascript 缩小

java - Android 线程安全的 SharedPreferences

android - 无法在 Android 中使用带有 Gigya Social Login 的 Facebook native 应用程序

java - 使用位将 true/false 存储在 Integer 中

java - 抛出异常的哪一部分是昂贵的?

java - 什么 Java 数据结构/解决方案最适合这些要求?

java - C# 类似属性 get/set,而不是私有(private)变量和单独的 getter/setter 方法

php - 如何使用 yii2 basic 配置 adminlte?

java - 从数据库获取数据时ArrayIndexOutOfBounds异常问题