Linux プラットフォームで JDBC を使用するために、Oracle DB と Java アプリケーションを使用しようとしています。
ダウンロードしたojdbc6.jarおよびojdbc6dms.jar
Linux にSQLDeveloperをインストールしました。
SQLDeveloper で次の名前の接続を確立しました: Dummy
UserName : abc
Password : abc
DB Name : oracle
DB port : 8181
DB のテーブル名: usertable テーブルの列:ユーザー名、連絡先番号
テーブルには3 つのエントリが含まれています。
Java コード スニペットは次のとおりです。
package com.demo.oracleDB;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JC {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("-------- Oracle JDBC Connection Testing ------");
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
System.out.println("Where is your Oracle JDBC Driver?");
e.printStackTrace();
return;
}
System.out.println("Oracle JDBC Driver Registered!");
Connection connection = null;
try {
connection = DriverManager.getConnection(
"jdbc:oracle:thin:@IP:8181:oracle", "abc",
"abc");
PreparedStatement Pstmt=connection.prepareStatement("select * from abc.usertable");
ResultSet rst=null;
rst=Pstmt.executeQuery();
System.out.println("Before LOOP");
System.out.println("Row is " + rst.getRow());
System.out.println("Count is " + rst.getFetchSize());
while(rst.next())
{
System.out.println("Values from DB are " );
System.out.println("UserName " + rst.getString("username"));
System.out.println("Contact NUmber " + rst.getString("contactnumber"));
}
} catch (SQLException e) {
System.out.println("Connection Failed! Check output console");
e.printStackTrace();
return;
}
if (connection != null) {
System.out.println("You made it.");
} else {
System.out.println("Failed to make connection!");
}
}
}
Linux での出力は次のとおりです。
-------- Oracle JDBC Connection Testing ------
Oracle JDBC Driver Registered!
Before LOOP
Row is 0
Count is 10
カウントが 10 を示しているのに、なぜ ResultSet ループ内に入らないのかはわかりません。テーブルには 3 つのエントリしかありませんが、それでもカウントは 10 と表示されています。
クエリ文字列が正しいかどうか教えてください。
コンソールのテーブルからデータの印刷を開始するように動作させる方法を教えてください。