PreparedStatement:

是一个预编译对象

是Statement的子接口

允许数据库预编译SQL

执行SQL的时候,无需重新传入SQL语句,它们已经编译SQL语句

执行SQL语句 :executeQuery()或execute Update() 注意:不要在传入SQL语句

可以有效地防止SQL注入

方法:

->setXxxx(int index,Xxx value):传入参数值。

连接/关闭方法

public Connection getConnection() throws Exception {

        String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3307/shijian";
String user = "root";
String password = "1234";
Class.forName(driver);
Connection connection = DriverManager.getConnection(url, user, password);
return connection;
//System.out.println(connection);
}
//关闭
public void Close(ResultSet rs, Statement statement, Connection conn) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (statement != null) {
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
    @Test
public void testPreparedStatementjdbc(){ Connection connection = null;
PreparedStatement preparedStatement = null; try {
connection = getConnection();
String sql = "insert into student(sname,sclass) values(?,?)";
preparedStatement = (PreparedStatement) connection.prepareStatement(sql);
preparedStatement.setString(1, "lisi");
preparedStatement.setInt(2, 123456); //不要传入SQL语句
preparedStatement.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}finally {
Close(null, preparedStatement, connection);
} }
ResultSetMetaData
是描述ResuleSet的元数据对象,即从中得到有多少列,列明是什么 得到ResultSetMetaData 对象:调用ResultSet 的 getMetaData()方法 ResultSetMetaData的好方法
-->int getColumnLabel(int column) 获取指定的列名,缩影从1开始
-->String getColumnCount() SQL语句有哪些列
    @Test
public void testResultMeteData(){
Connection connection = null;
PreparedStatement statement =null;
ResultSet resuleset = null;
try {
String sql = "select * from student where id = ?";
connection = testGetConnection();
statement = (PreparedStatement) connection.prepareStatement(sql);
statement.setInt(1, 2);
resuleset = statement.executeQuery();
//1.得到ResultSetMetaData对象
ResultSetMetaData rsmd = (ResultSetMetaData) resuleset.getMetaData();
//2.打印每一列的列名
Map<String,Object> values = new HashMap<String,Object>();
while(resuleset.next()){
for(int i = 0; i < rsmd.getColumnCount();i++){
String c = rsmd.getColumnLabel(i +1);
Object ovalue = resuleset.getObject(c);
//System.out.println(c + "--" + ovalue);
values.put(c, ovalue);
}
Class clazz = Student.class;
Object object = clazz.newInstance();
for(Map.Entry<String, Object> entry: values.entrySet()){
String sid = entry.getKey();
String sname = (String) entry.getValue();
System.out.println( sid + "--" + sname);
}
}
} catch (Exception e) {
e.printStackTrace();
}finally {
Close(resuleset, statement, connection);
}
}

JDBC(4)PreparedStatement的更多相关文章

  1. JDBC(4)—Preparedstatement

    功能:使用PreparedStatement操作数据表,其功能与Statement一致,但为何要使用PreparedStatement呢. 一.原因: 1.使用sql语句进行操作数据表时,需要拼写sq ...

  2. Java基础(三十二)JDBC(2)连接数据库

    一.连接数据库的过程 连接数据库的过程:加载数据库驱动程序,不过只需在第一次访问数据库时加载一次,然后在每次访问数据库时创建一个Connection实例,然后执行操作数据库的SQL语句,并返回执行结果 ...

  3. 跟着刚哥学习Spring框架--JDBC(六)

    Spring的JDBC框架 Spring JDBC提供了一套JDBC抽象框架,用于简化JDBC开发. Spring主要提供JDBC模板方式.关系数据库对象化方式.SimpleJdbc方式.事务管理来简 ...

  4. JDBC 学习笔记(六)—— PreparedStatement

    1. 引入 PreparedStatement PreparedStatement 通过 Connection.createPreparedStatement(String sql) 方法创建,主要用 ...

  5. 浅谈JDBC(一)

    一.JDBC技术引言 1.什么是JDBC技术 提供了一套接口规范,利用java代码进行数据库操作. 2.JDBC技术的核心思想 对于程序员来说,代码访问数据库分为三个步骤:1.通过数据库的账号密码.2 ...

  6. JDBC(一)之细说JDBC

    Properties info = new Properties();//要参考数据库文档 info.setProperty("user", "root"); ...

  7. JDBC(三)数据库连接池(DBCP、C3P0)

    前言 这段时间状态有一点浮躁,希望自己静下心来.还有特别多的东西还没有学懂.需要学习的东西非常的多,加油! 一.JDBC复习 Java Data Base Connectivity,java数据库连接 ...

  8. JAVA基础-JDBC(一)

    一.JDBC的简介 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,由与各种数据库都有着一套自己的规范,JAVA对其操 ...

  9. JDBC(四)

    1 Apache DBUtils框架 1.1 DBUtils简介 commons-dbutils是Apache组织提供的一个开源JDBC工具类库,它是对JDBC的简单封装,学习成本非常低,并且使用db ...

随机推荐

  1. 如何高效的算出2x8的值

    原文出自:https://blog.csdn.net/seesun2012 位移算法,如何高效的算出2*8的值,为什么8<<1,4<<2,2<<3,1<< ...

  2. A space or line break was encountered after the "@" character. Only valid identifiers, keywords, comments, "(" and "{" are valid at the start of a code block and they must occur immediately following

    mvc 控制器调用分布视图出错,("A space or line break was encountered after the "@" character. Only ...

  3. List和Queue使用过程中的纪录

    业务需求: 发送特定的请求,根据返回的信息执行特定的事件. 目前的做法:把我的请求放入一个容器内,然后待到某一条件,就从这个容器把请求发送出去,等客户返回信息时,查询容器中对应请求中特定的事件.开始的 ...

  4. 1、springboot之HelloWorld

    最基本的,官网copy 创建maven项目 maven中添加 <parent> <groupId>org.springframework.boot</groupId> ...

  5. AndroidVideoCache 框架源码分析

    1.简析: 在客户端播放视频的使用,容易出现这样的一个问题.在网络状况不好的情况下,视频流很容易卡顿或者中断,即使播放软件本身有一点的缓存能力,但是这个往往不够,造成播放失败,卡顿. AndroidV ...

  6. java-IO小记

    说来惭愧,工作一年多了,对io仍然不是很了解.不仅是io,还有网络,还有多线程.shame!!! 接下来的日子里,先搞多线程,再搞io,再搞网络,半年内一定要完成! 好了,今天终于搞懂了outputS ...

  7. JS里的居民们5-数组(栈)

    编码1(栈顶在最右) 练习如何使用数组来实现栈,综合考虑使用数组的 push,pop,shift,unshift操作 基于代码,实现如按钮中描述的功能: 实现如阅读材料中,队列的相关进栈.退栈.获取栈 ...

  8. mysql索引是什么?索引结构和使用详解

    索引是什么 mysql索引: 是一种帮助mysql高效的获取数据的数据结构,这些数据结构以某种方式引用数据,这种结构就是索引.可简单理解为排好序的快速查找数据结构.如果要查“mysql”这个单词,我们 ...

  9. 项目经验:GIS<MapWinGIS>建模第四天

    实现了查询,与定位功能

  10. Android Studio修改app图标

    1.将下载好的图片放到app\src\main\res\drawable目录下 2.在AndroidManifest.xml下加入一句 android:icon="@drawable/??? ...