首页 > 解决方案 > 从 Android 应用程序连接到 MariaDB

问题描述

免责声明:我知道人们通常不会这样做,出于成本原因,我使用 SQL 数据库,而且我对编程也比较陌生。

我正在尝试从我的 Android Studio 应用程序将 SQL 脚本发送到我的 MariaDB 数据库。我目前正在为 MariaDB 实现 Java 数据库连接 (JDBC) 驱动程序,但是我不确定我需要包含什么。

我访问了 JDBC MariaDB 驱动程序的下载网站,但是我可以选择下载许多 jar 文件。你怎么知道你需要哪一个,你怎么知道如何安装它/在哪里为 Android 安装?( https://downloads.mariadb.org/connector-java/2.3.0/ )

请注意,我的 Java 代码如下,我收到错误消息“找不到适合的驱动程序....”:

@Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
        if(result != null){
            if(result.getContents() == null) {
                Toast.makeText(this, "You cancelled the scanning", Toast.LENGTH_LONG).show();
            }
            else {
                // Toast.makeText(this, result.getContents(), Toast.LENGTH_LONG).show();
                String host = "jdbc:mariadb://HOST:PORT/DBNAME";
                String username = "UNAME";
                String password ="PWD";
                try {
                    Connection con = DriverManager.getConnection( host, username, password );
                    Toast.makeText(this, result.getContents() + " - Success!", Toast.LENGTH_LONG).show();
                } catch (Exception err) {
                    Toast.makeText(this, err.getMessage(), Toast.LENGTH_LONG).show();

                }

            }
        }
        else {
            super.onActivityResult(requestCode, resultCode, data);
        }

    }

标签: android-studiojdbcmariadbmariadb-connect-enginemariadb-connector-c

解决方案


您需要确保使用正确的驱动程序(连接器)。下载它,然后将其导入 Android Studio(libs 文件夹),然后将以下内容添加到您的应用构建 gradle:

implementation files('libs/mariadb-java-client-1.8.0.jar')

这是我使用的连接器/J(V1.8.0)......较新的似乎不兼容。示例代码:

// Create a connection 
val myConn = DriverManager.getConnection("jdbc:mariadb://localhost:3306/DB?user=username&password=myPassword")
Class.forName("org.mariadb.jdbc.Driver")  // Initialize it

// Now you create SQL statements
val sql01 : PreparedStatement? = (myConn!!.prepareStatement(getString(R.string.sql01)))

// Submit the query
reset = sql01.executeQuery()

推荐阅读