代码如下:
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
//ResultSet
最初指向第一行
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文件中要添加可访问网络的权限
之后才可以运行。
这个本地ip不能用的问题等研究之后再贴。