安卓mysql数据库查询_安卓界面及windows相关
创始人
2024-12-03 02:33:42
0
本文主要介绍了如何在安卓系统中使用MySQL数据库进行查询,并详细描述了相关的安卓界面设计和Windows系统的相关操作。

安卓界面

1、创建一个新的安卓项目,选择Empty Activity模板。

安卓mysql数据库查询_安卓界面及windows相关(图片来源网络,侵删)

2、在activity_main.xml文件中添加一个EditText用于输入SQL语句,一个Button用于执行查询,一个TextView用于显示查询结果。

            

3、在MainActivity.java文件中编写按钮点击事件,实现查询功能。

 package com.example.myapplication; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class MainActivity extends AppCompatActivity {     private EditText etSql;     private Button btnQuery;     private TextView tvResult;     private static final String DB_URL = "jdbc:mysql://localhost:3306/test"; // 数据库地址和端口号,根据实际情况修改     private static final String USER = "root"; // 数据库用户名,根据实际情况修改     private static final String PASSWORD = "123456"; // 数据库密码,根据实际情况修改     @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);         etSql = findViewById(R.id.et_sql);         btnQuery = findViewById(R.id.btn_query);         tvResult = findViewById(R.id.tv_result);         btnQuery.setOnClickListener(new View.OnClickListener() {             @Override             public void onClick(View v) {                 String sql = etSql.getText().toString(); // 获取输入的SQL语句                 try {                     Class.forName("com.mysql.jdbc.Driver"); // 加载驱动类                     Connection connection = DriverManager.getConnection(DB_URL, USER, PASSWORD); // 建立数据库连接                     Statement statement = connection.createStatement(); // 创建Statement对象,用于执行SQL语句                     ResultSet resultSet = statement.executeQuery(sql); // 执行查询,获取结果集                     StringBuilder result = new StringBuilder(); // 用于存储查询结果的字符串拼接器                     while (resultSet.next()) { // 遍历结果集,将每一行数据拼接到result中                         for (int i = 1; i <= resultSet.getMetaData().getColumnCount(); i++) { // 获取列数,从第1列开始拼接数据,因为第1列是表头,不需要拼接到结果中                             result.append(resultSet.getString(i)).append("\t"); // 拼接数据,用制表符分隔每个字段的值,最后一个字段后不添加制表符                         }                         result.append(""); // 每拼接完一行数据,添加一个换行符,方便查看结果                     }                     tvResult.setText(result.toString()); // 将查询结果显示在TextView中,关闭数据库连接和Statement对象(自动关闭)                 } catch (Exception e) { // 捕获异常,输出错误信息到Logcat中,方便调试问题所在位置和原因,避免程序崩溃或出现未知错误情况的发生,e是Throwable类型的变量,可以接收任何类型的异常信息,这里只打印了异常的堆栈信息,如果需要更详细的异常信息,可以使用e的getMessage()方法获取异常的具体描述信息,注意:不要使用e来处理异常,因为这样会丢失异常的详细信息,应该使用trycatch块来捕获异常并处理它,否则,如果出现异常,程序将无法正常执行下去,也要注意不要在catch块中使用throw关键字抛出新的异常,这样做会导致原来的异常被忽略掉,而且也无法得到正确的异常信息,最好的做法是在catch块中记录异常信息或者向上层调用者传递异常信息,如果需要重新抛出异常,可以使用RuntimeException包装一下原始的异常对象再抛出去,这样可以保留原始的异常信息,同时也不会影响程序的正常执行流程,如果需要向上层调用者传递异常信息,可以使用回调函数或者观察者模式来实现,这样可以避免在代码中直接使用trycatch块来处理异常的情况发生,同时也可以保证程序的稳定性和可靠性,另外需要注意的是:在使用trywithresources语句时,不需要显式地关闭资源对象,因为trywithresources语句会自动关闭实现了AutoCloseable接口的资源对象,如果没有实现该接口的资源对象需要手动关闭的话,可以在finally块中关闭它们,但是需要注意:finally块中的代码只有在try块中的代码执行成功时才会执行,如果try块中的代码出现了异常情况导致程序跳转到了catch块中执行的话,那么finally块中的代码就不会被执行了,最好的做法是将需要关闭的资源对象放在trywithresources语句中进行管理,这样可以避免忘记关闭资源对象而导致的问题发生,同时也可以简化代码结构,提高代码的可读性和可维护性,对于没有实现AutoCloseable接口的资源对象来说,可以使用tryfinally语句来确保它们能够被正确地关闭掉,InputStream is = null; try { is = new FileInputStream("file path"); ... } finally { if (is != null) { is.close(); } } } catch (Exception e) { LogUtils.e("MainActivity", e); } } catch (ClassNotFoundException e) { LogUtils.e("MainActivity", e); } } catch (SQLException e) { LogUtils.e("MainActivity", e); } } finally { try { if (connection != null) { connection.close(); } if (statement != null) { statement.close(); } } catch (SQLException e) { LogUtils.e("MainActivity", e); } } } finally { try { if (resultSet != null) { resultSet.close(); } } catch (SQLException e) { LogUtils.e("MainActivity", e); } } } finally { try { if (driver != null) { driverManager.registerDriver(driver); } } catch (SQLException e) { LogUtils.e("MainActivity", e); } } }}}


序号 安卓端操作/设置 Windows端操作/设置
1 数据库连接 使用 JDBC 驱动连接 MySQL 数据库 使用 Navicat 等 GUI 工具连接
2 创建数据库 使用 SQLiteOpenHelper 创建本地数据库 使用 MySQL 命令创建远程数据库
3 查询数据 使用 SQL 语句通过 JDBC 执行查询 在 Navicat 中编写查询或使用命令行
4 数据增删改 使用 ContentValues 和 SQL 语句 在 Navicat 中操作或使用命令行
5 开启远程连接 配置数据库和网络安全设置 修改 MySQL 配置文件并重启服务
... ... ... ...

以下是根据您提供的信息,补充完整的介绍内容:

序号 安卓端操作/设置 Windows端操作/设置
1 数据库连接 使用Class.forName("com.mysql.jdbc.Driver") 加载驱动,使用DriverManager.getConnection() 方法连接 在 Navicat 中配置服务器地址、端口、用户名和密码进行连接
2 创建数据库 通过继承SQLiteOpenHelper 类并在onCreate() 中编写创建表的 SQL 语句 使用 MySQL 命令如CREATE DATABASE 在命令行或 Navicat 中创建
3 查询数据 使用SQLiteDatabase.rawQuery()Cursor 进行查询 在 Navicat 中编写 SQL 查询或在命令行中使用SELECT 语句
4 数据增删改 通过ContentValuesSQLiteDatabase.insert(),update(),delete() 进行操作 使用 SQL 语句INSERT,UPDATE,DELETE 在命令行或 Navicat 中操作
5 开启MySQL的远程连接 配置数据库允许远程访问,使用正确的 IP 地址和端口号 修改 MySQL 配置文件my.cnf,添加bindaddress = 0.0.0.0,重启 MySQL 服务
6 数据库安全配置 在 AndroidManifest.xml 中配置网络权限 通过防火墙设置和 MySQL 用户权限管理进行安全配置

请注意,在实际开发中,出于性能和安全性考虑,通常不建议在 Android 应用程序中直接连接远程 MySQL 数据库,而是通过后端服务进行数据交互。

安卓mysql数据库查询_安卓界面及windows相关(图片来源网络,侵删)

相关内容

热门资讯

透视辅助!wpk安卓下载辅助,... 透视辅助!wpk安卓下载辅助,(WpK)真是存在有挂(透视)插件(有挂方法)1、wpk安卓下载辅助透...
透视好牌!xpoker辅助,德... 透视好牌!xpoker辅助,德州透视是真的假的,AA德州教程(有挂插件);1、不需要AI权限,帮助你...
透视挂透视!aapoker辅助... 透视挂透视!aapoker辅助器怎么用(透视)辅助(果然是真的有挂);1、上手简单,内置详细流程视频...
透视安装!德普之星app安卓版... 透视安装!德普之星app安卓版破解版, (德普之星)原来真的是有挂(透视)私人局辅助免费(有挂黑科技...
透视辅助工具!wepoker免... 透视辅助工具!wepoker免费辅助器,(wepoker)确实真的是有挂(透视)辅助器最新版本更新内...
5分钟教程!吉安麻将游戏辅助a... 5分钟教程!吉安麻将游戏辅助app(辅助挂)详细教程(切实真的是有挂)1、实时开挂更新:用户可以随时...
透视辅助!wpk真的有透视嘛,... 透视辅助!wpk真的有透视嘛,(wPK)果然是有挂(透视)模拟器(有挂技巧);wpk真的有透视嘛软件...
透视好牌!aapoker怎么设... 透视好牌!aapoker怎么设置提高好牌几率(透视)脚本(果然有挂)1、玩家可以在aapoker怎么...
透视教程!德州透视脚本,xpo... 透视教程!德州透视脚本,xpoker辅助,揭秘教程(有挂教程)1、金币登录送、破产送、升级送、活动送...
透视存在!德普之星透视辅助插件... 透视存在!德普之星透视辅助插件, (德扑之心)原来是有挂(透视)透视辅助软件下载(有挂教程);德普之...