我知道之前有一些话题讨论了这个问题,但我几乎没有尝试所有的解决方案,我知道有些人不建议使用JDBC来处理android中的DB但是我的大学项目的目的我需要使用它。
我有一个由Hostgator托管的数据库,我确信我正在使用的信息(主机名,用户和通过),因为我尝试使用其他Java IDE并且它们工作得很好,所以没有我的电脑没有阻止了。我将Mysql J连接器添加到Android Studio作为库,尝试了2个版本的最新版本和3.0.17,但没有运气,我不知道我做错了什么因为logcat中没有错误或异常的出现者。
这是代码包含与DB的连接:( P.S.I删除了异常语句以缩短代码)
protected Void doInBackground(Void... params) {
Connection start;
//尝试了localhost它无法正常工作
String url = "jdbc:mysql://xxx.xxx.xxx.xxx:3306/abed_impresent";
String username = "abed_bayoun";
String pass = "xxxxx";
Class.forName("com.mysql.jdbc.Driver").newInstance();
start = DriverManager.getConnection(url, username, pass);
Statement my;
if (start != null) {
test = new ArrayList<>();
my = start.createStatement();
ResultSet res = my.executeQuery("select code from Tutors");
while (res.next()) {
test.add(res.getString("code"));
}
for (int c = 0; test.size() > c; c++) {
if (text.getText().equals(test.get(c))) {
Intent i = new Intent(tStart.this, tChoose.class);
startActivity(i);
Toast.makeText(tStart.this, "test", Toast.LENGTH_LONG).show();
break;
} else continue;
}
}
return null;
if语句下的所有代码都被开始跳过,因为应用程序似乎无法连接到DB。
答案 0 :(得分:0)
强烈建议不要在android上使用jdbc驱动程序(至于我记得有一个jdbc版本适用于android)。而不是jdbc驱动程序考虑创建提供数据库内容的Web服务。
答案 1 :(得分:-1)
好的我知道我做错了什么,
我把这段代码放在一个单独的try-catch语句中
start = DriverManager.getConnection(url, username, pass);
以某种方式阻止其他代码获取start的值并将其作为空值处理。
我将其余的代码包含在同一个try-catch语句中,这对我来说很有用。
感谢大家的努力。