5

私が達成したいのは、SQL ステートメントを記述して結果を検証できるようにすることです。SQL ステートメントには、次のような変数が含まれます。

String sql = "Select  zoneid from zone where zonename = myZoneName";

myZoneName は count + から生成されます

注: 私は Apache POI を使用して Excel スプレッドシートを解析しています。

コードは次のとおりです。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

import org.apache.log4j.Logger;
import org.junit.Test;

public class VerifyDBSingleDomain {

    static Logger log = Logger.getLogger(VerifyDBSingleDomain.class.getName());

    String url = "jdbc:oracle:thin:@a.b.c.d:1521:mname";

    @Test
    public void VerifyDBSingleDomainTest() throws SQLException {

        Properties props = new Properties();
        props.setProperty("user", "user");
        props.setProperty("password", "password");

        String sql = "Select  zoneid from zone where zonename = 99224356787.tv";
        //String sql = "Select * from zone";

        Connection conn;
        //try {
            conn = DriverManager.getConnection(url, props);
            PreparedStatement preStatement = conn.prepareStatement(sql);
            ResultSet result = preStatement.executeQuery();
            System.out.println(result);

            /*while (result.next()) {
                System.out.println(result.toString());
            }
        } catch (SQLException e) {

            e.printStackTrace();
        }*/

    //  }
    //}

    }
}

そして私はエラーが発生します:

java.sql.SQLException: ORA-00933: SQL command not properly ended
4

2 に答える 2

6

がテキスト型であるとWHERE仮定して、句で一重引用符を使用する必要があります。myZoneName

String sql = "Select zoneid from zone where zonename = '99224356787.tv'";

zoneid以下を使用して、INTEGER タイプであると仮定して表示します。

while (result.next()) { 
   System.out.println(result.getInt("zoneid");
}
于 2012-09-24T23:23:37.850 に答える
0

myZoneName が Varchar 型の場合、このように引用符で囲む必要があります

        String sql = "Select  zoneid from zone where zonename = '99224356787.tv'";

テーブルの内容を取得するには:

ResultSet result = preStatement.executeQuery();
        System.out.println(result);

        while (result.next()) {
            System.out.println(result.getInt("zoneid")); // if zoneid is int in the db table
        }

詳細については、 Java resultSet APIを参照してください :)

于 2012-09-24T23:43:10.693 に答える