JDBC(4)PreparedStatement
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的更多相关文章
- JDBC(4)—Preparedstatement
功能:使用PreparedStatement操作数据表,其功能与Statement一致,但为何要使用PreparedStatement呢. 一.原因: 1.使用sql语句进行操作数据表时,需要拼写sq ...
- Java基础(三十二)JDBC(2)连接数据库
一.连接数据库的过程 连接数据库的过程:加载数据库驱动程序,不过只需在第一次访问数据库时加载一次,然后在每次访问数据库时创建一个Connection实例,然后执行操作数据库的SQL语句,并返回执行结果 ...
- 跟着刚哥学习Spring框架--JDBC(六)
Spring的JDBC框架 Spring JDBC提供了一套JDBC抽象框架,用于简化JDBC开发. Spring主要提供JDBC模板方式.关系数据库对象化方式.SimpleJdbc方式.事务管理来简 ...
- JDBC 学习笔记(六)—— PreparedStatement
1. 引入 PreparedStatement PreparedStatement 通过 Connection.createPreparedStatement(String sql) 方法创建,主要用 ...
- 浅谈JDBC(一)
一.JDBC技术引言 1.什么是JDBC技术 提供了一套接口规范,利用java代码进行数据库操作. 2.JDBC技术的核心思想 对于程序员来说,代码访问数据库分为三个步骤:1.通过数据库的账号密码.2 ...
- JDBC(一)之细说JDBC
Properties info = new Properties();//要参考数据库文档 info.setProperty("user", "root"); ...
- JDBC(三)数据库连接池(DBCP、C3P0)
前言 这段时间状态有一点浮躁,希望自己静下心来.还有特别多的东西还没有学懂.需要学习的东西非常的多,加油! 一.JDBC复习 Java Data Base Connectivity,java数据库连接 ...
- JAVA基础-JDBC(一)
一.JDBC的简介 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,由与各种数据库都有着一套自己的规范,JAVA对其操 ...
- JDBC(四)
1 Apache DBUtils框架 1.1 DBUtils简介 commons-dbutils是Apache组织提供的一个开源JDBC工具类库,它是对JDBC的简单封装,学习成本非常低,并且使用db ...
随机推荐
- C#语言-06.XML
a. XML:称为可扩展标记性语言,它主要用于描述数据 i. 特点: . XML 中用于描述数据的各个节点可以自由扩展 . XML 文件中的节点区分大小写 . XML 中的每对标记通常被称为节点,它们 ...
- 启动memcache 服务器端
# memcached -d -m 10 -u root -p 11211 -c 256 -P /tmp/memcached.pid -d选项是启动一个守护进程, -m是分配给Memcache使用的内 ...
- JSON与null
org.json.JSONObject orgJSON = new org.json.JSONObject(); // The method put(String, Collection) is am ...
- SZU4
#include <iostream> #include <string> #include <cstring> #include <cstdlib> ...
- 用户登录时,获取用户ip地址
使用django来获取用户访问的IP地址,如果用户是正常情况下通过request.META['REMOTE_ADDR'] 可以获得用户的IP地址.但是有些网站服务器会使用ngix等代理http,或者 ...
- 最新版PMBOK项目管理的五大过程组和十大知识领域
PMBOK五大过程组是:启动过程.规划过程.执行过程.监控过程.收尾过程. 各用一句话概括项目管理知识体系五大过程组: 1.启动过程组:作用是设定项目目标,让项目团队有事可做: 2.规划过程组:作用是 ...
- python apscheduler的使用
from apscheduler.schedulers.blocking import BlockingSchedulerfrom datetime import datetime def my_jo ...
- jquery解析XML在IE7下不兼容的问题
jquery在解析XML内容的时候在IE7下无法显示,是因为数据格式的问题,解决办法如下: $.ajax({ type:"POST", url:&quo ...
- 批量删除微博的js代码
清空微博,网上找了一段js代码,试了下,还行. var fileref=document.createElement('script') fileref.setAttribute("type ...
- Python爬虫教程-23-数据提取-BeautifulSoup4(一)
Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据,查看文档 https://www.crummy.com/software/BeautifulSoup/bs4/doc. ...