使用的5.1的mysql-connector-java,4.1, 5.0, 5.1, 5.5, 5.6, 5.7的mysql都可以使用。
读懂代码了也可以自己配置mysql-connector-java,连接其他版本的mysql。
参考文章:https://blog.csdn.net/qq_40719095/article/details/105954654?spm=1001.2014.3001.5502
app界面:
主要代码:
线程:
thread=new Thread(new Runnable() {
String dbname=et_databases.getText().toString();
String order=editText.getText().toString();
@Override
public void run() {
try{
List<HashMap<String,Object>> list1=new ArrayList<HashMap<String, Object>>();
list1=DBUtiles.getinfo(dbname,order);
Log.d(TAG, list1.toString());
// 以下这些也可以new一个新的线程执行,我这里是做成添加了立刻刷新列表的效果所以添加完数据立刻获取list并通过message发送出去再添加到适配器中
// 将从数据库拿到的list1对象传给message再由handler传出,再在Handler中处理,可进行更新UI
Message message=Message.obtain();
message.what=1;
message.obj=list1;
handler.sendMessage(message);
} catch (Exception e1) {
e1.printStackTrace();
MainActivity.this.runOnUiThread(new Runnable() {
public void run() {
Toast toast;
if(e1.toString().startsWith("com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException")) {
String str1=e1.toString().substring(e1.toString().indexOf(":")+1);
toast = Toast.makeText(MainActivity.this, str1, Toast.LENGTH_LONG);
}
else{
toast = Toast.makeText(MainActivity.this, "数据库信息有误,连接失败!", Toast.LENGTH_LONG);
}
toast.show();
}
});
}
}
});
thread.start();
工具类DBUtiles:
public static List<HashMap<String,Object>> getinfo(String dbname,String order) throws Exception {
// 先定义一个List<HashMap<String,Object>>类型的数据并实例化
List<HashMap<String,Object>> list=new ArrayList<HashMap<String, Object>>();
Connection conn=getConnection(dbname);
// 由conn对象创建执行sql语句的对象(Statement类型),调用方法createStatement()
Statement sta=conn.createStatement();
String sql=order;
sta.execute(sql);
// 定义sql语句
sql="select * from mysql ";
// 调用Statement对象执行sql语句,返回结果result是ResultSet类型,就是结果集,具体百度
ResultSet result=sta.executeQuery(sql);
// 判断一下是否为空
if (result==null){
return null;
}
// 条件是当结果集是否有下一行,这是一个相当于指针的东西,第一次调用时会把第一行设置为当前行,第二次回吧第二行设置为当前行,以此类推,直到没有下一行,循环结束
int i = result.getMetaData().getColumnCount();
while (result.next()) {
// 每次循环都会新实例化一个HashMap对象,用于将遍历到的数据填进去
HashMap<String,Object> map=new HashMap<>();
String a = result.getString(1);
for(int m=2;m<=i;m++) {
a =a+result.getString(m) + " " ;
}
map.put("name",a);
// 每次循环完就添加到list中,最终list的样子是:[{name=xx},{name=aaa},.......]
list.add(map);
}
return list;
}
1.输入服务器的ip,port(默认3306,可以改),user,password,databases。就可以登入数据库运行输入的指令了
2.本来想做成增删改查所有功能的,但要适应不同的表格太麻烦了,所以做成了指令形式的。
相当于手机用mysql指令操控电脑mysql。
3.指令错误会返回报错。