- 浏览: 57590 次
- 来自: 北京
最新评论
-
泛泛evil:
总结的很好,谢谢分享
JavaScript -
wanxkl:
哇!总结的太好了。。凤哥哥,你好强大啊。。请问您跟凤姐什么关系 ...
css应用
jdbc操作数据库插入、更新、删除、查找
mysql数据库:
public boolean insertFrom(Person per){
boolean flag = false;
Connection conn = null;
conn = JdbcCon.jdbcConMysql();
PreparedStatement ps = null;
String sql = "insert into person(name,birthday,sex) values(?,?,?)";
try {
ps = conn.prepareStatement(sql);
ps.setString(1, per.getName());
ps.setDate(2, per.getBirthday());
ps.setInt(3, per.getSex());
int i = ps.executeUpdate();
if(i != 0){
flag = true;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
JdbcCon.closeAll(null, ps, conn);
}
return flag;
}
public boolean updateFrom(int id,int sex,String name){
boolean flag = false;
Connection conn = null;
conn = JdbcCon.jdbcConMysql();
String sql = "update person set sex=?,name=? where id=?";
PreparedStatement ps = null;
try {
ps = conn.prepareStatement(sql);
ps.setInt(1, sex);
ps.setString(2, name);
ps.setInt(3, id);
int i = ps.executeUpdate();
if(i != 0){
flag = true;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
JdbcCon.closeAll(null, ps, conn);
}
return flag;
}
public boolean deleteFrom(int id){
boolean flag = false;
Connection conn = null;
conn = JdbcCon.jdbcConMysql();
PreparedStatement ps = null;
String sql= "delete from person where id=?";
try {
ps = conn.prepareStatement(sql);
ps.setInt(1, id);
int i = ps.executeUpdate();
if(i != 0){
flag = true;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
JdbcCon.closeAll(null, ps, conn);
}
return flag;
}
public Person selectFrom(String name,int id){
Person per = null;
Connection conn = null;
conn = JdbcCon.jdbcConMysql();
String sql = "select * from person where id=? and name=?";
PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = conn.prepareStatement(sql);
ps.setInt(1, id);
ps.setString(2, name);
rs = ps.executeQuery();
while(rs.next()){
per = new Person();
per.setBirthday(rs.getDate("birthday"));
per.setId(rs.getInt("id"));
per.setName(rs.getString("name"));
per.setSex(rs.getInt("sex"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
JdbcCon.closeAll(rs, ps, conn);
}
return per;
}
Oracle数据库:
public boolean insertStu(Stu stu){
boolean flag = false;
Connection conn = null;
Statement st = null;
StringBuilder sql = new StringBuilder();
sql.append("insert into stu(id,stu_num,stu_name) values(seq_stu_id.nextval,'");
sql.append(stu.getStu_num());
sql.append("','");
sql.append(stu.getStu_name());
sql.append("')");
conn = DBConn.getConn();
try {
st = conn.createStatement();
int i = st.executeUpdate(sql.toString());
if(i != 0){
flag = true;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConn.closeAll(null, st, conn);
}
return flag;
}
public static void main(String[] args) {
Stu stu = new Stu();
stu.setStu_name("aaabbbbccc");
stu.setStu_num("6543211");
StuDao dao = new StuDao();
System.out.println(dao.insertStu(stu));
}
封装
public class JdbcCon {
private static String jdbcDriver = "";
private static String jdbcUrl = "";
private static String jdbcUser = "";
private static String jdbcpasswd = "";
static {
InputStream is = null;
try {
is = JdbcCon.class.getClassLoader().getResourceAsStream("database.properties");
Properties p = new Properties();
p.load(is);
jdbcDriver = p.getProperty("jdbcDriver");
jdbcUrl = p.getProperty("jdbcUrl");
jdbcUser = p.getProperty("jdbcUser");
jdbcpasswd = p.getProperty("jdbcpasswd");
// System.out.println(p.getProperty("jdbcDriver"));
// System.out.println(p.getProperty("jdbcUrl"));
// System.out.println(p.getProperty("jdbcUser"));
// System.out.println(p.getProperty("jdbcpasswd"));
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(is != null){
is.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static Connection jdbcConMysql(){
Connection conn = null;
try {
Class.forName(jdbcDriver);
conn = DriverManager.getConnection(jdbcUrl, jdbcUser, jdbcpasswd);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
public static void closeAll(ResultSet rs,Statement st,Connection conn){
try {
if(rs != null){
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(st != null){
st.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(conn != null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void closeAll(ResultSet rs,PreparedStatement ps,Connection conn){
try {
if(rs != null){
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(ps != null){
ps.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(conn != null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
properties写在src目录下,JdbcCon.class.getClassLoader().getResourceAsStream()默认在src目录下找properties文件
mysql数据库链接参数:
#以下是mysql数据库的配置信息
#jdbcDriver=com.mysql.jdbc.Driver
#jdbcUrl=jdbc:mysql://localhost:3306/change
#jdbcUser=root
#jdbcPasswd=476645144
oracle数据库链接参数:
#以下是oracle数据库的配置信息
#jdbcDriver=oracle.jdbc.driver.OracleDriver
#jdbcUrl=jdbc:oracle:thin:@localhost:1521:ORCL
#jdbcUser=scott
#jdbcPasswd=tiger
批处理四种方式比较。
public boolean regUser(User user){
boolean flag = false;
Connection conn = null;
PreparedStatement ps = null;
String sql = "insert into user(email,passwd,nickname,sex) values(?,?,?,?)";
conn = DBConn.getConn();
try {
ps = conn.prepareStatement(sql);
ps.setString(1, user.getEmail());
ps.setString(2, user.getPasswd());
ps.setString(3, user.getNickname());
ps.setInt(4, user.getSex());
int i = ps.executeUpdate();
if(i != 0){
flag = true;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConn.closeAll(null, ps, conn);
}
return flag;
}
public boolean insertUsersByCom(List<User> list){
boolean flag = true;
Connection conn = null;
Statement st = null;
conn = DBConn.getConn();
try {
st = conn.createStatement();
for (User user : list) {
StringBuilder sql = new StringBuilder();
sql.append("insert into user(email,passwd,sex,nickname) values('");
sql.append(user.getEmail());
sql.append("','");
sql.append(user.getPasswd());
sql.append("',");
sql.append(user.getSex());
sql.append(",'");
sql.append(user.getNickname());
sql.append("')");
System.out.println(sql.toString());
int i = st.executeUpdate(sql.toString());
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConn.closeAll(null, st, conn);
}
return flag;
}
public boolean insertUsersByPre(List<User> list){
boolean flag = true;
Connection conn = null;
PreparedStatement ps = null;
String sql = "insert into user(email,passwd,nickname,sex) values(?,?,?,?)";
conn = DBConn.getConn();
try {
ps = conn.prepareStatement(sql);
for (User user : list) {
ps.setString(1, user.getEmail());
ps.setString(2, user.getPasswd());
ps.setString(3, user.getNickname());
ps.setInt(4, user.getSex());
int i = ps.executeUpdate();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConn.closeAll(null, ps, conn);
}
return flag;
}
public boolean insertUsersByStandard(List<User> list){
boolean flag = true;
Connection conn = null;
PreparedStatement ps = null;
String sql = "insert into user(email,passwd,nickname,sex) values(?,?,?,?)";
conn = DBConn.getConn();
try {
ps = conn.prepareStatement(sql);
for (User user : list) {
ps.setString(1, user.getEmail());
ps.setString(2, user.getPasswd());
ps.setString(3, user.getNickname());
ps.setInt(4, user.getSex());
//真正的批处理 在这里并不执行 而是将当前的这条命令 加入到批处理的队列中
ps.addBatch();
}
ps.executeBatch();//执行批处理命令
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConn.closeAll(null, ps, conn);
}
return flag;
}
public static void main(String[] args) {
List<User> list = new ArrayList<User>();
for (int i = 0; i < 10; i++) {
User user = new User();
user.setEmail("xiaowang" + i + "@126.com");
user.setNickname("wang" + i);
user.setPasswd("8787878");
user.setSex(0);
list.add(user);
}
// UserDao dao = new UserDao();
//第一种 调用regUser(User user)插入10条记录 获取连接和statement各10次 sql语句编译和执行各10次 关闭10次
// for (User user : list) {
// dao.regUser(user);
// }
//第二种 调用insertUsersByCom(List<User> list) 获取连接和statement各一次 sql语句编译和执行各10次 关闭一次
// dao.insertUsersByCom(list);
//第三种 调用insertUsersByPre(List<User> list) 获取连接和statement各一次 sql语句编译一次 执行10次 关闭一次
// dao.insertUsersByPre(list);
//第四种 调用insertUsersByStandard(List<User> list) 获取连接和statment sql语句编译执行 关闭都仅有一次
UserDao.getInstance().insertUsersByStandard(list);
}
数据库的事务,把conn的自动提交模式改为手动提交,当两条sql语句都成功完成时才提交,否则都回滚。
public boolean transferMoney(String from,String to,double money){
boolean flag = false;
String sql1 = "update bank set money=money-? where bankcard=?";
String sql2 = "update bank set money=money+? where bankcard=?";
Connection conn = null;
PreparedStatement ps = null;-
conn = DBConn.getConn();
try {
conn.setAutoCommit(false);//将自动提交模式改为手动提交(autoCommit - 为 true 表示启用自动提交模式;为 false 表示禁用自动提交模式)
ps = conn.prepareStatement(sql1);
ps.setDouble(1, money);
ps.setString(2, from);
int i1 = ps.executeUpdate();
ps = conn.prepareStatement(sql2);
ps.setDouble(1, money);
ps.setString(2, to);
int i2 = ps.executeUpdate();
if(i1 != 0 && i2 != 0){
flag = true;
conn.commit();//手动提交
}else{
conn.rollback();//回滚
}
} catch (SQLException e) {
e.printStackTrace();
try {
conn.rollback();//发生一场也回滚
} catch (SQLException e1) {
e1.printStackTrace();
}
} finally {
DBConn.closeAll(null, ps, conn);
}
return flag;
}
单例模式 只能new一次,节省资源省开销,通常在dao包中使用
private NewsDao(){
}
private static NewsDao dao = null;
public static NewsDao getInstance(){
if(dao == null){
dao = new NewsDao();
}
return dao;
}
/**
* @param value:指的是用户输入的邮箱或者是昵称的信息
* @param type :指的是该次验证的字段是哪个字段 如果0代表验证的邮箱 1代表验证的昵称
* @return
* @function:验证用户输入的email或者是昵称是否被占用
*/
public static boolean isOnly(String value,int type){
boolean flag = true;
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
StringBuilder sql = new StringBuilder();
sql.append("select id from user where ");
sql.append(type==0?" email=? ":" nickname=?");
System.out.println(sql.toString());
conn = DBConn.getConn();
try {
ps = conn.prepareStatement(sql.toString());
ps.setString(1, value);
rs = ps.executeQuery();
while (rs.next()) {
flag = false;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConn.closeAll(rs, ps, conn);
}
return flag;
}
/**
* @return
* @function:分页查询最新注册用户的信息
*/
public List<User> getUsersByPag(int startRow,int size){
List<User> list = new ArrayList<User>();
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
String sql = "select * from user order by id desc limit ?,?";
User user = null;
conn = DBConn.getConn();
try {
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while (rs.next()) {
user = new User();
user.setEmail(rs.getString("email"));
user.setAddtime(rs.getDate("addtime"));
user.setId(rs.getInt("id"));
user.setNickname(rs.getString("nickname"));
user.setPasswd(rs.getString("passwd"));
user.setSex(rs.getInt("sex"));
list.add(user);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConn.closeAll(rs, ps, conn);
}
return list;
}
发表评论
-
lucene3.0 例一
2012-09-11 20:18 657package com.lucene;import java. ... -
lucene3.0
2012-09-11 20:15 873全文搜索 核心:创建索引——查询索引--分词器 索引引擎: ... -
分布式存储(转载)
2012-06-05 15:42 1208L1、HTML静态化其实大家都知道,效率最高、消耗最小的 ... -
java设计原则
2012-04-05 16:50 833原则1:DRY(Don't repeat ... -
java静态、动态代理
2012-04-04 18:51 852JAVA的动态代理 代理模式 代理模式是常用的java设计模式 ... -
Hibernate声明事务
2011-09-17 16:25 899事务处理 第一种方式: 首先配置datasoure: ... -
javascript应用3
2011-09-10 15:14 956打开一个新页面:{ <script t ... -
javascript应用2
2011-09-10 15:09 899日期插件的应用:{ <script type=& ... -
javascript应用1
2011-09-10 15:00 976javascript {<!-- 1.j ... -
css应用
2011-09-10 14:59 903CSS 本章目标 1、CSS的定义、优势 2、css的基 ... -
Html
2011-09-10 14:56 928HTML 超链接:{ <a href=”http:/ ... -
jsp、el、jstl.doc
2011-09-10 14:53 1346serlvet和jsp区别和联系 jsp从本质上讲也是s ... -
文件上传步骤
2011-09-10 14:47 767文件上传的简单方法:(原理性的实验) 1. <b ... -
中文乱码问题解决
2011-09-10 14:43 7551. post方式提交的数据 采用request.setCha ... -
事务传播特性与隔离级别
2011-09-10 14:38 805事务传播特性了解事务的几种传播特性 ... -
监听器
2011-09-10 14:36 900监听器概述 1.Listener是Servlet的监听器 ... -
过滤器
2011-09-10 14:35 12521. Servlet过滤器基础 Servlet过滤器是Se ... -
web编程常用配置2
2011-09-10 14:35 720c3p0.jar:C3PO是一个数据库连接池,Hibern ... -
web编程常用配置1
2011-09-10 14:33 987mysql数据库jdbc驱动 jdbcDriver = co ... -
sql练习
2011-09-10 14:28 22711.oracle数据库启动的服 ...
相关推荐
《深入理解JDBC Driver 3.0:聚焦SQL Server JDBC》 在IT行业中,数据库连接是应用程序与数据存储之间的桥梁,而JDBC(Java Database Connectivity)则是Java平台中用于访问数据库的标准API。JDBC Driver 3.0是针对...
SQL Server驱动包是用于Java应用程序通过JDBC(Java Database Connectivity)接口与Microsoft SQL Server数据库进行交互的必备组件。本文将详细介绍这两个重要的驱动文件——sqljdbc.jar和sqljdbc4.jar,以及如何...
SQLJDBC和SQLJDBC4是Microsoft为Java应用程序提供的用于连接SQL Server数据库的驱动程序。这两个版本都是JDBC(Java Database Connectivity)驱动,允许Java开发者在应用程序中与SQL Server进行交互。下面将详细介绍...
Spring Data JDBC与JDBC是两种不同的数据库访问方式,它们在Java开发中有着广泛的应用。JDBC(Java Database Connectivity)是Java平台的标准API,用于与各种数据库进行交互。它提供了低级别的数据库操作,如建立...
mysql jdbc 驱动 适用于5.6版本及以下数据库 mysql jdbc 驱动 适用于5.6版本及以下数据库 mysql jdbc 驱动 适用于5.6版本及以下数据库 mysql jdbc 驱动 适用于5.6版本及以下数据库 mysql jdbc 驱动 适用于5.6版本及...
mysql jdbc 驱动 适用于5.7及以上版本数据库 mysql jdbc 驱动 适用于5.7及以上版本数据库 mysql jdbc 驱动 适用于5.7及以上版本数据库 mysql jdbc 驱动 适用于5.7及以上版本数据库 mysql jdbc 驱动 适用于5.7及以上...
在Java编程语言中,JDBC(Java Database Connectivity)是一个核心的API,用于连接Java应用程序与各种类型的数据库。这里我们关注的是两个特定版本的Microsoft SQL Server的JDBC驱动:sqljdbc41.jar和sqljdbc42.jar...
在给定的压缩包文件中,包含了三个不同版本的达梦JDBC驱动,分别是Dm7JdbcDriver16.jar、Dm7JdbcDriver17.jar和Dm7JdbcDriver18.jar。 1. **JDBC驱动介绍**: JDBC是Java中用于与各种数据库进行交互的标准接口,它...
SQL Server 2000 JDBC 是Java编程语言与Microsoft SQL Server 2000数据库进行交互的一种重要方式。JDBC(Java Database Connectivity)是Java API,允许Java应用程序通过Java虚拟机(JVM)与各种数据库建立连接。在...
标题 "Access_JDBC30" 暗示了这是一个与Microsoft Access数据库相关的Java JDBC驱动程序。JDBC(Java Database Connectivity)是Java编程语言中用于连接和操作数据库的标准接口。这个jar包,"Access_JDBC30.jar",...
KingbaseV8 JDBC驱动是连接KingbaseV8数据库的重要组件,允许Java应用程序通过JDBC(Java Database Connectivity)接口与数据库进行交互。JDBC是Java语言中用来规范客户端程序如何访问数据库的应用程序接口,提供了...
在IT行业中,数据库是至关重要的组成部分,而SQL Server作为一款广泛应用的关系型数据库管理系统,它的连接与操作离不开JDBC(Java Database Connectivity)驱动。本篇将详细介绍如何下载和安装sqljdbc4,这是...
Java JDBC(Java Database Connectivity)是Java编程语言中用于与各种数据库进行交互的一组接口和类。它提供了一种标准化的方法,让程序员可以使用SQL语句访问数据库,而无需关心具体的数据库实现细节。在Java应用...
Access的JDBC驱动是Java数据库连接(Java Database Connectivity, JDBC)的一种实现,它允许Java程序与Microsoft Access数据库进行交互。在JDK 1.8之后,Oracle公司不再默认提供对ODBC(Open Database Connectivity...
标题中的"sqljdbc4.jar, sqljdbc41.jar, sqljdbc42.jar"是指Microsoft SQL Server为Java应用程序提供的Java Database Connectivity (JDBC)驱动程序。这些JAR文件是数据库连接的关键,允许Java代码与SQL Server进行...
`sqljdbc`是Microsoft提供的一个驱动程序,使得Java应用程序能够与SQL Server数据库进行交互。在这个场景中,我们关注的是`sqljdbc 3.0`和`4.0`版本,这两个版本都是专门为Java设计的,用于连接SQL Server 2000。 `...
标题中的"sqljdbc42.jar、sqljdbc41.jar 更新日期2017-12-21"指的是Microsoft SQL Server的Java Database Connectivity (JDBC) 驱动的两个不同版本,它们分别对应于Java SE 7和Java SE 8的兼容性。JDBC驱动是Java...
标题“sqljdbc4-3.0.jar”指向的是一个特定版本的Microsoft SQL Server JDBC驱动程序,它是用于在Java应用程序中连接和操作SQL Server数据库的桥梁。这个版本的驱动(3.0)支持与SQL Server 2000的兼容性。 在描述...