软件实训Android开发中遇到的关于JDBC连接数据库的一些问题和解决问题的过程

版权声明:本文为博主原创文章,未经博主允许也可随意转载。 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.注意事项

  1. ResultSet不能在遍历前对它进行操作,意思就是必须要有rs.next(),你不能去判断rs是不是为空或者什么的;
  2. 表名不能和关键字或者保留字重复,比如我一开始有个订单表我给他起名order(order by冲突),还有个科目表我给他起名subject(关键字)…这样不好…起码要加个s吧。

猜你喜欢

转载自blog.csdn.net/qq_35619409/article/details/80956184