一、什么是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. hadoop学习之Linux使用

    Hadoop学习前准备工作 1.安装虚拟机(常用虚拟机:VirtualBox.VMWare)2.安装Linux操作系统(可以直接将打包好的Linux操作系统的镜像文件拿来用,鼠标右键打开,打开方式选择 ...

  2. PHP 中文字符串相关

    1.字符串长度 中文字符串使用strlen() 获取字符串长度时一个UTF8的中文字符是3个字节长度:使用mb_strlen(),选定内码为UTF8,则会将一个中文字符当作长度1来计算 在对含中文字符 ...

  3. eclipse中运行 main 方法报错,找不到类

    eclipse (maven 项目)中运行 main 方法报错,找不到类 ** 发现:在 eclipse中的 "Marker" 控制面板中 ,发现问题所在 只要删除 maven 仓 ...

  4. ACM训练计划建议(转)

    ACM训练计划建议 From:freecode#  Date:2015/5/20 前言: 老师要我们整理一份训练计划给下一届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供大家参考. 菜 ...

  5. React Native性能优化之可取消的异步操作

    前沿 在前端的项目开发中,异步操作是一个不可获取的,从用户的角度来说,异步操作所带来的体验是美妙的,但有时候也会带来一些性能隐患.比如说:有一个异步请求还没有返回结果,但是页面却关闭了,这时由于异步操 ...

  6. 美团DB数据同步到数据仓库的架构与实践

    背景 在数据仓库建模中,未经任何加工处理的原始业务层数据,我们称之为ODS(Operational Data Store)数据.在互联网企业中,常见的ODS数据有业务日志数据(Log)和业务DB数据( ...

  7. 1011 World Cup Betting (20)(20 point(s))

    problem With the 2010 FIFA World Cup running, football fans the world over were becoming increasingl ...

  8. Python 序列与映射的解包操作

    解包就是把序列或映射中每个元素单独提取出来,序列解包的一种简单用法就是把首个或前几个元素与后面几个元素分别提取出来,例如: first, seconde, *rest = sequence 如果seq ...

  9. LOJ P3959 宝藏 状压dp noip

    https://www.luogu.org/problemnew/show/P3959 考场上我怎么想不出来这么写的,状压白学了. 直接按层次存因为如果某个点在前面存过了则肯定结果更优所以不用在意各点 ...

  10. 浅析SDWebImage

    浅析SDWebImage 在日常的开发过程中,如果去优雅的访问网络的图片并去管理每个工程必须要面对的问题,如果想要在工程里面提供易用.简洁.方便管理的解决方案还是很有挑战的,毕竟还要兼顾图片文件的缓存 ...