gpt4 book ai didi

java.sql.SQLSyntaxErrorException : ORA-01747

转载 作者:行者123 更新时间:2023-12-01 07:39:08 30 4
gpt4 key购买 nike

搜索了整个网站,但没有任何帮助,所以我决定打开一个新主题。这是我的问题:我正在用 java 开发一个简单的 GUI,它在后面使用 JDBC。以下是一些标题:- 我建立了成功的数据库连接,- 我可以运行 SELECT 语句并在我的代码中获取数据。但问题是,当我使用 INSERT 语句时,它给出了下面的错误,其描述如下:“java.sql.SQLSyntaxErrorException:ORA-01747无效的用户名.表名.列名或表名.列名等...”我在网上挖掘了两天,但无法找到满足我需求的解决方案。上面是我的代码,显示了我如何实现 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();

这是我的 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

如有任何帮助,我们将不胜感激。

这是我的最新更改的代码:

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();

最佳答案

插入语句中有一个尾随逗号。删除它。

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

此外,我猜测 USER_ID 的类型为 NUMBER,并且您尝试在此列中存储字符串“user_id_seq.nextval”。

如果要插入序列的下一个值,则必须首先发出一个 SQL 查询来选择序列的下一个值,提取此查询返回的数字,然后使用 setIntegersetInteger< 在插入语句中设置它setLong

或者您可以只使用以下查询:

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

关于java.sql.SQLSyntaxErrorException : ORA-01747,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7712888/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com