"ORA-00933: SQL command not properly ended" 这段代码异常
"ORA-00933: SQL command not properly ended" Exception in this piece of code
我正在尝试从 Java 连接到 Oracle 19c 数据库。连接完成并成功。
我在 SQL Develeper 中 运行 相同的查询并且它正在工作。但是我在 Java 中的准备语句和 executeQuery() 中遇到异常。请帮帮我。
Connection con=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
try{
//Loading Driver
Class.forName("oracle.jdbc.driver.OracleDriver");
//Loading Connection
con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521/orcl",dbUsername,dbPassword);
//Executing query;
System.out.println("Connection Established");
//Object to store result
items=new ArrayList<Object>();
queryString="SELECT * FROM HOMESQUAD WHERE EMP_MOBILE_NO='8308856606';";
System.out.println("Query: "+queryString);
if(queryString != null && !queryString.trim().equals("")) {
System.out.println("Into P Statement If Loop");
pstmt=con.prepareStatement(queryString);
System.out.println("StateMent Prepared: "+pstmt.toString());
rs=pstmt.executeQuery();
System.out.println("Query Executed");
while(rs!=null &&rs.next()) {
items.add(constructLoginProps(rs));
}
if(rs !=null) {
rs.close();
}
if(pstmt!=null) {
pstmt.close();
}
}
}
catch(Exception e) {
System.out.println("Exception Occured in aDBExecute:"+e.getMessage());
}
//constructLoginProps Function
private HomesquadEmployee constructLoginProps(ResultSet rs) {
HomesquadEmployee vo=new HomesquadEmployee();
try {
if(rs.getString("EMP_PASSWORD")!=null) {
vo.setEmpPassword(rs.getString("EMP_PASSWORD"));
}
if(rs.getString("EMP_ID")!=null) {
vo.setEmpId(rs.getString("EMP_ID"));
}
if(rs.getString("EMP_NAME")!=null) {
vo.setEmpName(rs.getString("EMP_NAME"));
}
if(rs.getString("EMP_MOBILE_NO")!=null) {
vo.setEmpMobileNo(rs.getString("EMP_MOBILE_NO"));
}
}
catch(Exception e) {
System.out.println("Exception Occured in buildLoginQuery: "+e.getMessage());
}
return(vo);
}
//HomesquadEmployee Class
public class HomesquadEmployee {
private String empId;
private String empName;
private String empMobileNo;
private String empPassword;
public HomesquadEmployee() {
}
public HomesquadEmployee(String empId, String empName, String empMobileNo, String empPassword) {
this.empId = empId;
this.empName = empName;
this.empMobileNo = empMobileNo;
this.empPassword = empPassword;
}
public String getEmpId() {
return empId;
}
public void setEmpId(String empId) {
this.empId = empId;
}
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
public String getEmpMobileNo() {
return empMobileNo;
}
public void setEmpMobileNo(String empMobileNo) {
this.empMobileNo = empMobileNo;
}
public String getEmpPassword() {
return empPassword;
}
public void setEmpPassword(String empPassword) {
this.empPassword = empPassword;
}
}
输出:
已建立连接
查询:SELECT * FROM HOMESQUAD_EMPLOYEE WHERE EMP_MOBILE_NO ='8308856606';
进入P语句If循环
已准备声明:oracle.jdbc.driver.OraclePreparedStatementWrapper@51aeb3e7
aDBExecute:ORA-00933 中发生异常:SQL 命令未正确结束
我在使用 oracle 数据库时遇到过这个问题,我通过简单地删除分号“;”解决了这个问题。从查询结束。
在你的情况下你应该改变这个
queryString="SELECT * FROM HOMESQUAD WHERE EMP_MOBILE_NO='8308856606';";
为了这
queryString="SELECT * FROM HOMESQUAD WHERE EMP_MOBILE_NO='8308856606'";
我正在尝试从 Java 连接到 Oracle 19c 数据库。连接完成并成功。 我在 SQL Develeper 中 运行 相同的查询并且它正在工作。但是我在 Java 中的准备语句和 executeQuery() 中遇到异常。请帮帮我。
Connection con=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
try{
//Loading Driver
Class.forName("oracle.jdbc.driver.OracleDriver");
//Loading Connection
con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521/orcl",dbUsername,dbPassword);
//Executing query;
System.out.println("Connection Established");
//Object to store result
items=new ArrayList<Object>();
queryString="SELECT * FROM HOMESQUAD WHERE EMP_MOBILE_NO='8308856606';";
System.out.println("Query: "+queryString);
if(queryString != null && !queryString.trim().equals("")) {
System.out.println("Into P Statement If Loop");
pstmt=con.prepareStatement(queryString);
System.out.println("StateMent Prepared: "+pstmt.toString());
rs=pstmt.executeQuery();
System.out.println("Query Executed");
while(rs!=null &&rs.next()) {
items.add(constructLoginProps(rs));
}
if(rs !=null) {
rs.close();
}
if(pstmt!=null) {
pstmt.close();
}
}
}
catch(Exception e) {
System.out.println("Exception Occured in aDBExecute:"+e.getMessage());
}
//constructLoginProps Function
private HomesquadEmployee constructLoginProps(ResultSet rs) {
HomesquadEmployee vo=new HomesquadEmployee();
try {
if(rs.getString("EMP_PASSWORD")!=null) {
vo.setEmpPassword(rs.getString("EMP_PASSWORD"));
}
if(rs.getString("EMP_ID")!=null) {
vo.setEmpId(rs.getString("EMP_ID"));
}
if(rs.getString("EMP_NAME")!=null) {
vo.setEmpName(rs.getString("EMP_NAME"));
}
if(rs.getString("EMP_MOBILE_NO")!=null) {
vo.setEmpMobileNo(rs.getString("EMP_MOBILE_NO"));
}
}
catch(Exception e) {
System.out.println("Exception Occured in buildLoginQuery: "+e.getMessage());
}
return(vo);
}
//HomesquadEmployee Class
public class HomesquadEmployee {
private String empId;
private String empName;
private String empMobileNo;
private String empPassword;
public HomesquadEmployee() {
}
public HomesquadEmployee(String empId, String empName, String empMobileNo, String empPassword) {
this.empId = empId;
this.empName = empName;
this.empMobileNo = empMobileNo;
this.empPassword = empPassword;
}
public String getEmpId() {
return empId;
}
public void setEmpId(String empId) {
this.empId = empId;
}
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
public String getEmpMobileNo() {
return empMobileNo;
}
public void setEmpMobileNo(String empMobileNo) {
this.empMobileNo = empMobileNo;
}
public String getEmpPassword() {
return empPassword;
}
public void setEmpPassword(String empPassword) {
this.empPassword = empPassword;
}
}
输出:
已建立连接
查询:SELECT * FROM HOMESQUAD_EMPLOYEE WHERE EMP_MOBILE_NO ='8308856606';
进入P语句If循环
已准备声明:oracle.jdbc.driver.OraclePreparedStatementWrapper@51aeb3e7
aDBExecute:ORA-00933 中发生异常:SQL 命令未正确结束
我在使用 oracle 数据库时遇到过这个问题,我通过简单地删除分号“;”解决了这个问题。从查询结束。
在你的情况下你应该改变这个
queryString="SELECT * FROM HOMESQUAD WHERE EMP_MOBILE_NO='8308856606';";
为了这
queryString="SELECT * FROM HOMESQUAD WHERE EMP_MOBILE_NO='8308856606'";