版权声明:本文为博主原创文章,未经博主允许也可随意转载。 https://blog.csdn.net/qq_35619409/article/details/80956184
首先:Android软件开发访问数据库标准的做法是通过服务器(比如java-web的servlet),我们软件实训没必要那么复杂,能实现对数据库的增删改查就可以
内容有
- JDBC的使用方法
- JDBC初次尝试报错【com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure】
- 注意事项
1. 使用方法
和普通的java代码一模一样,先添加相应的驱动包
导入驱动包,我的最低兼容是5.1( L),mysql-connector8.X的基本都是7.0(N),最后用了5.1.1搞定的
安卓加载/下载mysql的驱动:
- 方法一
- builder.gradle(Module.app)中添加
implementation 'mysql:mysql-connector-java:5.1.1'
- 方法二
- File->Project Structure->Modules下的app->Dependencies->点击该窗口最右边最上面的“+”,弹出窗口在线搜索,但是好像只提供最新的版本。
- 方法三
-
Android Studio官方默认的驱动下载地址
下好放入lib文件夹,然后右键add in buildpath什么的
然后,我自己是这样记的
CCSSR
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://ip:port/sqlname",
name,pwd);
String sql="select * from users";
PreparedStatement psmt = con.prepareStatement(sql);//Statement
ResultSet rs = psmt.executeQuary();//int result
不多说,学过的都知道,记这个主要应付校招那些面试题
2.初次连接出现错误
其实Communications link failure这个错误不管你数据库什么地方出错几乎都能看见它,第一次还以为真是连接出问题,调试了半天网络…后来发现是sql语句少个括号…
顺便一提,如果你在程序里面写sql,就不要加分号,在程序里面编译器会把分号当做sql本身的一部分,所以会报错。
所以,这个错误可能是连接那个语句有问题,可能是sql语句有问题,也有可能驱动等有问题。
一般调试都是模拟器调试,AS自带的AVD实在是卡,自带google全家桶这个不做评论,没有中文输入法也就算了,关键调试的时候经常卡成PPT,开机,关机都比任何一家安卓模拟器慢,但是…远程桌面只有它能用(不想天天背着大笔记本去机房,不得不下啊),唉,生命是残酷的。
扯远了,重点是模拟器调试的时候数据库的ip地址不能写成localhost或者127这样的地址,这些地址是android自己的IP,可以填运行cmd查看到的本机ip。
3.注意事项
- ResultSet不能在遍历前对它进行操作,意思就是必须要有rs.next(),你不能去判断rs是不是为空或者什么的;
- 表名不能和关键字或者保留字重复,比如我一开始有个订单表我给他起名order(order by冲突),还有个科目表我给他起名subject(关键字)…这样不好…起码要加个s吧。