有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

甲骨文java。sql。SQLException:ORA00933:SQL命令未正确结束

我想要完成的是能够编写SQL语句并验证结果。 SQL语句中包含变量,如:

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

其中myZoneName是从count+生成的

注意:我使用ApachePOI解析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

共 (2) 个答案

  1. # 1 楼答案

    如果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:)

  2. # 2 楼答案

    假设myZoneName是文本类型,则应在WHERE子句中使用单引号:

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

    使用以下命令显示zoneid,假设它是整数类型:

    while (result.next()) { 
       System.out.println(result.getInt("zoneid");
    }