zoukankan      html  css  js  c++  java
  • 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/=====================================: 连接数据库成功
      
  • 相关阅读:
    c# WinForm开发 DataGridView控件的各种操作总结(单元格操作,属性设置)
    linux服务之rsyslog
    java实现第五届蓝桥杯李白打酒
    java实现第五届蓝桥杯李白打酒
    java实现第五届蓝桥杯猜字母
    java实现第五届蓝桥杯猜字母
    java实现第五届蓝桥杯大衍数列
    java实现第五届蓝桥杯大衍数列
    redis 安装启动及设置密码<windows>
    redis密码设置、访问权限控制等安全设置
  • 原文地址:https://www.cnblogs.com/Yogile/p/13262882.html
Copyright © 2011-2022 走看看