刚踩一个大坑,求个高人指点(已解决)
java出身,近期想做一些Android项目,就想先做个简单的crud小试牛刀,结果第一jio就踩坑了。
mysql用的8.0.27,jar包是官网Community配套下载的从Connector J 8.0.27,
安卓部署环境,工具用的AS,导入jar包正常,gradle正常
gradle添加java8依赖
compileOptions {sourceCompatibility JavaVersion.VERSION_1_8targetCompatibility JavaVersion.VERSION_1_8}
AndroidManifest添加网络权限
<uses-permission android:name="android.permission.INTERNET"/>
接下来就是测试链接了
mysql高版本Driver目录移动至"com.mysql.cj.jdbc.Driver"
private static final String TAG = "testsql----->";public static void mymysql(){String url = "jdbc:mysql://192.168.0.142:3306/test" +"?useUnicode=true" +"&characterEncoding=utf8" +"&useSSL=false" +"&serverTimezone=GMT" +"&rewriteBatchedStatements=true";String user = "root";String password = "123456";try{Class.forName("com.mysql.cj.jdbc.Driver");}catch(Exception e){Log.e(TAG, e.toString());}try {DriverManager.getConnection(url,user, password);Log.e(TAG, "已过");}catch(Exception e){Log.e(TAG, e.toString());}
测试链接写好之后直接开冲。结果直接给了当头一棒
2022-01-11 10:42:10.197 22381-22381/com.example.test E/testsql----->: java.sql.SQLNonTransientConnectionException: Could not create connection to database server.
然后开始各种百度方案,像检查防火墙,检查驱动和数据库版本是否匹配,检查驱动地址正确,增加ssl配置,增加时区参数,各种重启服务等,均无果。今天早上就想,为什么不能问问神奇的Java呢?说干就干,直接在eclipse开了一个java的test工程,导入同样的版本mysql-connector-java-8.0.27,写了同样的代码。
public Connection getConnection() throws SQLException {String driver = "com.mysql.cj.jdbc.Driver";String url = "jdbc:mysql://192.168.0.142:3306/test" +"?useUnicode=true" +"&characterEncoding=utf8" +"&useSSL=false" +"&serverTimezone=GMT" +"&rewriteBatchedStatements=true";String user = "root";String password = "123456";try {Class.forName(driver);} catch (ClassNotFoundException e) {e.printStackTrace();}return DriverManager.getConnection(url, user, password);}
结果更是当头一棒。
public static void main(String[] args) {try {System.out.println(DbUtil.getInstance().getConnection());} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
显示的结果竟然是
com.mysql.cj.jdbc.ConnectionImpl@59e84876
惊呆了,同样的jar包,同样的数据库,同样的url,nusername,password,在java工程就能连,在android工程就连不上,头发快掉光了也没查到有效的解决方案,希望大家帮帮小弟在编程的道路上能茁壮成长~
该问题已解决!
解决方案其实是java思路向Android思路的转变,在Android程序中有一条规则,就是任何拖慢主程序的程序都会被干掉。重新梳理了一遍丢出来的Exception,里面有一条
W/System.err: Caused by: java.net.SocketException: android.os.NetworkOnMainThreadException
如果大家也有相关问题可以仔细查看下是否也出现了这个异常,如果也有,则可以参考本文解决方案。
所以有关连接数据库的部分需要单开一个线程,修改后代码如下
public static void mymysql() {String url = "jdbc:mysql://192.168.0.142:3306/test"+ "?useUnicode=true"+ "&characterEncoding=utf8"+ "&autoReconnect=true"+ "&useSSL=false"+ "&serverTimezone=GMT";String user = "root";String password = "123456";new Thread(new Runnable() {@Overridepublic void run() {try {Class.forName("com.mysql.cj.jdbc.Driver");dbCon.conn = DriverManager.getConnection(url,user, password);String sql = "select * from testdb where 1=1 ";stmt = conn.prepareStatement(sql);rs = stmt.executeQuery();ResultSetMetaData rsmd = rs.getMetaData();int columnCount = rsmd.getColumnCount();while (rs.next()) {for (int i = 1; i <= columnCount; i++) {Log.e(rsmd.getColumnLabel(i)+"------------>", rs.getObject(i).toString());}}} catch (Exception e) {e.printStackTrace();}finally {dbCon.disconnect();}}}).start();}
效果显示
至此,mysql的连接查询已无问题,crud也就迎刃而解了,下一篇将会记录查询后的结果显示至Activity的TextView中。
刚踩一个大坑,求个高人指点(已解决)相关推荐
- netty报错:远程主机强迫关闭了一个现有的连接。(已解决)
昨天,java 集成netty服务的项目,在测试服务器上,发现了一个问题: 1.项目netty包版本:netty-all-5.0.0.Alpha1.jar. 2.问题的描述:服务器启动,各种通信正常, ...
- error: passing ‘const xxx’ as ‘this’ argument discards qualifiers c++primer 5th文本查询程序一个错误请各位指教(已解决)
文件main.cc 文件main.cc #include <string> #include <iostream> #include <memory> #inclu ...
- 引用了一个不可用的位置?已解决
windows下遇到不能删除的文件或目录,例如目录d:/abc,处理方法: dos提示符下, RMDIR D:/abc /S /Q 就可以删除(在命令窗口)
- java注解接收上传文件,前台:Input type=file 后台获取文件内容用的是spring注解,当地环境上传图片是好的,发布到服务器上图片读取不到,求大神指点...
当前位置:我的异常网» Java Web开发 » 前台:Input type="file" 后台获取文件内 前台:Input type="file" 后台获取文 ...
- 大学计算机高数如何学,计算机科学系如何学好大学数学,即高数,老师上课听不太懂,急啊,数列的极限就不怎么懂,跪求高人指点...
计算机科学系如何学好大学数学,即高数,老师上课听不太懂,急啊,数列的极限就不怎么懂,跪求高人指点以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我 ...
- c语言求近似值程序,c语言求pi的近似值_C语言求PI的近似值 求高人指点
问题补充: 题目只这样的: 本题要求编写程序,根据下式求\piπ的近似值,直到最后一项小于给定精度eps. PI/2=1+1/(1*3)+2!/(1*3*5)+3!/(1*3*5*7)+...+n!/ ...
- hive中insert插入一条记录报错,跪求高人指点!!!
问题描述: 在hive中创建数据库和数据表之后,进行insert操作报错. hive (myhive)> insert into stu values (1,"zhangsan&quo ...
- 计算机能辅修经济学吗,现在大二本科在读,计算机系,想考西安交大经济学研究生,但不知如何着手…请高人指点指点...
现在大二本科在读,计算机系,想考西安交大经济学研究生,但不知如何着手-请高人指点指点以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来 ...
- OMG!Semaphore里面居然有这么一个大坑!
作者 | why技术 来源 | why技术(ID:hello_hi_why) 荒腔走板 上周写了一篇文章,一不小心戳到了大家的爽点,其中一个转载我文章的大号,阅读量居然突破了 10w+,我也是受宠若惊 ...
最新文章
- R语言可视化包ggplot2绘制排序条形图实战:按照分类因子排序、按照数值排序
- Windows中报错:Fatal error in launcher: Unable to create process using ‘“‘ 的解决方案
- boost::describe模块宏BOOST_DESCRIBE_PP_NAME的测试程序
- Tomcat使用shutdown.bat关闭会将其他Tomcat关掉的问题
- 数据挖掘-贝叶斯定理
- java正确的代码_对文件名为Test.java的java代码描述正确的是()
- ruby array_在Ruby中使用Array.delete()和Array.delete_at()从Array中移除元素
- c++ 程序在内存中的分布
- Java中的时间和日期(下)
- 利用国内镜像加快pip下载速度和成功率
- Python 面向对象 —— 静态方法和类方法
- SQL中的树型编号处理
- 流计算技术实战 - CEP
- Mysql官网下载教程
- python饼状图显示其比例_Python学习笔记(matplotlib篇)--使用matplotlib绘制饼状图
- 龙芯电脑上配置LAMP环境
- 农历php,php 阴历-农历-转换类代码
- 以计算机作为类 触摸板作为接口,怎样用Arduinopromicro将电脑触控板转换为USB设备...
- 【原版教材•中英对照】电化学阻抗谱及其应用——一本专门针对研究生和电化学研究人员的书籍
- sqlite3设置密码 password
热门文章
- Quartus与ModelSim联合仿真启动ModelSim失败(已解决)
- 【已解决】Cause: jva.sql.SQLSyntaxErrorException:You have an error in your SQL sytax;check the nua that..
- 人脸识别的安全门禁系统设计
- 计算机服务怎么打开flash,windows无法启动flash helper service怎么办?
- Python神经网络编程(一)之神经网络如何工作
- android 人脸 sdk,Android 基于人脸识别 SDK使用总结
- Python语句判断能否构成三角形的完整语句
- Docker知识五:服务编排(Docker Compose概念)
- Ubuntu16 虚拟机全屏自适应
- 视频文件格式和视频编码方式的区别