1

データベースのデータを表示および操作できるようにするプログラムを作成しています。見つけたチュートリアルに基づいて、次のコードを作成しました。

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: 列が sun.jdbc.odbc.JdbcOdbcResultSet.findColumn(JdbcOdbcResultSet.java:1849) で見つかりませんでした。 JavaApplication25.java:28) BUILD SUCCESSFUL (合計時間: 1 秒)

4

2 に答える 2

4

Object#toStringの表現を表示していますResultSet。代わりに、それをナビゲートする必要があります。

while (rs.next()) {
      String name = rs.getString("name");
      System.out.println(name);
      // display more fields, etc.
      ...
}

また、 SQL インジェクション攻撃PreparedStatementを防ぐためにを使用することも検討してください。

javadocを読む

于 2013-04-04T02:44:16.673 に答える
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);   
}
于 2013-04-04T02:44:33.993 に答える