一、什么是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. android练习

    package com.example.wang.testapp2; import android.app.AlertDialog; import android.content.DialogInte ...

  2. Spark(十三)SparkSQL的自定义函数UDF与开窗函数

    一 自定义函数UDF 在Spark中,也支持Hive中的自定义函数.自定义函数大致可以分为三种: UDF(User-Defined-Function),即最基本的自定义函数,类似to_char,to_ ...

  3. 黑马程序员_java基础笔记(11)...反射

    —————————— ASP.Net+Android+IOS开发..Net培训.期待与您交流! —————————— 1,字节码.2,Constructor类.3,Field类.4,Method类.5 ...

  4. vector 邻接表的建立(好笨啊,才懂,可能太困了吧)。。

    原创,未经允许不得转载. 图的建立有两种,邻接矩阵和邻接表. 邻接矩阵适用于图较为密集,(稀疏图太浪费存储空间了),图如果较为稀疏,则使用邻接表为宜,dijkstra算法就是以邻接表为基础的. 有向无 ...

  5. python之路【第十二篇】: MYSQL

    一. 概述 Mysql是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(Relational Database Management System:关系数据库管理系统)应用 ...

  6. 机器学习之路: 初识tensorflow 第一个程序

    计算图 tensorflow是一个通过计算图的形式来表示计算的编程系统tensorflow中每一个计算都是计算图上的一个节点节点之间的边描述了计算之间的依赖关系 张量 tensor张量可以简单理解成多 ...

  7. Python进阶篇:Socket多线程

    1. 初识Socket server和clinet之间的交互方式 2. 客户端和服务端的单次交互 ==================================== 服务端 import soc ...

  8. Codeforces.809E.Surprise me!(莫比乌斯反演 虚树)

    题目链接 \(Description\) 给定一棵树,求\[\frac{1}{n(n-1)/2}\times\sum_{i\in[1,n],j\in[1,n],i\neq j}\varphi(a_i\ ...

  9. 【推导】Codeforces Round #478 (Div. 2) D. Ghosts

    题意:给你一条直线以及初始时刻这条直线上的一些人的坐标,以及他们的速度矢量.让你对每个人计算他在过去无限远到将来无限远的时间内会与多少人处于同一个点,然后对每个人的这个值求和. 列方程组:两个人i,j ...

  10. hdu 4531 bfs(略难)

    题目链接:点我 第一次不太清楚怎么判重,现在懂了,等下次再做 /* *HDU 4531 *BFS *注意判重 */ #include <stdio.h> #include <stri ...