当前位置: 首页 > 面试题库 >

JDBC插入错误

长孙兴德
2023-03-14
问题内容

我正在尝试使用jdbc将一些数据插入到我的数据库中。我正在使用正确的表,数据库名称和参数。一切检查完毕。

代码

public static void main(String[] args) throws IOException/*, ClassNotFoundException, SQLException*/ {
    DataInputStream d = new DataInputStream(System.in);
    System.out.println("Enter employee ID : ");

    @SuppressWarnings("deprecation")
    int empid = Integer.parseInt(d.readLine());

    System.out.println("Enter employee name : ");

    @SuppressWarnings("deprecation")
    String empname = d.readLine();

    System.out.println("Enter employee ID : ");
    @SuppressWarnings("deprecation")
    double empsalary = Double.parseDouble(d.readLine());

    try {
        Class.forName("com.mysql.jdbc.Driver");

    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }

    Connection con;
    try {
        con = DriverManager.getConnection("jdbc:mysql://localhost:3306/testDB","root","");
        PreparedStatement  pst = con.prepareStatement("insert into `employee` values(?,?,?");
        pst.setInt(1, empid);
        pst.setString(2, empname);
        pst.setDouble(3, empsalary);
        int rowcount = pst.executeUpdate();
        System.out.println(rowcount + " row has been instered");
    } catch (SQLException e) {

        e.printStackTrace();
    }

这是当我尝试运行它时给我的错误:

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3283)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1332)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1604)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1519)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1504)
at com.test.jdbcExample.main(jdbcExample.java:47)

问题答案:

您在此行中有语法错误:

PreparedStatement  pst = con.prepareStatement("insert into `employee` values(?,?,?");

您缺少values子句的右括号。



 类似资料:
  • 问题内容: 我现在正在使用批处理: 我只是想知道上面的代码是否等效于下面的代码。如果没有,哪个更快? 问题答案: 首先,使用查询字符串连接,不仅会丢失PreparedStatement方法固有的类型转换,而且还容易受到数据库中正在执行的恶意代码的攻击。 其次,PreparedStatement先前已缓存在数据库本身中,与纯语句相比,这已经带来了很好的性能改进。

  • 问题内容: 我尝试将序列.nextval作为主键插入表中,Java中的sql是 但是,错误是 其他所有字段都是正确的,我认为这是顺序问题,这是正确的吗? 问题答案: 问题在于第一列是数字数据类型,但是您准备的语句正在提交字符串/ VARCHAR数据类型。该语句按原样运行,Oracle没有机会转换对nextval的使用来获取序列值。 这是通过Java的PreparedStatement语法的替代方法

  • 我试图使用以下JDBC语句将一些值插入到来自Java的Oracle DB中: 序列创建如下: 我得到以下错误, 但当我尝试手动插入到表中时,它是成功的。 有什么问题?

  • 我在Java应用程序中使用JDBC来查询DBMS。该应用程序与Sql Server一起正常工作,但在一次插入过程中,我在DB2中遇到了这个错误: com.ibm.db2.jcc.am.SqlDataException: DB2 SQL Error: SQLCODE=-302, SQLSTATE=22001, SQLERRMC=1, DRIVER=3.63.75 使用<code>ResultSet进

  • 主要内容:所需步骤,示例代码在本教程将演示如何在JDBC应用程序中向数据库的一个表中插入数据记录。 在执行以下示例之前,请确保您已经准备好以下操作: 具有数据库管理员权限,以在给定模式中数据库表中插入数据记录。 要执行以下示例,需要用实际用户名和密码替换这里用户名()和密码()。 MySQL或数据库已启动并运行。 所需步骤 使用JDBC应用程序向表中插入数据记录需要以下步骤: 导入包:需要包含包含数据库编程所需的JDBC类的

  • 问题内容: 是否有一种跨数据库平台的方法来获取刚刚插入的记录的主键? 我注意到,这个答案表明您可以通过调用来获得它,而且我认为您可以调用jdbc中的数据库来实现此目的吗? 如果不是,您如何建议我为可以访问SQL Server,MySQL和Oracle中的任何代码的代码实现此功能? 问题答案: 从我的代码复制: 其中pInsertOid是准备好的语句。 然后您可以获取密钥: 希望这为您提供一个良好的