一、什么是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. Linux的bash快捷键

    Ctrl-A 相当于HOME键,用于将光标定位到本行最前面 Ctrl-E 相当于End键,即将光标移动到本行末尾 Ctrl-B 相当于左箭头键,用于将光标向左移动一格 Ctrl-F 相当于右箭头键,用 ...

  2. NPOI 读取单元格的格式

    最近做项目需要导入一部分数据, 导入的数据的中, 有部分的百分比数据使用的是excel 的百分比, 有部分的数据使用的是字符串形式的格式,(数据来源于不同的人统计), 格式略微有点乱, 要求导入系统的 ...

  3. CentOS 升级Python3.X和pip3

    目的:实现python3 and python2 共存,pip2 and pip3共存 一.安装依赖 yum install openssl-devel -y yum install zlib-dev ...

  4. Android四大组件-服务

    Android服务 android 的服务有点类似windows的服务,没有界面,在后台长时间运行,如果我们这种需求的话我们就可以使用服务来实现. 服务的典型应用场景: 播放音乐,下载等,如果要在一个 ...

  5. dSploitzANTI渗透教程之HTTP服务重定向地址

    dSploitzANTI渗透教程之HTTP服务重定向地址 HTTP服务 HTTP服务主要用于重定向地址的.当用户创建一个钓鱼网站时,可以通过使用HTTP服务指定,并通过实施中间人攻击,使客户端访问该钓 ...

  6. opencv 掩膜操作 滤波 卷积核定义 增强对比度 掩膜运算

    /* 矩阵的掩膜操作 0 掩膜mask 在这里进行增强对比度: [ [ 0,-1, 0 ], [-1, 5, -1], [ 0,-1, 0 ] ] 使用mask滑动图片每一个位置,进行卷积运算 这里这 ...

  7. 第一章--Go与web应用

    Go语言构建web应用的特性 可扩展 可维护 模块化 高性能 HTTP简介 HTTP是一种无状态.由文本构成的请求-响应(request-response)协议,这种协议使用的是客户端-服务器(cli ...

  8. LNMP一键安装包如何重装Nginx

    LNMP一键安装包安装好后,相应的Mysql,Nginx及PHP都会安装配置完成. 由于某些特殊情况的需要,如何更换Nginx的版本呢? nginx升级脚本可以完成. 1. 手动编译方法:/usr/l ...

  9. hdu 2819 记录路径的二分匹配

    题目大意就是给出一个矩阵,每个格子里面要么是0, 要么是1:是否能够经过交换(交换行或者列)使得主对角线上都是1. 其实就行和列的匹配,左边是行,右边是列,然后如果行列交点是1,那么就可以匹配,看是否 ...

  10. VC 调用 Python

    //file:py.h BOOL InitPython(); BOOL ClosePython(); ======================== //file:py.cpp #include & ...