package com.jdbc;
import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.mysql.jdbc.Driver;
public class JdbcUtils {
/*
// 定义数据库的用户名
private final String USERNAME = "root";
// 定义数据库的密码
private final String PASSWORD = "123456";
// 定义数据库的驱动信息
private final String DRIVER = "com.mysql.jdbc.Driver";
// 定义访问数据库的地址
private final String URL = "jdbc:mysql://localhost:3306/mydb";
*/
// 定义数据库的驱动信息
private final String DRIVER = "org.sqlite.JDBC";
// 定义访问数据库的地址
private final String URL = "jdbc:sqlite:/Users/xinxingwu/mydb.db";
// 定义访问数据库的连接
private Connection connection;
// 定义sql语句的执行对象
private PreparedStatement pstmt;
// 定义查询返回的结果集合
private ResultSet resultSet;
// 实现批处理的功能
private Statement stmt;
public JdbcUtils() {
// TODO Auto-generated constructor stub
try {
Class.forName(DRIVER);
System.out.println("注册驱动成功!!");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
System.out.println("注册驱动失败!!");
}
}
// 定义获得数据库的连接
public Connection getConnection() {
try {
// 如果是MySQL则采用 connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
connection = DriverManager.getConnection(URL);
} catch (Exception e) {
// TODO: handle exception
System.out.println("Connection exception !");
}
return connection;
}
/** 实现批处理删除
* @param sql
* @return
* @throws SQLException
*/
public boolean deleteByBatch(String[] sql) throws SQLException{
boolean flag = false;
stmt = connection.createStatement();
if (sql!=null) { //判断数组是否为空,不能用length来判断,否则可能会报空指针异常。
for(int i = 0 ; i<sql.length ; i++){
stmt.addBatch(sql[i]);
}
int[] count = stmt.executeBatch();
if (count!=null) {
flag = true;
}
}
return flag;
}
/**
* 完成对数据库标的增加删除和修改的操作
*
* @param sql
* @param params
* @return
* @throws SQLException
*/
public boolean updateByPreparedStatement(String sql, List<Object> params)
throws SQLException {
boolean flag = false;
int result = -1;// 表示当用户执行增加删除和修改的操作影响的行数
int index = 1; // 表示 占位符 ,从1开始
pstmt = connection.prepareStatement(sql);
if (params != null && !params.isEmpty()) {
for (int i = 0; i < params.size(); i++) {
pstmt.setObject(index++, params.get(i)); // 填充占位符
}
}
result = pstmt.executeUpdate();
flag = result > 0 ? true : false;
return flag;
}
/**
* 查询返回单条记录
*
* @param sql
* @param params
* @return
* @throws SQLException
*/
public Map<String, Object> findSimpleResult(String sql, List<Object> params)
throws SQLException {
Map<String, Object> map = new HashMap<String, Object>();
pstmt = connection.prepareStatement(sql);
int index = 1;
if (params != null && !params.isEmpty()) {
for (int i = 0; i < params.size(); i++) {
pstmt.setObject(index++, params.get(i));
}
}
resultSet = pstmt.executeQuery(); // 返回查询结果
ResultSetMetaData metaData = pstmt.getMetaData(); // 获取 结果中,一行所有列的结果
int cols_len = metaData.getColumnCount(); // 获得列的总数
while (resultSet.next()) {
for (int i = 0; i < cols_len; i++) {
String col_name = metaData.getColumnName(i + 1); // 获得第i列的字段名称
Object col_value = resultSet.getObject(col_name);// 返回 第i列的内容值
if (col_value == null) {
col_value = "";
}
map.put(col_name, col_value);
}
}
return map;
}
/**
* 查询返回多条记录
*
* @param sql
* @param params
* @return
* @throws SQLException
*/
public List<Map<String, Object>> findMoreResult(String sql,
List<Object> params) throws SQLException {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
pstmt = connection.prepareStatement(sql);
int index = 1; // 表示占位符
if (params != null && !params.isEmpty()) {
for (int i = 0; i < params.size(); i++) {
pstmt.setObject(index++, params.get(i));
}
}
resultSet = pstmt.executeQuery(); // 返回查询结果集合
ResultSetMetaData metaData = resultSet.getMetaData(); // 获得列的结果
while (resultSet.next()) {
Map<String, Object> map = new HashMap<String, Object>();
int cols_len = metaData.getColumnCount(); // 获取总的列数
for (int i = 0; i < cols_len; i++) {
String col_name = metaData.getColumnName(i + 1); // 获取第 i列的字段名称
// ,列计算从1开始
Object col_value = resultSet.getObject(col_name); // 获取第i列的内容值
if (col_value == null) {
col_value = "";
}
map.put(col_name, col_value);
}
list.add(map);
}
return list;
}
/**
* 查询返回单个JavaBean(使用java反射机制)
*
* @param sql
* @param params
* @param cls
* @return
* @throws Exception
*/
public <T> T findSimpleRefResult(String sql, List<Object> params,
Class<T> cls) throws Exception {
T resultObject = null;
int index = 1; // 占位符
pstmt = connection.prepareStatement(sql);
if (params != null && !params.isEmpty()) {
for (int i = 0; i < params.size(); i++) {
pstmt.setObject(index++, params.get(i)); // 填充占位符
}
}
resultSet = pstmt.executeQuery(); // 获取查询结果
ResultSetMetaData metaData = resultSet.getMetaData(); // 获取列的信息
int cols_len = metaData.getColumnCount(); // 获取总的列数
while (resultSet.next()) {
// 通过反射机制创建实例
resultObject = cls.newInstance(); // java反射机制
for (int i = 0; i < cols_len; i++) {
String col_name = metaData.getColumnName(i + 1); // 获取第i列的名称
Object col_value = resultSet.getObject(col_name); // 获取第i列的值
if (col_value == null) {
col_value = "";
}
Field field = cls.getDeclaredField(col_name);
field.setAccessible(true);// 打开 JavaBean的访问 private权限
field.set(resultObject, col_value);
}
}
return resultObject;
}
/** 查询返回多个JavaBean(通过java反射机制)
* @param sql
* @param params
* @param cls
* @return
* @throws Exception
*/
public <T> List<T> findMoreRefResult(String sql, List<Object> params,
Class<T> cls) throws Exception {
List<T> list = new ArrayList<T>();
int index = 1; //占位符
pstmt = connection.prepareStatement(sql);
if (params != null && !params.isEmpty()) {
for (int i = 0; i < params.size(); i++) {
pstmt.setObject(index++, params.get(i));
}
}
resultSet = pstmt.executeQuery(); // 返回查询结果集合
ResultSetMetaData metaData = resultSet.getMetaData(); // 返回列的信息
int cols_len = metaData.getColumnCount(); // 结果集中总的列数
while (resultSet.next()) {
// 通过反射机制创建一个java实例
T resultObject = cls.newInstance();
for (int i = 0; i < cols_len; i++) {
String col_name = metaData.getColumnName(i + 1); // 获得第i列的名称
Object col_value = resultSet.getObject(col_name); // 获得第i列的内容
if (col_value == null) {
col_value = "";
}
Field field = cls.getDeclaredField(col_name);
field.setAccessible(true); // 打开JavaBean的访问private权限
field.set(resultObject, col_value);
}
list.add(resultObject);
}
return list;
}
/**关闭数据库访问
* @throws SQLException
*/
public void releaseConn(){
if (resultSet!=null) {
try {
resultSet.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
if(stmt!=null){
try {
stmt.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
if (pstmt!=null) {
try {
pstmt.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
非常实用的java web (servlet, jsp) 例子 (非常适合java web初学者)。 该例子麻雀虽小,五庄俱全,非常适合初学java web的初学者,通过该例子的学习可以很快地入门。 积分给得可能高了一下,但是,第一绝对物有所值,第二不怕各位笑话,本来囊中羞涩,也想赚点积分。不好意思啦,谢谢各位
资源推荐
资源详情
资源评论
收起资源包目录
MiniWebSystem.rar (56个子文件)
MiniWebSystem
.settings
org.eclipse.wst.jsdt.ui.superType.name 6B
org.eclipse.wst.common.project.facet.core.xml 252B
org.eclipse.wst.common.component 477B
org.eclipse.wst.jsdt.ui.superType.container 49B
.jsdtscope 500B
org.eclipse.jdt.core.prefs 364B
src
Test
DataGenerate
DataPath.java 126B
DataGenerating.java 1KB
DbClass.java 498B
DataBaseTest.java 901B
com
product
ProductDao.java 3KB
ProductAction.java 7KB
ProductService.java 471B
jdbc
JdbcUtils.java 8KB
filter
MyFilter.java 1KB
logout
LogoutAction.java 2KB
register
RegisterDao.java 905B
RegisterService.java 156B
RegisterAction.java 2KB
util
DividePage.java 1KB
UUIDTools.java 320B
login
LoginAction.java 2KB
LoginService.java 122B
LoginDao.java 817B
.project 2KB
WebRoot
viewProduct.jsp 2KB
META-INF
MANIFEST.MF 36B
WEB-INF
web.xml 3KB
classes
Test
DataGenerate
DataPath.class 386B
DbClass.class 704B
DataGenerating.class 2KB
DataBaseTest.class 1KB
com
product
ProductService.class 630B
ProductAction.class 7KB
ProductDao.class 4KB
jdbc
JdbcUtils.class 7KB
filter
MyFilter.class 2KB
logout
LogoutAction.class 2KB
register
RegisterService.class 231B
RegisterDao.class 1KB
RegisterAction.class 2KB
util
UUIDTools.class 664B
DividePage.class 1KB
login
LoginAction.class 3KB
LoginDao.class 1KB
LoginService.class 215B
lib
commons-fileupload-1.3.2.jar 69KB
commons-io-2.5.jar 204KB
mysql-connector-java-5.1.25-bin.jar 829KB
sqlite-jdbc-3.8.11.2.jar 5.32MB
main.jsp 7KB
index.jsp 2KB
register.jsp 2KB
addProduct.jsp 2KB
.mymetadata 312B
.classpath 529B
.myeclipse
共 56 条
- 1
资源评论
wuxinxing1981
- 粉丝: 3
- 资源: 30
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功