我正在开发一个连接到任何给定MSSQL数据库的Android应用程序。为了使其正常工作,我必须读取数据库元数据以获取其中的表名。我在开发开始时测试了它,它运行良好。这是有效的代码:
Class.forName("net.sourceforge.jtds.jdbc.Driver");
conn = DriverManager.getConnection(url, login, password);
DatabaseMetaData dbmd = conn.getMetaData();
String[] tables = {"TABLE"};
ResultSet rs = dbmd.getTables(null, null, "%", tables);
while (rs.next()) {
String tableName = rs.getString(3);
t.setText(t.getText()+" "+tableName+";");
}
conn.close();
正如我所说,它完美无缺,如果我取消它,它仍然可以在那个地方运作。后来,我在Connection类中做了类似的事情:
public ArrayList<String> getTableNames() throws SQLException {
ArrayList<String> namelist = new ArrayList<String>();
DatabaseMetaData dbmd = conn.getMetaData();
String[] tables = {"TABLES"};
ResultSet rs = dbmd.getTables(null, null, "%", tables);
while (rs.next()) {
String name = rs.getString(3);
namelist.add(name);
}
return namelist;
}
conn是Connection对象,它在类构造函数中以与上面相同的方式创建。
问题是它返回空列表,经过一些测试后我意识到它是因为ResultSet为空(rs.next()返回false)。我有点失落,因为它基本上和以前一样完成,只是它在课外工作,但不在里面。有什么想法吗?
答案 0 :(得分:0)
在您的第一个Code-Snippet中,您将“TABLE”作为参数放入 你把“TABLES”作为参数的第二个片段。
我认为你错了。