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 ...
随机推荐
- 06-自定义Attribute标记案例
自定义Attribute: 1)Attribute都从System. Attribute类继承,类名一般以Attribute结尾 2) 标记类的用途—AttributeUsage标记(标记的标记):A ...
- Socket服务端口长连接最多能支持多少?
答案是无限的.视服务端的资源而不同. 以前一直认为服务端在Accept客户端连接后,会开启一个新的端口与客户端建立链路,但这是错误的.事实上,一个连路是由Server IP+server Port + ...
- SQL语句添加删除修改字段及一些表与字段的基本操作
用SQL语句添加删除修改字段 1.增加字段 alter table docdsp add dspcode char(200)2.删除字段 ALTER TABLE table_NA ...
- DIV布局之道一:DIV块的水平并排、垂直并排
DIV布局网页元素的方式主要有三种:平铺(并排).嵌套.覆盖(遮挡).本文先讲解平铺(并排)方式. 1.垂直平铺(垂直排列) 请看如下代码 CSS部分: CSS Code复制内容到剪贴板 .lay1{ ...
- JDBC使用sql语句
JDBC---连接数据库 java与数据库连接需要驱动,这个驱动则是JDBC,连接的时候需要ip+端口号+dbname 还要用户名和密码 改java文件的编码方式--在项目名点右键属性----把编码方 ...
- 学习OpenSeadragon之三 (覆盖层Overlayer的使用)
Overlayer(覆盖层)是一个很重要的机制,它可以在可缩放图片上显示额外的信息. 1.简单应用 以下是我做出的一个小例子: 看这小老鼠头部的红色框内的部分就是一个分离出来的overlay. 介绍一 ...
- PDO封装函数
header("Content-type: text/html; charset=utf-8"); /** * 初始化 pdo 对象实例 * @param bool $newins ...
- Ubuntu下搭建本地WordPress站点
想在本地搭建WordPress博客站点作测试用?本教程一步一步教您在Linux上搭建一个LAMP(Linux, Apache, MySQL, PHP)服务器并部署WordPress博客. 请注意在复制 ...
- php如何做数据库攻击
PHP mysql_real_escape_string() 函数 PHP MySQL 函数 定义和用法 mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的 ...
- 关于多本小说站的SEO—从”易读中文网”获得的心得体会
从目前国内的网站流量来说,电影站,小说站,游戏站等的流量占总流量的比例还是很高的,许多站长把目光投入到了这几个方面,本文就着重来说对于小说站,尤其是多本小说站的SEO心得体会! 对于小说站来说,只要排 ...