用面向对象的方式去连接数据库
来源:互联网 发布:海水无机氮数据 编辑:程序博客网 时间:2024/05/16 10:55
JAVA 连接 mysql 数据库
通常在程序中进行增删改查时,连接并对数据库进行操作的步骤为:
1、建立数据源
2、导入用到的包
3、加载驱动程序
4、创建与数据库的连接
5、创建语句对象
6、编写具体的SQL语句
7、执行具体的SQL语句
8、处理数据
9、关闭对象
10、处理异常
下面看一个简单的例子
public void select()
{
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
String user = "root" ;//用户名是root
String password = "root";//密码是root
String driverName = "com.mysql.jdbc.Driver";
String conStr = "jdbc:mysql://localhost:3306/db";//db是数据库的名字
try{
Class.forName(driverName);
con = DriverManager.getConnection(conStr,user,password);
stmt = con.createStatement();
String sql = "select * from table";
rs = stmt.executeQuery(sql);
while(rs.next())
{
System.out.println(rs.getString(1));
}
}catch()
{}
finally
{
if(rs!=null){
rs.close();
stmt.close();
con.close();
}
}
以上程序能满足要求,但是如果每个增删改查都要按这个步骤走下来是不是很繁琐?重复代码太多
下面进行简化,单独定义一个类,把重复代码放入类中。下面看例子
package bean;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DBBean {
private Connection con = null;
private Statement stmt = null;
private ResultSet rs = null;
private static final String DRIVER = "com.mysql.jdbc.Driver";
private static final String URL = "jdbc:mysql://localhost:3306/db"; //db 是具体数据库的名字
private static final String USER = "root";
private static final String PASSWORD = "root";
public DBBean()
{
String conStr = "jdbc:mysql://localhost:3306/db";
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
con = DriverManager.getConnection(conStr, USER, PASSWORD);
} catch (SQLException e) {
e.printStackTrace();
}
try {
stmt = con.createStatement();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}*/
/**
* 执行有结果集返回的SQL ,select
* @throws SQLException
*/
public ResultSet executeQuery(String sql) throws SQLException
{
return stmt.executeQuery(sql);
}
/**
* 执行增删改操作的SQL
* @throws SQLException
*/
public int executeUpdate(String sql) throws SQLException
{
return stmt.executeUpdate(sql);
}
/**
* 关闭对象
*/
public void close()
{
try {
if(rs!=null){
rs.close();
stmt.close();
con.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
这样再用select函数时就可以这样写
public void select()
{
ResultSet rs=null;
DBBean db = null;
try {
db=new DBBean();
String sql = "select * from student";
rs = db.executeQuery(sql);
while(rs.next())
{
System.out.print(rs.getString(1)+" ");
System.out.print(rs.getString(2)+" ");
System.out.print(rs.getString(3)+ " ");
System.out.println("\n");
}
} catch (Exception e) {
e.printStackTrace();
}finally{
db.close();
}
}
以上就是面向对象的方式连接数据库,不知道大家还发现什么不好的问题没?
仔细观察发现,虽然公用方法定义在DBBean中了。但是连接数据库时db还是写死的
当想要连接具体的数据库时,就会出问题。下面是改进方案
package bean;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DBBean {
private Connection con = null;
private Statement stmt = null;
private ResultSet rs = null;
private static final String DRIVER = "com.mysql.jdbc.Driver";
private static final String USER = "root";
private static final String PASSWORD = "root";
public DBBean(String db) //增加一个参数 传入具体的数据库
{
String conStr = "jdbc:mysql://localhost:3306/"+db;
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
con = DriverManager.getConnection(conStr, USER, PASSWORD);
} catch (SQLException e) {
e.printStackTrace();
}
try {
stmt = con.createStatement();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}*/
/**
* 执行有结果集返回的SQL ,select
* @throws SQLException
*/
public ResultSet executeQuery(String sql) throws SQLException
{
return stmt.executeQuery(sql);
}
/**
* 执行增删改操作的SQL
* @throws SQLException
*/
public int executeUpdate(String sql) throws SQLException
{
return stmt.executeUpdate(sql);
}
/**
* 关闭对象
*/
public void close()
{
try {
if(rs!=null){
rs.close();
stmt.close();
con.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
这样再调用select函数就变成这样
public void select()
{
ResultSet rs=null;
DBBean db = null;
try {
db=new DBBean("book"); //写入具体连接的数据库
String sql = "select * from student";
rs = db.executeQuery(sql);
while(rs.next())
{
System.out.print(rs.getString(1)+" ");
System.out.print(rs.getString(2)+" ");
System.out.print(rs.getString(3)+ " ");
System.out.println("\n");
}
} catch (Exception e) {
e.printStackTrace();
}finally{
db.close();
}
}
- 用面向对象的方式去连接数据库
- php PDO面向对象的方式连接数据库
- 采用面向对象的方式去拆任务
- PHP不能用面向对象方式连接数据库是什么原因
- PHP面向对象数据库的连接
- OrmLite-更符合面向对象的数据库操作方式
- 用面向对象的编程思想去写js
- 如何去面向对象的编程
- mysqli面向对象高效连接数据库
- 没头没尾--项目开发笔记:面向业务的用户界面与面向对象的数据库如何连接
- 面向对象的思维方式
- 面向对象的思维方式
- 面向对象的思维方式
- 面向对象的思维方式
- 面向对象的思维方式
- 连接数据库的方式
- 数据库的连接方式
- 连接数据库的方式
- 送给北京地铁边上加班的程序员们(自驾也别疲劳驾驶哦)
- 真的过得飞快的色调
- 【Java】-利用天气查询API实现天气预报小窗体应用程序(一)
- myeclipse进入Myeclipse configuration center 如何关闭
- 一点小技巧,但是很实用--------R数据的保存与加载
- 用面向对象的方式去连接数据库
- 两个无线路由器桥接,电信ITV使用无线连接
- android ADB常用的命令
- 【.NET基础】——ShadowCopy And DeepCopy
- java5线程池详解与Executors类创建不同线程池的用法
- 黄爱东西的书里说,女人想到做爱都是要脱光了身子的
- 关于12864的使用
- MongoDB 的配置项在配置文件中进行配置和数据库的备份与恢复
- 杭电bfs 水题1241 Oil Deposits - 油田 详解 + 分析