1.Statement接口不能接受参数

2.PreparedStatement接口在运行时接受输入参数

3.CallableStatement接口也可以接受运行时输入参数,当想要访问数据库存储过程时使用

4.示例一:

  1. package com.rong.web;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.PreparedStatement;
  6. import java.sql.SQLException;
  7.  
  8. public class Test2 {
  9.  
  10. /**
  11. * @author 容杰龙
  12. */
  13. public static void main(String[] args) {
  14. Connection conn = getConnection();
  15. PreparedStatement ps = null;
  16. String sql = "insert into student(name,age) values(?,?)";
  17. if (conn != null) {
  18. try {
  19. // 预处理语句对象 可用占位符?解决sql注入漏洞,占位符位置从1开始
  20. ps = conn.prepareStatement(sql);
  21. ps.setString(1, "rjl");
  22. ps.setInt(2, 18);
  23. // 是否返回结果集,此时是false
  24. boolean flag = ps.execute();
  25. System.out.println(flag);
  26. // 返回执行结果的影响行数,此时返回值为1
  27. int effects = ps.executeUpdate();
  28. System.out.println(effects);
  29. /////////批处理/////////
  30. String sql1 = "insert into student(name,age) values('one',28)";
  31. String sql2 = "insert into student(name,age) values('two',27)";
  32. // PreparedStatement构造方法必须有字符串参数
  33. ps = conn.prepareStatement("");
  34. ps.addBatch(sql1);
  35. ps.addBatch(sql2);
  36. int[] ints = ps.executeBatch();
  37. for (int i : ints) {
  38. System.out.println(i);
  39. }
  40. } catch (SQLException e) {
  41. e.printStackTrace();
  42. } finally {
  43. // 关闭资源
  44. try {
  45. if (ps != null) {
  46. ps.close();
  47. }
  48. } catch (SQLException e) {
  49. e.printStackTrace();
  50. }
  51. try {
  52. if (conn != null) {
  53. conn.close();
  54. }
  55. } catch (SQLException e) {
  56. e.printStackTrace();
  57. }
  58. }
  59.  
  60. }
  61.  
  62. }
  63. public static Connection getConnection() {
  64. Connection connection=null;
  65. try {
  66. Class.forName("com.mysql.jdbc.Driver");
  67. String url="jdbc:mysql://127.0.0.1:3306/rjl";
  68. String user="root";
  69. String password="123123";
  70. connection = DriverManager.getConnection(url, user, password);
  71.  
  72. } catch (Exception e) {
  73. e.printStackTrace();
  74. }
  75. return connection;
  76. }
  77.  
  78. }

5.示例二:

MySQL存储过程

  1. DELIMITER $$
  2. CREATE PROCEDURE getPrice(INOUT myName VARCHAR(20),OUT age INT(20))
  3. BEGIN
  4. SET myName="rjl";
  5. SET age=22;
  6. END $$

java操作

  1. package com.rong.web;
  2.  
  3. import java.sql.CallableStatement;
  4. import java.sql.Connection;
  5. import java.sql.SQLException;
  6.  
  7. public class Test3 {
  8. public static void main(String[] args) {
  9. Connection connection = Test2.getConnection();
  10. if (connection != null) {
  11. String sql = "call getPrice(?,?)";
  12. try {
  13. //创建存储过程的语句操作对象
  14. CallableStatement cs = connection.prepareCall(sql);
  15. //IN类型参数直接设置set即可
  16. //第一个参数为INOUT类型,需要设置set参数,并注册参数
  17. cs.setString(1, "kobe");
  18. cs.registerOutParameter(1, java.sql.Types.VARCHAR);
  19. //第二个参数为OUT类型,也需要注册
  20. cs.registerOutParameter(2, java.sql.Types.INTEGER);
  21. boolean flag = cs.execute();
  22. System.out.println(flag);
  23. //获取执行存储过程后的OUT结果
  24. String name = cs.getString(1);
  25. int age = cs.getInt(2);
  26. System.out.println(name + ":" + age);
  27. } catch (SQLException e) {
  28. e.printStackTrace();
  29. }
  30. }
  31. }
  32. }

jdbc 2.0的更多相关文章

  1. jdbc 4.0新特性

    来自网络 在 Java SE 6 所提供的诸多新特性和改进中,值得一提的是为 Java 程序提供数据库访问机制的 JDBC 版本升级到了 4.0, 这个以 JSR-221 为代号的版本 , 提供了更加 ...

  2. Java SE 6 新特性: Java DB 和 JDBC 4.0

    http://www.ibm.com/developerworks/cn/java/j-lo-jse65/index.html 长久以来,由于大量(甚至几乎所有)的 Java 应用都依赖于数据库,如何 ...

  3. 请使用支持 JDBC 4.0 的 sqljdbc4.jar 类库

    转载请使用支持 JDBC 4.0 的 sqljdbc4.jar 类库 1.下载最新的JDBC(2012/3/6) http://www.microsoft.com/downloads/zh-cn/de ...

  4. java web项目部署到tomcat 8.5 此驱动程序不支持 Java Runtime Environment (JRE) 1.8 版。请使用支持 JDBC 4.0 的 sqljdbc4.jar 类库

    1:项目使用的是jre1.8版本. 2:服务器 apache-tomcat-8.5.23 报错如下: 严重 [com.mchange.v2.async.ThreadPoolAsynchronousRu ...

  5. JDBC 4.0 开始Java操作数据库不用再使用 Class.forName加载驱动类了

    JDBC 4.0 开始Java操作数据库不用再使用 Class.forName加载驱动类了 代码示例 转自 https://docs.oracle.com/javase/tutorial/jdbc/o ...

  6. Java数据库——JDBC 2.0操作

    可滚动的结果集 让结果集滚动起来 //================================================= // File Name : JDBC20_demo //-- ...

  7. jdbc 6.0

    1.获取数据库自动生成的键值 package com.rong.jielong; import java.sql.Connection; import java.sql.DriverManager; ...

  8. jdbc 5.0

    1.事务 事务将单个SQL语句或一组SQL语句视为一个逻辑单元,如果任何语句失败,整个事务将失败. jdbc的MySQL驱动程序中的事务默认是自动提交. 默认情况下,每个SQL语句在完成后都会提交到数 ...

  9. jdbc 4.0

    1.存储MySQL数据库的date.time.timestamp.datetime以及year类型数据 package com.rong.jielong; import java.sql.Connec ...

  10. jdbc 3.0

    1.将Blob.Clob类型数据保存到数据库 import java.io.File; import java.io.FileInputStream; import java.io.FileReade ...

随机推荐

  1. ios retainCount

    retainCount Important: Typically there should be no reason to explicitly ask an object what its reta ...

  2. 鼠标移动在屏幕上显示温度Tip提示功能-CToolTipCtrl类的使用

    初学VC++,太多知识不懂,需要不断的查找资料,想通过记录让自己有所积累,主要是怕以后会很快忘记.最近在做一个在屏幕上显示鼠标移动位置的温度值,我利用先缓存一帧图像的温度值,然后,通过鼠标移动消息相应 ...

  3. 如何将M文件转成独立可执行程序

    如何将MATLAB程序编译成独立可执行的程序?生成独立可执行的程序(exe文件)步骤    1.安装编译器.可有多种选择,matlab自带了一个LCC,推荐使用VC++6.0,我基于VS 2013实现 ...

  4. 20155202 20155222 信息安全技术概论实验一 PGP的使用

    20155202 信息安全技术概论实验一 PGP的使用 实验原理 一.PGP简介 在现代社会里,电子邮件和网络上的文件传输已经成为生活的一部分.邮件的安全问题也就突出了,大家都知道在互联网上传输的数据 ...

  5. 20155211实验2 Windows口令破解

    20155211实验2 Windows口令破解 实验目的 了解Windows口令破解原理 对信息安全有直观感性认识 能够运用工具实现口令破解 实验原理 口令破解方法 口令破解主要有两种方法:字典破解和 ...

  6. 20155301 2016-2017-2 《Java程序设计》第2周学习总结

    20155301 2016-2017-2 <Java程序设计>第2周学习总结 教材学习内容总结 教材的第三章内容主要分为两大方面: 一.程序中的数据类型,变量和运算符,主要讲述了各种类型的 ...

  7. jQuery File Upload 文件上传插件使用二 (功能完善)

    使用Bootstrap美化进度条 Bootstrap现在几乎是人尽皆知了,根据它提供的进度条组件, 让进度条显得高大尚点 正因为其功能强大,js模块文件之间牵连较深 不好的地方耦合度非常高 重要的参数 ...

  8. php编程知识点2018

    一 .PHP基础部分 1.PHP语言的一大优势是跨平台,什么是跨平台? PHP的运行环境最优搭配为Apache+MySQL+PHP,此运行环境可以在不同操作系统(例如windows.Linux等)上配 ...

  9. 微服务介绍及Asp.net Core实战项目系列之微服务介绍

    0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 一.微服务选型 在做微服务架构的技术选型的时候,我们以“无侵入”和“社区活跃”为主要的考量点,将来升级为原子服务架构.量子服务架构 ...

  10. Python3中IO文件操作的常见用法

    首先创建一个文件操作对象: f = open(file, mode, encoding) file指定文件的路径,可以是绝对路径,也可以是相对路径 文件的常见mode: mode = “r”   # ...