开发者

java.sql.SQLSyntaxErrorException: ORA-01747

Searched through the entire site but nothing helped at all so I decided to open up a new topic. Here's my problem: I'm developing a simple GUI in java which uses JDBC behind the back. Here are some 开发者_StackOverflowheadlines: - I established a successful database connection, - I can run SELECT statements and fetch data within my code. But the problem is that when I use an INSERT statement, It gives the error below which has a description like "java.sql.SQLSyntaxErrorException: ORA-01747 invalid username.tablename.columnname or tablename.columnname etc..." I'm digging the web for 2 days but I couldn't come up with a solution to my need. Above is my code showing how I implemented the INSERT:

String query = "INSERT INTO DQMP.DQ_USER("
                                + " USER_ID,"
                                + " USER_SHORTNAME,"
                                + " USER_NAME,"
                                + " GSM1,"
                                + " E_MAIL,"
                                + " DEPARTMENT_ID,"
                                + ") VALUES(?, ?, ?, ?, ?, ?)";                             

                PreparedStatement st = conn.prepareStatement(query);

                      st.setString(1, "user_id_seq.nextval");
                      st.setString(2, str1);
                      st.setString(3, str2);
                      st.setLong(4, lng);
                      st.setString(5, str4);
                      st.setInt(6, 1);

                      st.executeUpdate();
                      System.out.println("Insertion successful");
                      st.close();           

Here's my DESC DQ_USER:

TABLE DQ_USER
 Name                                      Null?    Type                        
 ----------------------------------------- -------- ----------------------------
 USER_ID                                   NOT NULL NUMBER                      
 USER_SHORTNAME                                     VARCHAR2(30)                
 USER_NAME                                          VARCHAR2(128)               
 GSM1                                               VARCHAR2(30)                
 E_MAIL                                             VARCHAR2(512)               
 DEPARTMENT_ID                             NOT NULL NUMBER

Any help would be appreciated.

Here's my code with latest changes:

Statement st = conn.createStatement();
                    String query = "SELECT USER_ID_SEQ.NEXTVAL FROM DUAL;";
                    ResultSet rs = st.executeQuery(query);
                    int seq = 0;
                    while(rs.next()){
                         seq = rs.getInt("USER_ID_SEQ");
                         System.out.println(seq);
                    }

                    CallableStatement stmt = conn.prepareCall("{call PKDQ_CONTROL_MNG.ADD_USER (?, ?, ?, ?, ?, ?)}");

                    stmt.setInt(1, seq);
                    stmt.setString(2, str1);
                    stmt.setString(3, str2);
                    stmt.setInt(4, int1);
                    stmt.setString(5, str4);
                    stmt.setString(6, "1");

                    stmt.executeUpdate();
                    stmt.close();


You have a trailing comma in your insert statement. Remove it.

+ " DEPARTMENT_ID," // <-- Here is the trailing comma
+ ") VALUES(?, ?, ?, ?, ?, ?)";

Also, I guess that the USER_ID is of type NUMBER, and you try to store the String "user_id_seq.nextval" in this column.

If you want to insert the next value of a sequence, you must first issue a SQL query which selects the sequence next value, extract the number returned by this query, ans set it in your insert statement using setInteger or setLong.

Or you can just use the following query :

"INSERT INTO DQMP.DQ_USER(user_id_seq.nextval, 
+ " USER_SHORTNAME,"
+ ...
+ ") VALUES(?, ?, ?, ?, ?)"; // only 5 parameters


I don't know if that's it, but your INSERT statement will end up looking like INSERT INTO ... DEPARTMENT_ID,) VALUES(....

You've got a stray , after DEPARTMENT_ID.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜