• 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/=====================================: 连接数据库成功
      
  • 相关阅读:
    java:输出流程printStream
    phalcon 连接多个数据库 phalcon multi-database
    Selenium Webdriver元素定位的八种常用方法
    adb push ,adb pull和adb install的区别
    Java将数据写进excel
    Java接口和抽象类的区别
    深入理解Java的接口和抽象类
    Java内存解析 程序的执行过程
    bit,byte,char,位,字节,字符 的区别
    java static成员变量方法和非static成员变量方法的区别 ( 二 )
  • 原文地址:https://www.cnblogs.com/Yogile/p/13262882.html
Copyright © 2020-2023  润新知