package metadata;

import java.sql.Connection;
import java.sql.ParameterMetaData;
import java.sql.PreparedStatement; import javax.sql.DataSource; import com.mchange.v2.c3p0.ComboPooledDataSource; import util.SQLUtil; /**
* 参数元数据:
*
* @author mzy
*
*/
public class Demo02 {
public static void main(String[] args) throws Exception {
// easyUse(); // insert(); // update();
} private static void update() {
SQLUtil.update("update student set name=?, gender=? where id=?", new Object[]{"Lily", "男", 3});
} private static void insert() {
SQLUtil.update("insert into student(id, name, gender, score, birth) values (?, ?, ?, ?, ?)",
new Object[]{3, "lucy", "女", 90, "2018-05-04"});
} private static void easyUse() throws Exception {
DataSource ds = new ComboPooledDataSource();
Connection conn = ds.getConnection(); String sql = "insert into student(id, name, gender, score, birth) values(?, ?, ?, ?, ?)"; // 预编译sql
PreparedStatement stmt = conn.prepareStatement(sql); // 参数赋值
/*
stmt.setInt(1, 1);
stmt.setString(2, "mzy");
stmt.setString(3, "男");
stmt.setDouble(4, 99);
stmt.setString(5, "2017-05-04"); int i = stmt.executeUpdate();
System.out.println(i+"行受到影响!");
*/
// 知道预编译的sql有几个参数
// 得到参数元数据
ParameterMetaData metaData = stmt.getParameterMetaData(); // 得到sql中有几个参数
int count = metaData.getParameterCount();
System.out.println(count);
Object[] values = new Object[]{2, "stu", "女", 100, "2018-05-04"};
// 有了参数元数据之后,就可以换一种方式进行赋值了
for(int i=0; i<count; i++) {
stmt.setObject(i+1, values[i]);
}
stmt.executeUpdate();
System.out.println("插入成功!");
}
}

其中部分已经封装到了SQLUtil中,请点击

JDBC中的元数据——2.参数元数据的更多相关文章

  1. OpenJDK源码研究笔记(十二):JDBC中的元数据,数据库元数据(DatabaseMetaData),参数元数据(ParameterMetaData),结果集元数据(ResultSetMetaDa

    元数据最本质.最抽象的定义为:data about data (关于数据的数据).它是一种广泛存在的现象,在许多领域有其具体的定义和应用. JDBC中的元数据,有数据库元数据(DatabaseMeta ...

  2. JDBC中的元数据

    在我编写JDBC代码的时候:出现很多的重复的代码,有没有什么办法让我们能够编写出更加通用的JDBC代码呢?使用元数据,元数据能够让我们编写出更加通用的JDBC代码.什么是元数据呢?(三种元数据)1)连 ...

  3. JDBC中的元数据——3.结果集元数据

    package metadata; import java.sql.Connection; import java.sql.ParameterMetaData; import java.sql.Pre ...

  4. JNDI和在tomcat中配置DBCP连接池 元数据的使用 DBUtils框架的使用 多表操作

    1 JNDI和在tomcat中配置DBCP连接池 JNDI(Java Naming and Directory Interface),Java命名和目录接口,它对应于J2SE中的javax.namin ...

  5. WPF中如何选择合适的元数据标记?(英文)

    原文:WPF中如何选择合适的元数据标记?(英文) FrameworkPropertyMetadataOptions Enumeration:Specifies the types of framewo ...

  6. JDBC中常用的接口

    JDBC常用的接口DriverManager 驱动管理器获得数据库链接 Connection 数据库链接接口 Statement 语句接口,用来静态操作SQL语句 PreparedStatement ...

  7. JDBC中常用对象介绍

    JDBC中的主要类(接口) 在JDBC中常用的类有: 1.DriverManager 2.Connection 3.Statement 4.ResultSet 1.DriverManager 其实我们 ...

  8. [转]JDBC中日期时间的处理技巧

    Java中用类java.util.Date对日期/时间做了封装,此类提供了对年.月.日.时.分.秒.毫秒以及时区的控制方法,同时也提供一些工具方法,比如日期/时间的比较,前后判断等. java.uti ...

  9. 使用JDBC中的出现的乱码和查询无结果问题

    使用JDBC中的问题 连接的后出现查询结果是乱码. 1.可能是代码的编码与数据库的编码不同 ​ 有可以将二者都设置为UTF-8 2.如果比较懒得话可以只设代码为UTF-8 mysql 连接url中us ...

随机推荐

  1. Scala学习——函数

    一.函数的定义(def) object FunctionApp { //定义函数:方法体内最后一行为返回值,不需要使用return def add(a:Int,b:Int):Int={ a + b } ...

  2. P3203 弹飞绵羊-分块

    P3203 弹飞绵羊-分块 观察数据范围,发现可以分块.只需要处理每个点跳出所在块后的位置和次数即可.目的是为了加速查询并降低修改复杂度. 对于修改,重构整个块内信息即可. 时间复杂度正确的一批 具体 ...

  3. form 表单提交的另一种方式 js

    <html> <head> <script type="text/javascript"> function formSubmit() { fm ...

  4. java顺序结构、循环结构、选择结构

    java顺序结构.选择结构.循环结构 顺序结构: 语句与语句之间,框与框之间是从上到下的顺序进行的,它是由若干个依次执行的处理步骤执组成的,它是任何一个算法都不离开的一种基本算法结构. 选择结构: 1 ...

  5. @FeignClient常用属性

    @FeignClient(name = "gateway-test", value = "gateway-test", url = "localhos ...

  6. noip模拟测试31

    终于有时间写博客了,前面一直咕咕咕都快变成一只公鸡了......这次考试,真的很意外,我在考场上觉得自己打出了T1的正解,样例一拍就过,还跑得嘎嘎快,然后T2,T3码了两个暴力,觉得自己应该能100p ...

  7. .net 知新:【4】NuGet简介和使用

    在包管理以前我们在项目中引用第三方包通常是去下载dll放到项目中再引用,后来逐渐发展成各种包管理工具,nuget就是一种工具,适用于任何现代开发平台的基本工具可充当一种机制,通过这种机制,开发人员可以 ...

  8. 聊聊 PC 端自动化最佳方案 - WinAppDriver

    1. 前言 大家好,我是安果! 一提到自动化,可能大家想到的是 App 端的 Appium.Airtest.AutoJS,亦或是 Selenium.Puppeteer.Cypress 等 Web 端的 ...

  9. C++ //运算符重载 +号

    1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 //1.成员函数重载 +号 6 cla ...

  10. 华为eNSP基础入门-配置SSH远程登录

    eNSP 华为模拟器ensp (Enterprise Network Simulation Platform) 是华为官方推出的一款强大的图形化网络仿真工具平台,主要对企业网路由器.交换机.WLAN等 ...