java关于jdbc的insert语句问题?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java关于jdbc的insert语句问题?相关的知识,希望对你有一定的参考价值。

public void test()
conn = jdbcnet.getConn();
try
prep1 = conn.prepareStatement("INSERT INTO `list` (`user`,`01`,`02`,`03`,`汪建华`,`方旖旎`,`吴金霞`,`李影`,`朱丹`,`王一婷`,`蔡佳慧`,`熊美玲`,`程梦瑶`,`王爱华`,`查小奇`,`程滟`,`程建蓉`,`高玲玲`,`蔡美珍`,`孙玉婷`,`陈丹`) VALUES ('kk',1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)");
prep1.executeUpdate();
prep1.close();
conn.close();
catch (Exception e)
e.printStackTrace();


请问我这样写有什么错,同样的sql直接在数据库里可以执行,但放在代码里总是报错
Unknown column '???' in 'field list'

参考技术A 你好,很高兴回答你的问题。
因为你代码中包含中文,在编译时因为编码不匹配,乱码了。
需要编译时指定编码,或者重设代码的编码。
如果有帮助到你,请点击采纳。
参考技术B Java jdbc编程中PreparedSatement类通过“? ”占位符完成预处理sql语句的参数预编译处理
语法如下:
1 sqllString = "insert into 表名 ( 字段名称1,字段名称2,字段名称3,...) values( ?,?,?...);"
2 实例化预处理对象
PreparedSatement pstmt = conn.prepareStatement(sqllString);
3 对占位符设置参数,序号从1开始
pstmt.setString(1, 第一个参数的值);

pstmt.setString(2, 第二个参数的值);
4 你的编程语句的插入语句的字段的值不能直接插入,只能填写?通过
对于的字段参数赋值方法完成
ps.setString(1,"user");
ps.setString(2,"01");
ps.setString(3,"02");
...

你明白了吗?
参考技术C


你肯定还没看java的异常捕获吧。

这个很简单,只要catch一下异常就行了。

插入失败是会报错的,你捕获这个错误,返回给你,即可。

示例代码:

  try  
     
     stat.executeUpdate(sql);
    
   catch (SQLException e)   
         out.println("<p style=\\"font-size:20px;color:red\\">"+"出错啦,请联系管理员!<br>"+"错误信息:"+e.toString()+""+"</p>");   
      





JDBC用函数执行INSERT语句

【中文标题】JDBC用函数执行INSERT语句【英文标题】:JDBC execute INSERT statement with a function 【发布时间】:2014-03-02 12:10:35 【问题描述】:

如何使用JDBC执行INSERT语句,该语句在VALUES子句中有用户定义的PL/SQL函数?

INSERT INTO table_name VALUES (plsql_func_name('?'),?,?,?);

应该使用prepareStatement() 还是callablestatement()

【问题讨论】:

您应该使用prepareStatement(),但不能将? 括在括号中。所以应该是VALUES (plsql_func_name(?),?,?,?) 而不是... plsql_func_name('?') ... 谢谢,我会试试的。 @a_horse_with_no_name 这应该是一个答案。 【参考方案1】:

参数周围的撇号是您的撤消。试试这个方法:

INSERT INTO table_name VALUES (plsql_func_name(?),?,?,?);

请记住,撇号由预处理语句处理,因为这是它的主要工作之一(因为它还必须防止潜在的 SQL 注入)。

【讨论】:

以上是关于java关于jdbc的insert语句问题?的主要内容,如果未能解决你的问题,请参考以下文章

关于 mybatis的问题

INSERT 语句上的 Spring JDBC NullPointerException [重复]

使用 Postgresql JDBC 时,将导致插入 0 行的 INSERT 语句

使用 JDBC 准备语句插入时出错

获取 mysql(innodb) AUTO_INCREMENT Column、JDBC/getGeneratedKeys()/last_insert_id (in OkPacket) 和 LAST_I

JDBC-根据ResultSet返回值生成Insert-Sql语句