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.
    

    如果出现了以上错误,请检查下载是否正确。

  • 访问官网:https://dev.mysql.com/downloads/connector/j/

  • 点击右边的 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 国际」许可协议进行许可。

posted @   Yogile  阅读(1133)  评论(0编辑  收藏  举报
编辑推荐:
· .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语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示
more_horiz
keyboard_arrow_up dark_mode palette
选择主题