有感而发,毕业设计用AS写了一个app,原本用的是AS自带的轻量级数据库SQLite,但是导师说这样显得工作量太小,让我改成MySQL来替换SQLite。。。(内心OS:“您真好a!”)你猜为什么AS要集成SQLite而不用MySQL,真心服了。没招,为了毕业改吧。本以为和写Java应用差不多吧,但是一些细节真的让人掉头发,我写一些自己在开发中踩过的坑,以及自己的拙见,可以参考参考。但是写AS的话还是用SQLite,别用MySQL。
1.首先,我用的是真机来调试的程序,所以如果要用MySQL的话,必须要和电脑用一个局域网(例如,用电脑开热点)。
2.第二个是ip地址要用本机地址,可以网上查一查怎么搜自己电脑的ip地址,很简单,不能用localhost!!!
3.Connection 用java.sql.Connection。
4.获取连接的代码getConnection
public class JDBCUtils {
private static final String TAG = "mysql-test-JDBCUtils";
private static String driver = "com.mysql.jdbc.Driver";// MySql驱动
private static String dbName = "test";// 数据库名称
private static String user = "root";// 用户名
private static String password = "";// 密码
public static Connection getConn(){
Connection connection = null;
try{
Class.forName(driver);// 动态加载类
String ip = "172.0.0.1";// 写成本机地址,不能写成localhost,同时手机和电脑连接的网络必须是同一个!!!
// 尝试建立到给定数据库URL的连接
connection = DriverManager.getConnection("jdbc:mysql://" + ip + ":3306/" + dbName,
user, password);
}catch (Exception e){
e.printStackTrace();
}
return connection;
}
}
5.查询需要new Thread。
new Thread(new Runnable() {
@Override
public void run() {
try {
//加载jdbc驱动
Class.forName("com.mysql.jdbc.Driver");
java.sql.Connection cn= DriverManager.getConnection("jdbc:mysql://172.0.0.1:3306/test","root","");
String sql="select * from user";
//创建Statement对象
// Statement 对象用于将 SQL 语句发送到数据库中
Statement st=(Statement)cn.createStatement();
ResultSet rs=st.executeQuery(sql);
while(rs.next()){//读取数据
String name=rs.getString("userAccount");//可以通过列名获取对应的内容
String pass=rs.getString("userPassword");
Log.d("testActivity.this","用户名:" + name);//打印
Log.d("testActivity.this","密码:" + pass);
Log.d("testActivity.this","连接ok!");
}
//关闭相关连接
cn.close();
st.close();
rs.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}).start();
暂时想到这么多,后面想起来会再添加。。。