我正在创建一个程序,允许显示和操作数据库中的数据。我根据我发现的教程编写了以下代码:
public class JavaApplication25 {
public static void main(String[] args) {
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = "jdbc:odbc:*****";
Connection conn = DriverManager.getConnection(url, "****", "****");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM dbo.Patients");
System.out.println(rs);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
这是代码的输出:
run:
sun.jdbc.odbc.JdbcOdbcResultSet@1cda59b
BUILD SUCCESSFUL (total time: 1 second)
我的问题是为什么程序不会显示我的SQL Server数据库中的数据?谁能告诉我如何显示它?
我将其重新编码为:
import java.sql.*;
public class JavaApplication25 {
public static void main(String[] args) {
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = "jdbc:odbc:OJT_dsn";
String user = "sa";
String pass = "";
Connection connection = DriverManager.getConnection(url, user, pass);
Statement statement = connection.createStatement();
String sql = "SELECT pIDNo,pLName,pFName,pMI,pSex,pStatus FROM dbo.Patients";
ResultSet result = statement.executeQuery(sql);
while(result.next()){
int ID = result.getInt("ID");
String Lname = result.getString("Lname");
String Fname = result.getString("Fname");
String MI = result.getString("MI");
String Sex = result.getString("Sex");
String Status = result.getString("Status");
System.out.println(ID);
System.out.println(Lname);
System.out.println(Fname);
System.out.println(MI);
System.out.println(Sex);
System.out.println(Status);
}
result.close();
statement.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
}
我的编码有什么问题?现在我收到了这个错误:
java.sql.SQLException:找不到列 at sun.jdbc.odbc.JdbcOdbcResultSet.findColumn(JdbcOdbcResultSet.java:1849) at sun.jdbc.odbc.JdbcOdbcResultSet.getInt(JdbcOdbcResultSet.java:600) 在javaapplication25.JavaApplication25.main(JavaApplication25.java:28) 建立成功(总时间:1秒)
答案 0 :(得分:4)
您正在显示Object#toString
的{{1}}代表。您需要在其中导航。
ResultSet
另请考虑使用while (rs.next()) {
String name = rs.getString("name");
System.out.println(name);
// display more fields, etc.
...
}
来防范SQL Injection攻击。
答案 1 :(得分:0)
尝试使用
System.out.println(rs.getString("DATA"));
System.out.println(rs);
只打印ResultSet
对象。您需要使用ResultSet#getString(String columnLabel)方法获取列以获取列详细信息。不要忘记使用rs.next()方法导航结果集。
修改强> 的 对于你的情况
while (rs.next()) {
// Read the values
int pIDno = rs.getInt("pIDno");
String pFName = rs.getString("pFName");
String pLName = rs.getString("pLName");
// Print the values
System.out.println(name);
System.out.println(pFName);
System.out.println(pLName);
}