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. [转]时序列数据库武斗大会之什么是TSDB

    由于工作上的关系,最近看了一些关于时序列数据库的东西,当然,我所看的也都是以开源方案为主. 趁着这股热劲还没退,希望能整理一些资料出来.如果正好你也有这方面的需求,那么希望这一系列的介绍能够帮助到你. ...

  2. 【Hadoop系列】linux下 root用户免密码登录远程主机 ssh

    SSH原理:[Hadoop系列]linux SSH原理解析 操作环境: CentOS 6.5 操作对象: 用户A主机和远程主机B 正文部分:斜体加粗代表linux指令. linux下 非root用户免 ...

  3. log4j2分层输出日志

    在java mvc框架开发过程中,我们经常的将代码分为类似controller(控制层).service(业务层).rpc(远程接口调用层).dao(数据层)等层级,如果将所有层级的日志全部都打到一个 ...

  4. ajax上传数据

    ---恢复内容开始--- ajax上传数据,(简洁版) 1.上传普通同表单标签内容. 1.获取表单的内容 1. var file=$('#file').val();(放在点击事件后面) 2. var ...

  5. swoole安装

    转自:http://blog.csdn.net/u014207604/article/details/49926207 Windows 下安装 swoole 具体步骤: Swoole,原本不支持在Wi ...

  6. vim lua对齐indent无效

    查了半天,打开命令 :filetype一看是关闭的 filetype detection:ON  plugin:ON  indent:OFF 在vimrc里打开 filetype indent on ...

  7. cssText用法和使用说明

    cssText 本质是什么? cssText 的本质就是设置 HTML 元素的 style 属性值. cssText 怎么用? document.getElementById("d1&quo ...

  8. centos install redis

    1. 下载 [logan@localhost java]$ wget http://download.redis.io/releases/redis-3.2.8.tar.gz2. 解压    [log ...

  9. Java 文件上传与下载、email

    1. 文件上传与下载 1.1 文件上传 文件上传,要点: 前台: 1. 提交方式:post 2. 表单中有文件上传的表单项: <input type="file" /> ...

  10. freebsd默认不是gcc构建

    xunsearch在freebsd上死活装不上,用gcc编译通过. freebsd默认不是gcc编译工程,所以下个gcc ./configure CC=gcc48 编译. 觉得clang编译器不可能有 ...