【问题标题】:Connect to mysql database in Android with java [duplicate]使用java连接到Android中的mysql数据库[重复]
【发布时间】:2015-01-20 08:36:00
【问题描述】:

我已经在我的电脑上安装了 mysql.and 也有码头.. 我的要求:- 我有一个表名为 ari 的数据库学生; ari 表是:-

+----+-------+
| id | name  |
+----+-------+
| 22 | Sandy |
+----+-------+

从我的 Android 程序中,我想从数据库中获取它..我已经这样做了:- MainActivity.java

public class MainActivity extends Activity {
    private static final String url = "jdbc:mysql://localhost:3306/student";
    private static final String user = "root";
    private static final String pass = "root";
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        testDB();
    }
public void testDB() {
        TextView tv = (TextView)this.findViewById(R.id.textView1);
        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection(url, user, pass);
            String result = "Database connection success\n";
            Statement st = con.createStatement();
            ResultSet rs = st.executeQuery("select * from ari");
            ResultSetMetaData rsmd = rs.getMetaData();
while(rs.next()) {
                result += rsmd.getColumnName(1) + ": " + rs.getInt(1) + "\n";
                result += rsmd.getColumnName(2) + ": " + rs.getString(2) + "\n";
                        }
            tv.setText(result);
        }
        catch(Exception e) {
            e.printStackTrace();
            tv.setText(e.toString());
        }   
    }
}

而activity_main.xml是:--

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin" >
    <TextView
         android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />
</RelativeLayout>

manifext 文件是:---

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.TourBus.info"
    android:versionCode="1"
    android:versionName="1.0-SNAPSHOT" >
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="21" />
<uses-permission android:name="android.permission.INTERNET" /> 
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

但问题是,当我在我的 android 手机或模拟器中运行该程序时,它显示:--

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:  
Could not create connection to database server. 

我也有jar文件:--

mysql-connector-java

谁能帮帮我??请

【问题讨论】:

  • 你能做到吗?据我所知,您需要一个 Web 服务来连接到您的数据库,因为您的数据库在某些服务器上运行并且您的应用程序在移动设备上运行
  • @Naveen Tamrakar,关于站点示例非常好..但它是php..我不知道php..java+android+mysql中有没有示例??
  • @subhodeepchatterjee 首先你认为你的设备连接在使用面板上,所以你想你想做什么
  • 在android数据库sqlite数据库中也有buit

标签: java android mysql


【解决方案1】:

如果您希望模拟器客户端联系运行在同一主机上的服务器,请使用别名10.0.2.2 来指代主机的环回接口。从模拟器的角度来看,localhost 或127.0.0.1 指的是它自己的环回接口。所以改变

private static final String url = "jdbc:mysql://localhost:3306/student";

到

private static final String url = "jdbc:mysql://10.0.2.2/student";

查看link

编辑

在您的 /etc/mysql/my.cnf 中,尝试通过在该行的开头添加# 来注释掉skip-networking。

如果这不能解决您的问题,请尝试在更改 url 后检查此 Solving a “communications link failure” with JDBC and MySQL 以解决您的 com.mysql.jdbc.exceptions.jdbc4.CommunicationException:communication link failure 错误,如上所示。

【讨论】:

  • 这个我试过了....但是它说,“com.mysql.jdbc.exceptions.jdbc4.CommunicationException:communication link failure ;...最后一个包成功发送到服务器。 .驱动没有收到来自服务器的任何数据包"
  • SHOW VARIABLES WHERE Variable_name = 'port'; 使用此命令并检查您的端口号。是否为3306。也试试没有端口号的url
  • 在哪里??在终端??? iirc-Dell-DXP061:~$ SHOW VARIABLES WHERE Variable_name = 'port';显示:找不到命令
  • "C:\Program Files\mysql\bin\my.ini 尝试通过在该行的开头添加 # 来注释掉跳过网络。" ubuntu 的命令是什么?
猜你喜欢
  • 1970-01-01
  • 2011-06-10
  • 2019-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-03
  • 1970-01-01
  • 2018-03-09
相关资源
最近更新 更多