jdbc 2.0
1.Statement接口不能接受参数
2.PreparedStatement
接口在运行时接受输入参数
3.CallableStatement
接口也可以接受运行时输入参数,当想要访问数据库存储过程时使用
4.示例一:
- package com.rong.web;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import java.sql.SQLException;
- public class Test2 {
- /**
- * @author 容杰龙
- */
- public static void main(String[] args) {
- Connection conn = getConnection();
- PreparedStatement ps = null;
- String sql = "insert into student(name,age) values(?,?)";
- if (conn != null) {
- try {
- // 预处理语句对象 可用占位符?解决sql注入漏洞,占位符位置从1开始
- ps = conn.prepareStatement(sql);
- ps.setString(1, "rjl");
- ps.setInt(2, 18);
- // 是否返回结果集,此时是false
- boolean flag = ps.execute();
- System.out.println(flag);
- // 返回执行结果的影响行数,此时返回值为1
- int effects = ps.executeUpdate();
- System.out.println(effects);
- /////////批处理/////////
- String sql1 = "insert into student(name,age) values('one',28)";
- String sql2 = "insert into student(name,age) values('two',27)";
- // PreparedStatement构造方法必须有字符串参数
- ps = conn.prepareStatement("");
- ps.addBatch(sql1);
- ps.addBatch(sql2);
- int[] ints = ps.executeBatch();
- for (int i : ints) {
- System.out.println(i);
- }
- } catch (SQLException e) {
- e.printStackTrace();
- } finally {
- // 关闭资源
- try {
- if (ps != null) {
- ps.close();
- }
- } catch (SQLException e) {
- e.printStackTrace();
- }
- try {
- if (conn != null) {
- conn.close();
- }
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
- }
- public static Connection getConnection() {
- Connection connection=null;
- try {
- Class.forName("com.mysql.jdbc.Driver");
- String url="jdbc:mysql://127.0.0.1:3306/rjl";
- String user="root";
- String password="123123";
- connection = DriverManager.getConnection(url, user, password);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return connection;
- }
- }
5.示例二:
MySQL存储过程
- DELIMITER $$
- CREATE PROCEDURE getPrice(INOUT myName VARCHAR(20),OUT age INT(20))
- BEGIN
- SET myName="rjl";
- SET age=22;
- END $$
java操作
- package com.rong.web;
- import java.sql.CallableStatement;
- import java.sql.Connection;
- import java.sql.SQLException;
- public class Test3 {
- public static void main(String[] args) {
- Connection connection = Test2.getConnection();
- if (connection != null) {
- String sql = "call getPrice(?,?)";
- try {
- //创建存储过程的语句操作对象
- CallableStatement cs = connection.prepareCall(sql);
- //IN类型参数直接设置set即可
- //第一个参数为INOUT类型,需要设置set参数,并注册参数
- cs.setString(1, "kobe");
- cs.registerOutParameter(1, java.sql.Types.VARCHAR);
- //第二个参数为OUT类型,也需要注册
- cs.registerOutParameter(2, java.sql.Types.INTEGER);
- boolean flag = cs.execute();
- System.out.println(flag);
- //获取执行存储过程后的OUT结果
- String name = cs.getString(1);
- int age = cs.getInt(2);
- System.out.println(name + ":" + age);
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
- }
jdbc 2.0的更多相关文章
- jdbc 4.0新特性
来自网络 在 Java SE 6 所提供的诸多新特性和改进中,值得一提的是为 Java 程序提供数据库访问机制的 JDBC 版本升级到了 4.0, 这个以 JSR-221 为代号的版本 , 提供了更加 ...
- Java SE 6 新特性: Java DB 和 JDBC 4.0
http://www.ibm.com/developerworks/cn/java/j-lo-jse65/index.html 长久以来,由于大量(甚至几乎所有)的 Java 应用都依赖于数据库,如何 ...
- 请使用支持 JDBC 4.0 的 sqljdbc4.jar 类库
转载请使用支持 JDBC 4.0 的 sqljdbc4.jar 类库 1.下载最新的JDBC(2012/3/6) http://www.microsoft.com/downloads/zh-cn/de ...
- 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 ...
- JDBC 4.0 开始Java操作数据库不用再使用 Class.forName加载驱动类了
JDBC 4.0 开始Java操作数据库不用再使用 Class.forName加载驱动类了 代码示例 转自 https://docs.oracle.com/javase/tutorial/jdbc/o ...
- Java数据库——JDBC 2.0操作
可滚动的结果集 让结果集滚动起来 //================================================= // File Name : JDBC20_demo //-- ...
- jdbc 6.0
1.获取数据库自动生成的键值 package com.rong.jielong; import java.sql.Connection; import java.sql.DriverManager; ...
- jdbc 5.0
1.事务 事务将单个SQL语句或一组SQL语句视为一个逻辑单元,如果任何语句失败,整个事务将失败. jdbc的MySQL驱动程序中的事务默认是自动提交. 默认情况下,每个SQL语句在完成后都会提交到数 ...
- jdbc 4.0
1.存储MySQL数据库的date.time.timestamp.datetime以及year类型数据 package com.rong.jielong; import java.sql.Connec ...
- jdbc 3.0
1.将Blob.Clob类型数据保存到数据库 import java.io.File; import java.io.FileInputStream; import java.io.FileReade ...
随机推荐
- ios retainCount
retainCount Important: Typically there should be no reason to explicitly ask an object what its reta ...
- 鼠标移动在屏幕上显示温度Tip提示功能-CToolTipCtrl类的使用
初学VC++,太多知识不懂,需要不断的查找资料,想通过记录让自己有所积累,主要是怕以后会很快忘记.最近在做一个在屏幕上显示鼠标移动位置的温度值,我利用先缓存一帧图像的温度值,然后,通过鼠标移动消息相应 ...
- 如何将M文件转成独立可执行程序
如何将MATLAB程序编译成独立可执行的程序?生成独立可执行的程序(exe文件)步骤 1.安装编译器.可有多种选择,matlab自带了一个LCC,推荐使用VC++6.0,我基于VS 2013实现 ...
- 20155202 20155222 信息安全技术概论实验一 PGP的使用
20155202 信息安全技术概论实验一 PGP的使用 实验原理 一.PGP简介 在现代社会里,电子邮件和网络上的文件传输已经成为生活的一部分.邮件的安全问题也就突出了,大家都知道在互联网上传输的数据 ...
- 20155211实验2 Windows口令破解
20155211实验2 Windows口令破解 实验目的 了解Windows口令破解原理 对信息安全有直观感性认识 能够运用工具实现口令破解 实验原理 口令破解方法 口令破解主要有两种方法:字典破解和 ...
- 20155301 2016-2017-2 《Java程序设计》第2周学习总结
20155301 2016-2017-2 <Java程序设计>第2周学习总结 教材学习内容总结 教材的第三章内容主要分为两大方面: 一.程序中的数据类型,变量和运算符,主要讲述了各种类型的 ...
- jQuery File Upload 文件上传插件使用二 (功能完善)
使用Bootstrap美化进度条 Bootstrap现在几乎是人尽皆知了,根据它提供的进度条组件, 让进度条显得高大尚点 正因为其功能强大,js模块文件之间牵连较深 不好的地方耦合度非常高 重要的参数 ...
- php编程知识点2018
一 .PHP基础部分 1.PHP语言的一大优势是跨平台,什么是跨平台? PHP的运行环境最优搭配为Apache+MySQL+PHP,此运行环境可以在不同操作系统(例如windows.Linux等)上配 ...
- 微服务介绍及Asp.net Core实战项目系列之微服务介绍
0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 一.微服务选型 在做微服务架构的技术选型的时候,我们以“无侵入”和“社区活跃”为主要的考量点,将来升级为原子服务架构.量子服务架构 ...
- Python3中IO文件操作的常见用法
首先创建一个文件操作对象: f = open(file, mode, encoding) file指定文件的路径,可以是绝对路径,也可以是相对路径 文件的常见mode: mode = “r” # ...