【发布时间】: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