JDBC编程之优化
1、创建 dbconfig.properties
driver=com.mysql.jdbc.Driver
dburl=jdbc\:mysql\://localhost\:3306/mytest
user=root
password=
2、创建 ConnectionFactory.java
package com.test.util; import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Properties; public class ConnectionFactory { private static String driver;
private static String dburl;
private static String user;
private static String password; private static final ConnectionFactory factory = new ConnectionFactory(); private Connection conn; static{
Properties prop = new Properties();
try{
InputStream in = ConnectionFactory.class.getClassLoader()
.getResourceAsStream("dbconfig.properties");
prop.load(in);
}catch(Exception e){
System.out.println("配置文件读取错误");
}
driver = prop.getProperty("driver");
dburl = prop.getProperty("dburl");
user = prop.getProperty("user");
password = prop.getProperty("password"); }
private ConnectionFactory(){ }
public static ConnectionFactory getInstance(){
return factory;
}
public Connection makeConnection(){
try{
Class.forName(driver);
conn = DriverManager.getConnection(dburl,user,password);
}catch(Exception e){
e.printStackTrace();
}
return conn;
}
}
3、抽象类 IdEntity.java
package com.test.entity; public abstract class IdEntity { protected int id;
public int getId(){
return id;
}
public void setId(int id){
this.id = id;
}
}
4、User.java 继承抽象类IdEntity.java
package com.test.entity; public class User extends IdEntity {
private String name;
private String password; public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User [name=" + name + ", password=" + password + ", id=" + id
+ "]";
} }
5、Address.java 继承抽象类IdEntity.java
package com.test.entity; public class Address extends IdEntity{ private String address;
private int userid;
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getUserid() {
return userid;
}
public void setUserid(int userid) {
this.userid = userid;
}
@Override
public String toString() {
return "Address [address=" + address + ", userid=" + userid + ", id="
+ id + "]";
} }
6、UserDao.java 定义接口
package com.test.dao; import java.sql.Connection;
import java.sql.SQLException; import com.test.entity.User; public interface UserDao { public void save(Connection conn,User user)throws SQLException; public void update(Connection conn,int id,User user) throws SQLException; public void delete(Connection conn,User user)throws SQLException; }
7、实现UserDao接口,UserDaoImpl.java
package com.test.dao.impl; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException; import com.test.dao.UserDao;
import com.test.entity.User; public class UserDaoImpl implements UserDao{ @Override
public void save(Connection conn, User user) throws SQLException {
PreparedStatement ps = conn.prepareCall("insert into person(name,password) values(?,?)");
ps.setString(, user.getName());
ps.setString(, user.getPassword());
ps.execute();
} @Override
public void update(Connection conn, int id, User user) throws SQLException {
String updateSql ="update person set name= ?,password=? where id =?";
PreparedStatement ps = conn.prepareStatement(updateSql);
ps.setString(, user.getName());
ps.setString(, user.getPassword());
ps.setInt(, id);
ps.execute();
} @Override
public void delete(Connection conn, User user) throws SQLException {
PreparedStatement ps = conn.prepareStatement("delete from uesr where id = ?");
ps.setInt(, user.getId());
ps.execute();
} }
8、测试类 UserDaoTest.java
package com.test.testclass; import java.sql.Connection;
import java.sql.SQLException; import com.test.dao.UserDao;
import com.test.dao.impl.UserDaoImpl;
import com.test.entity.User;
import com.test.util.ConnectionFactory; public class UserDaoTest { public static void main(String[] args) {
Connection conn = null; try {
conn = ConnectionFactory.getInstance().makeConnection();
conn.setAutoCommit(false);
UserDao userDao = new UserDaoImpl();
User tom = new User();
tom.setName("tom");
tom.setPassword("");
userDao.save(conn, tom);
conn.commit();
} catch (SQLException e) {
try{
conn.rollback();
}catch(Exception e2){
e2.printStackTrace();
}
e.printStackTrace();
} }
}
JDBC编程之优化的更多相关文章
- 优化JDBC编程-多提提意见
优化JDBC编程这是我根据MS SQL SERVER 2000 JDBC DRIVER HELP,并参考其它资料整理而成.ms的这个帮助文件实在有失大家风范,示例代码很.....有兴趣者可以去下载ht ...
- JDBC编程之程序优化
-----------------siwuxie095 首先下载 MySQL 的 JDBC 驱动,下载链接: https://dev.mysql.com/downloads/connector/j/ ...
- JDBC编程之预编译SQL与防注入式攻击以及PreparedStatement的使用教程
转载请注明原文地址: http://www.cnblogs.com/ygj0930/p/5876951.html 在JDBC编程中,常用Statement.PreparedStatement 和 ...
- JDBC编程之预编译SQL与防注入
在JDBC编程中,常用Statement.PreparedStatement 和 CallableStatement三种方式来执行查询语句,其中 Statement 用于通用查询, PreparedS ...
- 单独使用jdbc编程问题总结(一)
在学习Mybatis之前,我们先来回顾JDBC编程的相关知识.在此基础上深入的学习Mybatis框架.如有错误,敬请指正. (一)首先我们既然要使用jdbc,当然是要操作数据库了.创建一个名为:myb ...
- 浅谈JDBC编程
一.概述 1.为什么要用JDBC 数据库是程序不可或缺的一部分,每一个网站和服务器的建设都需要数据库.对于大多数应用程序员(此处不包含数据库开发人员)来说,我们更多的不是在DBMS中对数据库进行操纵, ...
- 02Mybatis_原生态jdbc编程中的问题总结——从而引生出为什么要用Mybatis
我们先用jdbc去编写一个例子: 第一步:建表 /* SQLyog v10.2 MySQL - 5.1.72-community : Database - mybatis ************** ...
- JDBC编程的方式
JDBC编程的方式,我们以一个简单的查询为例,使用JDBC编程,如下: 从上面可以看出JDBC编程一般要如下步骤: 1. 加载数据库驱动 2. 创建并获取数据库连接 3. 创建jdbc stateme ...
- JAVA基础知识之JDBC——编程步骤及执行SQL
JDBC编程步骤 下面以mysql数据库为例, 1.加载驱动 首先需要下载数据库的驱动jar文件,并且在eclipse包中加入到class path中去, 例如mysql的驱动文件 mysql-con ...
随机推荐
- Array.asList:数组转list时你一定要知道的“陷阱”!
最近开发中,业务上处理,经常用到asList方法,这让我不经想起了它的很多容易让人犯错的地方或者误解的地方,所以就想抽出时间来,整理一下,和大家分享出来,深夜了,话不多说,主要以代码为主,简易的代码, ...
- 常用PC服务器LSI阵列卡配置
通常,我们使用的DELL/HP/IBM三家的机架式PC级服务器阵列卡是从LSI的卡OEM出来的,DELL和IBM两家的阵列卡原生程度较高,没有做太多封装,可以用原厂提供的阵列卡管理工具进行监控:而HP ...
- DBMS_STATS常用方法(收集oracle信息)
–收集数据库信息EXEC DBMS_STATS.gather_database_stats;EXEC DBMS_STATS.gather_database_stats(estimate_percent ...
- 腾讯云升级到PHP7
1.删除之前安装的PHP yum remove php* php-common 2.安装yum源 rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel ...
- 纯 CSS 创建各种不同的图形形状
使用代码 矩形 .rectangle { width: 250px; height: 150px; background-color: #6DC75F; } <div></div&g ...
- MS SQL Sever数据库还原
一.右键 数据库 二.点击 [还原文件和文件组(E)...],弹出下图的窗口界面 1.在 目标数据库 的输入框填写你的数据库名(注意这是新建一个数据库供还原使用,不能还原到已有的数据库) 三.点击[源 ...
- Design Pattern ——Factory Method&Abstract Factory
今天开始复习设计模式.设计模式相关的资料有很多,概念性的东西就画个图就可以了.把关注点放在例子上,设计模式还是要使用中才有感受. 从Factory Method&Abstract Factor ...
- HTTP Content-type 对照表
文件扩展名 Content-Type(Mime-Type) 文件扩展名 Content-Type(Mime-Type) .*( 二进制流) application/octet-stream .tif ...
- 关于JavaScript对象的键和值
一个JavaScript对象由键和值组成. 当一个给定键的值被设置为一个字符串.布尔值.数字.数组或对象时,我们把这个键称为属性. 当把键设置为函数时,我们把它叫做方法.
- java制作简单的坦克大战
坦克大战是我们小时候玩红白机时代的经典游戏,看到有不少小伙伴都使用各种语言实现了一下,手痒痒,也使用java做的一个比较简单的坦克大战,主要面向于学过Java的人群,与学了一段时间的人,有利于面向对象 ...