从 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的主要内容,如果未能解决你的问题,请参考以下文章

如何远程连接到db2数据库

连接到 db2 7.1 as400 的 jdbc 驱动程序

我需要从Oracle Apex连接到DB2 AS / 400数据库。

通过 SQOOP 连接到 DB2 时出现连接管理器错误

无法使用带有 securityMechanism=13 的 DataGrip 连接到 DB2

DB2数据库显示未启动,但是可以连接到