无法连接到 SQL 数据库(Java、Android Studio)
Posted
技术标签:
【中文标题】无法连接到 SQL 数据库(Java、Android Studio)【英文标题】:Can't connect to SQL Database (Java, Android Studio) 【发布时间】:2019-01-27 23:23:29 【问题描述】:我已经导入了JDBC库,设置为可编译,并赋予App上网权限。 当按下屏幕上的按钮时,它应该连接到数据库并为我提供要在列表中实现的值。
当我按下按钮时,我可以看到它给了我“连接到数据库”文本,但大约半秒后它显示最后一个 catch 块中定义的“异常”。
我在 onPostExecute 中注释掉了这三行代码,因为当我保留它们时,App 只会崩溃。
public void retrieveData(View view)
GetData retrieveData = new GetData();
retrieveData.execute();
private class GetData extends AsyncTask<String,String,String>
String msg = "";
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://" + DbStrings.DATABASE_URL + "/" + DbStrings.DATABASE_NAME;
@Override
protected void onPreExecute()
progress.setText("Connecting to database");
@Override
protected String doInBackground(String... strings)
Connection conn = null;
Statement stmt = null;
try
Class.forName(JDBC_DRIVER);
conn = DriverManager.getConnection(DB_URL, DbStrings.USERNAME, DbStrings.PASSWORD);
stmt = conn.createStatement();
String sql = "SELECT * FROM video"; //
ResultSet rs = stmt.executeQuery(sql);
while(rs.next())
String name = rs.getString("title");
buildNames += name + " ### ";
msg = "Process complete.";
rs.close();
conn.close();
stmt.close();
catch(SQLException connError)
msg = "An exception was thrown for JDBC.";
connError.printStackTrace();
catch (ClassNotFoundException e)
msg = "A Class not found exception was thrown.";
e.printStackTrace();
catch (java.sql.SQLException e)
msg = "Exception";
e.printStackTrace();
finally
try
if(stmt != null)
stmt.close();
catch (java.sql.SQLException e)
e.printStackTrace();
try
if(conn != null)
conn.close();
catch (java.sql.SQLException e)
e.printStackTrace();
return null;
@Override
protected void onPostExecute(String msg)
progress.setText(this.msg);
//names = buildNames.substring(0,buildNames.length()-5).split(" ### ");
//itemAdapter = new ItemAdapter(thisContext, buildNames.substring(0,buildNames.length()-5).split(" ### ")); //crashes
//namesList.setAdapter(itemAdapter);
【问题讨论】:
使用 Logcat 检查堆栈跟踪:***.com/q/23353173/115145。另外,请理解 JDBC 不是为在移动设备上使用而设计的,这也是 android 不支持 JDBC 的原因之一。 这是我发现的:java.sql.SQLException: Unknown initial character set index '192' 从服务器收到。可以通过“characterEncoding”属性强制初始客户端字符集。我在教程中看到了这个工作,所以它不应该阻止它工作 您真的不应该从 Android 应用程序直接连接到数据库。 为什么不呢?不安全吗?我应该怎么做? 【参考方案1】:检查堆栈跟踪后发现:
java.sql.SQLException: Unknown initial character set index '192' received from server.
所以我知道要搜索什么; 我使用的是过时的 JDBC (3.x) 版本。导入版本 5.1.46 后,它现在可以工作了:)。
【讨论】:
以上是关于无法连接到 SQL 数据库(Java、Android Studio)的主要内容,如果未能解决你的问题,请参考以下文章
似乎无法将 JDBC sql 服务器驱动程序连接到 java eclipse 项目
由于登录失败错误,无法连接到 SQL Server 数据库 [重复]