从 Java 连接到 DB2
Posted
技术标签:
【中文标题】从 Java 连接到 DB2【英文标题】:Connect to DB2 from Java 【发布时间】:2014-07-08 17:06:10 【问题描述】:我正在尝试将 Java 程序连接到 IBM 的 DB2 数据库,这里是代码
Class.forName("com.ibm.db2.jcc.DB2Driver").newInstance();
Connection db2Conn = DriverManager.getConnection("jdbc:db2://localhost:50000/N","R","k");
Statement st=db2Conn.createStatement();
st.executeUpdate("INSERT INTO NTTP VALUES('MANOJ SAINI','iskcon110','Rajasthan','Male','july 2 2014','C')");
Statement st = db2Conn.createStatement();
出现语法错误
Type mismatch: cannot convert from java.sql.Statement to java.beans.Statement
st.executeUpdate()
的更多信息,作为此行的多个标记
- The method executeUpdate(String) is undefined for the type Statement
- Syntax error, insert ";" to complete Statement
- Syntax error, insert "AssignmentOperator Expression" to complete
Assignment
- MANOJ cannot be resolved to a variable
- Syntax error, insert ";" to complete Statement
- Syntax error, insert ")" to complete MethodInvocation.
我是 DB2 新手,不知道哪里出了问题。
【问题讨论】:
这不是你在源代码中的字面意思,是吗? SQL 中的引号将被转义。你必须有一个 import 声明指向顶部导入 java.beans.Statement。 粘贴代码时,请使用准确的源代码和收到的错误消息。对于您的问题,首先将导入更改为 java.sql.Statement,然后调试其余问题。 【参考方案1】:您的 SQL 语法可能在 SQL REPL 中有效,但在 Java 中这些不是有效的字符串 - 您还需要转义 \
,因为它是 Java 中的特殊字符,
java.sql.Statement st=db2Conn.createStatement();
st.executeUpdate(
"INSERT INTO NTTP VALUES('MANOJ SAINI','iskcon110',"
+ "'Rajasthan','Male','july 2,2014',"
+ "'C:\\Users\\Ramveer\\Documents\\res')");
另外,您应该考虑使用PreparedStatement
和绑定参数。
【讨论】:
【参考方案2】:首先,错误提示您尝试从 java.beans.Statement
导入 Statement 而不是 java.sql.Statement
,其次尝试使用 java.sql.PreparedStatement
而不是 java.sql.Statement
类似这样的:
String sql = "INSERT INTO student(student_id,student_name,class) VALUES(?,?,?)";
PreparedStatement statement = conn.prepareStatement(sql);
statement.setInt(1, 7);
statement.setString(2,"MANOJ SAINI");
statement.setString(3,"Rajasthan");
【讨论】:
以上是关于从 Java 连接到 DB2的主要内容,如果未能解决你的问题,请参考以下文章
我需要从Oracle Apex连接到DB2 AS / 400数据库。