代碼如下:
package com.example.machine.gasmonitoring;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class SQLActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sql);
new Thread(runnable).start();
}
Handler myHandler = new Handler(){
public void handleMessage(Message msg){
super.handleMessage(msg);
Bundle data = new Bundle();
data=msg.getData();
System.out.println("username" + data.get("username").toString());
System.out.println("userpass" + data.get("userpass").toString());
}
};
Runnable runnable = new Runnable() {
private Connection connection = null;
@Override
public void run() {
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://IPAddress:3306/Databasename", "username", "youpass");
System.out.print("連接成功");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e1) {
e1.printStackTrace();
}
try {
test(connection); //測試數據庫連接
} catch (java.sql.SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void test(Connection con1) throws java.sql.SQLException {
try {
String sql = "select * from user"; //查詢表名為“user”的所有內容
Statement stmt = con1.createStatement(); //創建Statement
ResultSet rs = stmt.executeQuery(sql); //ResultSet類似Cursor
//<code>ResultSet</code>最初指向第一行
Bundle bundle = new Bundle();
while (rs.next()) {
bundle.clear();
bundle.putString("username", rs.getString("username"));
bundle.putString("userpass", rs.getString("userpass"));
Message msg = new Message();
msg.setData(bundle);
myHandler.sendMessage(msg);
}
rs.close();
stmt.close();
} catch (SQLException e) {
} finally {
if (con1 != null)
try {
con1.close();
} catch (SQLException e) {
}
}
}
};
};
這是一個簡單的Android通過jdbc直接連接數據庫的例子,代碼中的IPAddress指你的ip地址,Databasename指的是你的數據庫的名字,不是表的名字,指數據庫的名字,username和yourpass分別是你的數據庫用戶名和密碼。
這個例子中我主要是做了一個直接查詢的功能,查詢了user表中的兩列數據,打印到控制台,大家也可以自己再深入研究添加其他功能。
需要注意的是,在使用jdbc連接數據庫的時候肯定是要使用連數據的jar的包,我用的是android studio開發的,所以架包直接放在libs文件夾下面:
另外在使用IP地址的時候使用127.0.0.1的時候可能會報錯
顯示這樣的錯誤,意思是嘗試調用sql接口的時候出現了空指針異常,具體原因還沒分析,所以我用的ip地址是自己服務器的ip地址,是公網。
還有一點是在AndroidManifest.xml文件中要添加可訪問網絡的權限
<uses-permission android:name="android.permission.INTERNET"/>
之后才可以運行。
這個本地ip不能用的問題等研究之后再貼。