安卓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相关(图片来源网络,侵删)

相关内容

热门资讯

必赢教程(GG扑克)德扑ai智... 必赢教程(GG扑克)德扑ai智能(软件透明挂)原来真的有挂(2023已更新)(哔哩哔哩);德扑ai智...
普及教程(WPK)红龙扑克好友... 普及教程(WPK)红龙扑克好友桌(软件透明挂)本来真的有挂(2023已更新)(百度贴吧)1、任何红龙...
玩家教你(wepower德州)... 玩家教你(wepower德州)微扑克有辅助(透视)一般真的有挂(2020已更新)(百度)运微扑克有辅...
黑科技教程(wepoker)微... 黑科技教程(wepoker)微扑克俱乐部(透视)好像真的有挂(2024已更新)(今日头条);微扑克俱...
新2024版(WPK)德州ai... 新2024版(WPK)德州ai辅助工具购买(辅助挂)果真真的有挂(2021已更新)(百度贴吧)亲,关...
揭秘几款"智星菠萝有... 揭秘几款"智星菠萝有挂!wepokerh5破解(其实真的是有挂)申智星菠萝有挂是一款一款智星菠萝有挂...
透视软件"德普之星私... 透视软件"德普之星私人局辅助器!wepoker插件下载(原来真的有挂);德普之星私人局辅助器是一款德...
避坑细节"wepok... 避坑细节"wepoker底牌透视!wepoker私人定制透视(其实真的是有挂);wepoker私人定...
必赢教程(wpk德州)外挂透明... 必赢教程(wpk德州)外挂透明挂辅助黑科技(德州wepower有外挂)的确是有挂的(有挂代打)1、德...
玩家必备攻略"wpk... 玩家必备攻略"wpk作弊是真的!wpk作弊(原来真的有挂);wpk作弊是真的是一种具有地方特色的,要...