Android 通过 JDBC 连接远程数据库
前言
本文简记 Windows 10 下 Android Studio 尝试使用 JDBC 连接数据库,在实际项目中不推荐使用。
权限
-
赋予网络请求权限。
于 AndroidManifest.xml 文件
<manifest>
内添加。复制
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
下载 jar 包
-
注意:如果下错了 jar 包,一般会报错:
复制
get PatchStore::createDisableExceptionQarthFile method fail.
如果出现了以上错误,请检查下载是否正确。
-
点击右边的
Looking for previous GA versions?
以访问下载包含 Windows 10 支持的 bin 的 jar 包的压缩包(发文时为 5.1.49)。 -
点击下方两个链接的任意一个下载。
-
这里将最新的和下载的历史的做一个对比:
可以看到最新的 8.0.19 不包含 Windows 10 支持的 bin 的 jar 包,所以将非 bin 的 jar 包导入时, Windows 10 下会报错。
导入 jar 包
-
将下载的历史的 5.1.49 的压缩包中的
mysql-connector-java-5.1.49-bin.jar
复制到 Android Studio 项目的libs
文件夹下。 -
点击 Android Studio 右上角的
Project Structure
图标,打开Project Structure
窗口。 -
点击 “Dependencies -> app -> + -> Jar Dependency” ,打开
Add Jar/Aar Dependency
窗口。 -
在
Step 1
项中,选择刚刚复制的 bin.jar 包,点击 “OK” 。 -
回到
Project Structure
窗口,点击 “OK” 。
代码
-
码云: LinkMariaDB.zip 。
-
JDBC 段:
复制
btn_login.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // 需在子线程中执行,否则报错 new Thread(new Runnable() { @Override public void run() { try { Log.d("=====================================", "Class.forName"); Class.forName("com.mysql.jdbc.Driver"); Log.d("=====================================", "java.sql.Connection"); // 使用你的数据库服务器IP地址,替换IP字母 // 还要替换你的账号、密码 java.sql.Connection cn= DriverManager.getConnection("jdbc:mysql://IP/test","账号","密码"); Log.d("=====================================", "sql"); String sql="select username from login"; Statement st = cn.createStatement(); ResultSet rs = st.executeQuery(sql); Log.d("=====================================", "while(rs.next())"); while(rs.next()){ String mybook=rs.getString("username"); System.out.println(mybook); Log.i("Mainactivity",mybook); } cn.close(); st.close(); rs.close(); Log.d("=====================================", "连接数据库成功"); } catch (ClassNotFoundException e) { Log.d("=====================================", "连接数据库失败"); e.printStackTrace(); } catch (SQLException e) { Log.d("=====================================", "sql语句执行失败"); e.printStackTrace(); } } }).start(); } });
-
结果:
复制
2020-07-07 20:05:11.214 8203-8260/com.yogile.linkmariadb D/=====================================: Class.forName 2020-07-07 20:05:11.239 8203-8260/com.yogile.linkmariadb D/=====================================: java.sql.Connection 2020-07-07 20:05:11.713 8203-8260/com.yogile.linkmariadb W/System.err: Tue Jul 07 12:05:11 GMT 2020 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification. 2020-07-07 20:05:11.719 8203-8260/com.yogile.linkmariadb D/NetworkSecurityConfig: No Network Security Config specified, using platform default 2020-07-07 20:05:12.115 8203-8260/com.yogile.linkmariadb D/=====================================: sql 2020-07-07 20:05:12.175 8203-8260/com.yogile.linkmariadb D/=====================================: while(rs.next()) 2020-07-07 20:05:12.176 8203-8260/com.yogile.linkmariadb I/System.out: yogile 2020-07-07 20:05:12.176 8203-8260/com.yogile.linkmariadb I/Mainactivity: yogile 2020-07-07 20:05:12.178 8203-8260/com.yogile.linkmariadb D/=====================================: 连接数据库成功
作者:Yogile
出处:https://www.cnblogs.com/Yogile/p/13262882.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构