一、什么是PreparedStatement
          参阅Java API文档,我们可以知道,PreparedStatement是Statement的子接口(如图所示),表示预编译的 SQL 语句的对象,SQL 语句被预编译并存储在PreparedStatement 对象中。然后可以使用此对象多次高效地执行该语句。
 
 
二、通过PreparedStatement获取在运行命令行中执行的参数,将参数插入到某张数据表中
          相关的实验过程,包括在预先创建程序所需数据库、创建所需数据表格、在开发环境中加载驱动程序包等,可参考前一篇文章《JDBC连接MySQL数据库及示例》(前往该文章
具体代码如下:
  1. package com.serein.jdbc;
  2. import java.sql.*;
  3. public class preparedStatemetTest {
  4. public static void main(String[] args) {
  5. //检查命令行中是否够7个参数
  6. if(args.length != 7) {
  7. System.out.println("Parameter Error! Please Input Again!");
  8. System.exit(-1);
  9. }
  10. //程序获取运行栈里的7个参数值
  11. String name = args[0];
  12. int age = 0;
  13. try {
  14. age = Integer.parseInt(args[1]);
  15. } catch (NumberFormatException e) {
  16. System.out.println("Parameter Error! Age should be Number Format!");
  17. System.exit(-1);
  18. }
  19. String sex = args[2];
  20. String address = args[3];
  21. String depart = args[4];
  22. int worklen = 0;
  23. try {
  24. worklen = Integer.parseInt(args[5]);
  25. } catch (NumberFormatException e) {
  26. System.out.println("Parameter Error! Worklen should be Number Format!");
  27. System.exit(-1);
  28. }
  29. int wage = 0;
  30. try {
  31. wage = Integer.parseInt(args[6]);
  32. } catch (NumberFormatException e) {
  33. System.out.println("Parameter Error! Wage should be Number Format!");
  34. System.exit(-1);
  35. }
  36. //创建PreparedStatement对象
  37. PreparedStatement pstmt = null;
  38. //创建连接对象
  39. Connection conn = null;
  40. //连接数据库,并插入数据
  41. try {
  42. //加载MySQL驱动实例,提供了两种方法,是等价的
  43. Class.forName("com.mysql.jdbc.Driver");
  44. //new oracle.jdbc.driver.OracleDriver();
  45. //建立连接
  46. conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myuser", "root", "root");
  47. //使用PreparedStatement对象里来构建并执行SQL语句,7个问号代表7个字段预先要保留的值
  48. pstmt = conn.prepareStatement("INSERT INTO staff(name, age, sex,address, depart, worklen,wage) VALUES (?, ?, ?, ?, ?, ?, ?)");
  49. //通过PreparedStatement对象里的set方法去设置插入的具体数值
  50. pstmt.setString(1, name);
  51. pstmt.setInt(2, age);
  52. pstmt.setString(3, sex);
  53. pstmt.setString(4,address );
  54. pstmt.setString(5, depart);
  55. pstmt.setInt(6, worklen);
  56. pstmt.setInt(7, wage);
  57. pstmt.executeUpdate();
  58. //插入成功提示
  59. System.out.print("成功插入一条数据记录!");
  60. //捕获驱动加载失败异常
  61. } catch (ClassNotFoundException e) {
  62. e.printStackTrace();
  63. //捕获SQL语句执行失败异常
  64. } catch (SQLException e) {
  65. e.printStackTrace();
  66. //恢复变量初始值
  67. } finally {
  68. try {
  69. if(pstmt != null) {
  70. pstmt.close();
  71. pstmt = null;
  72. }
  73. if(conn != null) {
  74. conn.close();
  75. conn = null;
  76. }
  77. //捕获SQL异常
  78. } catch (SQLException e) {
  79. e.printStackTrace();
  80. }
  81. }
  82. }
  83. }
 

编写好代码之后,要进行带参数运行程序,方法如下:

 
 
 
其中输入的参数为(可参考进行修改):
SereinChan
25
M
Guangzhou
Engine
3
5000

查看Console控制台,"成功插入一条数据记录!":

查看MySQL数据库,进行确认:

成功完成!

转自:http://blog.csdn.net/cxwen78/article/details/6868941

JDBC进阶之PreparedStatement执行SQL语句(MySQL)的更多相关文章

  1. 使用预处理PreparedStatement执行Sql语句

    /** * 使用预处理的方式执行Sql * @param sql Sql语句 * @param obj 变量值数组 * @return 查询结果 * @throws SQLException */ p ...

  2. 使用PreparedStatement执行SQL语句时占位符(?)的用法

    1.Student数据库表 ID  name gender       2.Java代码 public static void main(String[] args) { int _id=1; Str ...

  3. 用jdbc连接数据库并简单执行SQL语句

    一:版本一.这种存在一个问题就是每执行一次操作都会创建一次Connection链接和且释放一次链接 1:创建pojo对象(OR映射,一个pojo类对应一张数据库表)   package com.yin ...

  4. JDBC中执行SQL语句的方式

    一.执行DDL.DML语句 DDL.DML分别表示数据库定义语言.数据库操纵语言,操控这两种语言应该使用Statement对象的executeUpdate方法. 代码如下: public static ...

  5. 不登录到MySQL执行SQL语句

    mysql -e 不登录到MySQL执行SQL语句 mysql -u root -p -e "SHOW DATABASES"

  6. 三种执行SQL语句的的JAVA代码

    问题描述: 连接数据库,执行SQL语句是必不可少的,下面给出了三种执行不通SQL语句的方法. 1.简单的Statement执行SQL语句.有SQL注入,一般不使用. public static voi ...

  7. [疯狂Java]JDBC:PreparedStatement预编译执行SQL语句

    1. SQL语句的执行过程——Statement直接执行的弊病: 1) SQL语句和编程语言一样,仅仅就会普通的文本字符串,首先数据库引擎无法识别这种文本字符串,而底层的CPU更不理解这些文本字符串( ...

  8. JDBC连接MYSQL,批量执行SQL语句或在执行一个SQL语句之前执行一个SQL语句

    conn = MysqlJdbcUtils.getConnection(); Statement ps=conn.createStatement(); ps.addBatch("trunca ...

  9. 10.1(java学习笔记)JDBC基本操作(连接,执行SQL语句,获取结果集)

    一.JDBC JDBC的全称是java database connection java数据库连接. 在java中需要对数据库进行一系列的操作,这时就需要使用JDBC. sun公司制定了关于数据库操作 ...

随机推荐

  1. CF 576A 猜数

    A给出一个数x,B每次猜一个y,A回答B,x是否可以被y整除,求出要猜的最小次数和需要猜的数. 枚举每个素数p,可以知道如果p^k<=n,则p^k一定需要选 Sample test(s)inpu ...

  2. 一行代码实现Okhttp,Retrofit,Glide下载上传进度监听

    https://mp.weixin.qq.com/s/bopDUFMB7EiK-MhLc3KDXQ essyan 鸿洋 2017-06-29 本文作者 本文由jessyan投稿. jessyan的博客 ...

  3. loadrunner——常见函数

    loadrunner——常见函数 分类: LoadRunner 2012-04-11 20:41 703人阅读 评论(0) 收藏 举报 loadrunnersearchweb服务器脚本stringwe ...

  4. Windows下的Apache

    https://blog.csdn.net/weixin_39082031/article/details/79088800

  5. structs2的action实现方式

    Action的实现方式第一种:在web.xml中添加配置<filter> <filter-name>struts2</filter-name> <filter ...

  6. HashMap+双向链表手写LRU缓存算法/页面置换算法

    import java.util.Hashtable; class DLinkedList { String key; //键 int value; //值 DLinkedList pre; //双向 ...

  7. NetStandard类库实现Log4Net集成

    前面都是Log4Net集成到NetCore项目中,集成到NetStandard类库还是第一次,所以记录一下 小提示:NetStandard要想同时被NetCore和NetFramework调用,需要在 ...

  8. 数据库中drop、delete与truncate的区别

    数据库中drop.delete与truncate的区别 drop直接删掉表: truncate删除表中数据,再插入时自增长id又从1开始 :delete删除表中数据,可以加where字句. (1) D ...

  9. UOJ.87.mx的仙人掌(圆方树 虚树)(未AC)

    题目链接 本代码10分(感觉速度还行..). 建圆方树,预处理一些东西.对询问建虚树. 对于虚树上的圆点直接做:对于方点特判,枚举其所有儿子,如果子节点不在该方点代表的环中,跳到那个点并更新其val, ...

  10. PostgreSQL教程收集(中文文档/命令行工具/常用命令)

    http://www.postgres.cn/docs/9.6/index.html(中文文档) https://www.postgresql.org/docs/10/static/auth-meth ...