【问题标题】:Android Studio access MYSQL with JDBCAndroid Studio 使用 JDBC 访问 MYSQL
【发布时间】:2015-07-17 10:07:16
【问题描述】:

我一直在尝试使用 JDBC 连接到 MYSQL 一段时间,但没有成功。 我已经设置了我的数据库,其中包含一些信息,并且我在 libs 文件夹中添加了 mysql-connector-java-5.1.35-bin 库。访问 Internet 和网络的权限也添加到清单中。我在 Windows 7 中运行 Android Studio。到目前为止运行它后没有语法错误,但在我的模拟器中,我收到以下消息:

测试错误:java.sql.SQLException:Access Denied for user 'root'@'192.168.56.101'(使用密码:NO)

我工作的哪一部分是错的?!我在下面附上了我的代码。

public class MainActivity extends Activity {
 //private static final String url = "jdbc:mysql://<server>:<port>/<database>";
    public static final String LISTEN_ACTIVITY = "listenActivity";


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        testDB();
    }

    public void testDB() {

        TextView tv = (TextView)this.findViewById(R.id.txtv);

        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            Log.i("Android", " MySQL Connection ok");
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/k_sql1", "root", "");
 //         System.out.println("Database connection success");
          Log.d("Android2","Line 2");
            String result = ("");
            Log.d("Android3", " Line 3");
            Statement st = con.createStatement();

            ResultSet rs = st.executeQuery("select * from kpeople");

            ResultSetMetaData rsmd = rs.getMetaData();

            while (rs.next()) {
                result += rsmd.getColumnName(1) + ": " + rs.getInt(1) + "\n";
                result += rsmd.getColumnName(2) + ": " + rs.getString(2) + "\n";
                result += rsmd.getColumnName(3) + ": " + rs.getString(3) + "\n";
            }

            tv.setText(result);

        } catch (Exception e) {
            e.printStackTrace();
            tv.setText("Test Error:"+e.toString());
            Log.w("Android-system","system get connection");
        }
    }
 }

由于这里有很多专家,请帮助解决问题。谢谢各位。

【问题讨论】:

  • 为什么要直接连接MYSQL?始终使用 Web 服务从数据库中获取数据。任何人都可以反编译应用程序并查看您的 mysql 用户名/密码。
  • 我需要为我的学校项目做这件事,但坚持下去。请给我一个解决方案。 tnx

标签: android mysql jdbc


【解决方案1】:

这不是客户的错。 你的安卓设备 ip 是 192.168.56.101。 MySQL 服务器 root 账户默认可以通过 localhost 访问。 您应该更改 root 访问权限或在 MySQL 中创建另一个帐户。

【讨论】:

  • 如何更改root,我是初学者,您可以逐步解释一下。 tnx.
  • 可以下载MySQL workbench配置用户。
  • 我真的不想配置用户,我的问题是在android app、JDBC驱动和​​mysql之间建立通信。
【解决方案2】:

实际上有两个问题,一个来自 MYSQL 权限中的权限不允许我访问数据库,另一个问题是编码。 String result = (""); 的存在在我的编码中是没有意义的,通过从代码连接中删除它没有问题。这里会出现的问题是如何使我的编码具有自动更新,这意味着通过将任何新数据输入我的数据库,它也会自动出现在我的应用程序中,任何关于自动更新的想法......

【讨论】:

    【解决方案3】:

    在您的 MySQL 中,为应用程序创建一个用户,范围为“%”,例如

    CREATE USER 'androidapp'@'%' IDENTIFIED BY 'password';

    这意味着它可以从任何地方'%'登录,如果你只使用'localhost'它可以o

    【讨论】:

      猜你喜欢
      • 2018-08-19
      • 1970-01-01
      • 2016-12-29
      • 2019-01-18
      • 2016-11-28
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      相关资源
      最近更新 更多