用JDBC向MySQL插入一条数据

原先的做法:jsp页面传递参数username,userzhuanye,userxingbie

//增加方法
public void dbZengJia(Statement stmt,String username,String userzhuanye,String userxingbie){
   String sql="insert into person(name,zhuanye,xingbie)values (?,?,?)";
   try {
    stmt.executeUpdate("insert into person(name,zhuanye,xingbie) values ('username','$userzhuanye','$userxingbie')");
   } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
//   }
}

console报错:

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Unknown column 'userid' in 'field list'
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2870)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)
at com.mysql.jdbc.Connection.execSQL(Connection.java:3170)
at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1316)
at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1235)
at com.DBConnection.dbZengJia(DBConnection.java:66)
at com.zengjia.doPost(zengjia.java:90)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:619)

经过研究发现JDBC对SQL语句的语法冲突无法理解,改进做法如下:

关键是怎家了预编译来回避语法冲突的问题

public void dbZengJia(Statement stmt,String username,String userzhuanye,String userxingbie){
   String sql="insert into person(name,zhuanye,xingbie)values (?,?,?)";
   try {
    //预编译,防止出现语法冲突
    PreparedStatement pstmt=conn.prepareStatement(sql);
    pstmt.setString(1, username);
    pstmt.setString(2, userzhuanye);
    pstmt.setString(3, userxingbie);
    pstmt.executeUpdate();
   } catch (SQLException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
   }

}

转载于:https://www.cnblogs.com/yanzhexian/archive/2010/08/17/1801170.html

关于向MySQL插入一条新纪录的问题相关推荐

  1. php mysql 插入多条数据_雷林鹏分享:PHP MySQL 插入多条数据

    使用 MySQLi 和 PDO 向 MySQL 插入多条数据 mysqli_multi_query() 函数可用来执行多条SQL语句. 以下实例向 "MyGuests" 表添加了三 ...

  2. php mysql 插入多条数据_mysql如何插入多条数据?

    mysql插入多条数据的方法:1.使用"INSERT INTO 表名 字段列表 VALUES (值1) - , (值n);"语句插入数据:2.使用"INSERT INTO ...

  3. python mysql批量insert数据、返回id_Python3 操作 MySQL 插入一条数据并返回主键 id的实例...

    Python 中貌似并没有直接返回插入数据 id 的操作(反正我是没找到),但是我们可以变通一下,找到最新插入的数据 #!/usr/bin/env python3 # -*- coding: UTF- ...

  4. 在SQL Server中如何获得刚插入一条新记录的自动ID号

    在SQL Server中如何获得刚插入一条新记录的自动ID号 收藏 --------------------------------------------------------------- 使用 ...

  5. 利用python脚本一键为MySQL插入万条数据

    运行环境:Windows 10 技术栈:python3,MySQL8.x 编写目的 MySQL是我们研究开发时最常用的关系型数据库.当需要向MySQL数据库中插入大量数据时,一次一条地插入显然不得劲. ...

  6. MySql插入一条数据不提交事务主键还是会自增1

    在使用mybatis想要插入一条数据时,需要最后将事务提交,这时如果设置了主键自动递增,主键会随着数据的插入自增1.但是看下面的情况. try (SqlSession sqlSession = ses ...

  7. php mysql插入多个列_php mysql插入多条记录

    插入多条记录不要采取构建多条insert语句的写法,而是采取,一个insert语句,多组值的写法,这样会大大的调高效率. 以 insert into tb_user (id,user_name,pwd ...

  8. mybatis 连带操作(注解方式)(两张表关联,一张表插入一条新数据,另外一张表也跟着插入一条新数据)

    以角色权限模块中增加功能为例子: a) 概念: 连带操作:首先先在Role表中插入一条数据,接着拿到rid,往Role-Acl表中插入一条数据 b)数据库设计: Role表: Role-Acl表: c ...

  9. php一条SQL语句mysql插入两条重复的数据

    今天晚上在做测试开发的时候,请求了一个最简单的Insert SQL 语句,数据库里竟然出现了两条数据!!! 经过反复的琢磨,觉着代码没有问题.做了很多的代码改动后依然不行. 通过这边文章我看到了一点思 ...

最新文章

  1. python使用input函数时、必须添加提示文字-Python基础教程(4)使用input函数实现用户交互...
  2. Automatic Summarization of Bug Reports
  3. java Arrays Generic
  4. oracle 10g 返回RemoteOperationException: ERROR: Wrong password for user
  5. ES6, Angular,React和ABAP中的String Template(字符串模板)
  6. html页面阴影怎么做,html – 做弯曲阴影的最佳方式
  7. 情侣签到365天获1000现金?这款App被关停下架了 网友拍手称快!
  8. mysql合集_Mysql数据库知识点合集
  9. sbt 地址修改备注
  10. 解决 appcompat 1.1.0 导致 webview crash 的问题
  11. AOSP 隐藏 su
  12. j1900适合装哪版群晖_NAS部署指南 群晖篇六—— NAS兼做路由器,群晖虚拟机套件教程...
  13. 澳洲航空Qantas成立100周年,悉尼海港大桥举办灯光庆典
  14. excel想要把两列合并且用空格隔开
  15. 列表表达式爬取红牛分公司数据
  16. IOS Dev Intro - Frameworks
  17. request.setattribute详解
  18. HTML Hover 的巧用。
  19. Xcode 8 Instruments 学习
  20. [CIKM 2019]Balance in Signed Bipartite Networks

热门文章

  1. vb.net mysql存储图片_怎么让VB.NET 上传图片到SQL 数据库只保存路径,图片保存到文件...
  2. Linux入门笔记——文件操作命令1
  3. 图片图层隐写_【软件】imageIN · 图影-隐藏文件到图片,简单轻快的图片隐写工具...
  4. Windows Hook(2)调用DLL函数
  5. kotlin 构造函数_Kotlin程序| 主要构造函数示例
  6. 使用方法实现数组的对调与输出
  7. 独立看门狗---STM32----HAL
  8. node.js Promise简单介绍
  9. const 和 #define 区别总结
  10. 计算机网络【五】广播通信+以太网