利用JDBC连接MySql数据库
2008-10-19 20:03
351 查看
[align=center]利用JDBC连接MySql数据库[/align]
在我的日常工作中几乎每个程序都要连接数据库,为了不写大量的重复的连接数据库的代码,我将连接封装到一个类中。这样可以调用该类,填入适当的数据库参数对数据库进行连接,然后再作一系列的查询(选择)和更新(插入、删除、更新)操作。下面是我封装的类的一个简化版本。
/** *//**
* 数据库操作
*/
package database;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
/** *//**
* @author Qutr
*
*/
public class DbConnection
...{
private Connection dbConnection = null;
private Statement selectPro = null; //用于 select 操作
private Statement updatePro = null; //用于 update 操作
private ResultSet dbResultSet = null; //操作 select 结果集
private String driverName;//声明MySql驱动类
private String dbHost;
private String dbPort;
private String dbName;
private String dbUserName;
private String dbPassword;
private String enCoding;
/** *//**
* 实例化DbConnection对象
* @param host 数据库主机(IP)
* @param port 数据库端口
* @param dName 数据库名称
* @param uName 用户名
* @param password 用户密码
*/
public DbConnection(String host, String port, String dName, String uName, String password)
...{
driverName = "com.mysql.jdbc.Driver";
dbHost = host;
dbPort = port;
dbName = dName;
dbUserName = uName;
dbPassword = password;
enCoding = "?useUnicode=true&characterEncoding=gb2312&autoReconnect=true";
}//end DbConnection(...)
/** *//**
* 连接数据库
* @return 连接成功返回true,连接失败返回false
*/
public boolean dbConnection()
...{
StringBuilder urlTem = new StringBuilder();
urlTem.append("jdbc:mysql://");
urlTem.append(dbHost);
urlTem.append(":");
urlTem.append(dbPort);
urlTem.append("/");
urlTem.append(dbName);
urlTem.append(enCoding);
String url = urlTem.toString();
try
...{
Class.forName(driverName).newInstance();
dbConnection = DriverManager.getConnection(url, dbUserName, dbPassword);
return true;
}catch(Exception e)...{
System.err.println("数据库联接失败!");
System.out.println("url = " + url);
e.printStackTrace(); //得到详细的出错消息
return false;
}
}// end dbConnection()
/** *//**
* 执行专门的select操作,注意:在selectSql中的字段和fields中的个数、名称要保持一致
* @param selectSql 用于执行的select语句
* @param fields 要选择的字段
* @return 含有Map的ArrayList,一条记录形成一个Map
*/
public ArrayList dbSelect(String selectSql, ArrayList fields)
...{
ArrayList<Map> selectResult = new ArrayList<Map>();
Map<String, String> recordInfo;
try...{
selectPro = dbConnection.createStatement();//定义Statement对象
dbResultSet = selectPro.executeQuery(selectSql);
while(dbResultSet.next())...{
recordInfo = new HashMap<String, String>();
for(int i = 0; i<fields.size(); ++i)
recordInfo.put((String)fields.get(i), dbResultSet.getString((String)fields.get(i)));
selectResult.add(recordInfo);
}
dbResultSet.close(); //断开结果集
selectPro.close(); //断开Statement对象
}catch(Exception e)...{
System.out.println("选择操作失败");
System.out.println("Sql = " + selectSql);
e.printStackTrace();
}
return selectResult;
}//end dbSelect(...)
/** *//**
* 对数据库执行update,delete或insert操作
* @param sql 要执行操作的SQL语句
* @return 执行成功返回true,失败返回false
*/
public boolean dbUpdate(String sql)
...{
try
...{
updatePro = dbConnection.createStatement(); //定义Statement对象
updatePro.executeUpdate(sql);
updatePro.close();// -------------关闭Statement对象
return true;
}catch(Exception err)...{
System.out.println("数据库操作失败!");
System.out.println("Sql = " + sql);
err.printStackTrace();
return false;
}
}//end dbUpdate(...)
/** *//**
* 关闭数据库连接
* @return 成功返回true, 失败返回false
*/
public boolean closeDatabase()
...{
try...{
if(dbConnection != null)
dbConnection.close();
return true;
}catch (Exception ex)...{
ex.printStackTrace();
return false;
}
}//end closeDatabase()
public static void main(String[] args)
...{
String dbHost = "localhost";
String dbPort = "3306";
String dbName = "test";
String dbUserName = "root";
String dbPassword = "";
DbConnection conn = new DbConnection(dbHost, dbPort, dbName, dbUserName, dbPassword);
boolean bool = conn.dbConnection();
if(!bool)
return;
String selectSql = "select user_name, ad from user_info where age = 23";
ArrayList<String> fieldsList = new ArrayList<String>();
fieldsList.add("user_name");
fieldsList.add("ad");
ArrayList<Map> userInfoList = conn.dbSelect(selectSql, fieldsList);
int infoSize = userInfoList.size();
String userName;
String ad;
if(infoSize == 0)
System.out.println("没有选出符合条件的数据");
else...{
for(int i = 0; i < infoSize; ++i)...{
userName = (String)userInfoList.get(i).get("user_name");
ad = (String)(((Map)userInfoList.get(i)).get("ad"));
System.out.println("userName = " + userName + " ad = " + ad);
}
}
}//end main(...)
conn.closeDatabase();
}//end calss DbConnection
最后的结果:
[align=left]userName = 张三 ad = 北京[/align]
[align=left]userName = 赵一 ad = 上海[/align]
userName = 钱二 ad = 深圳
这个类非常简单的实现了数据库的一般操作,初学者可以参考学习一下。将DbConnection中的driverName和数据库的驱动更换以后可以连接其他数据库。
在我的日常工作中几乎每个程序都要连接数据库,为了不写大量的重复的连接数据库的代码,我将连接封装到一个类中。这样可以调用该类,填入适当的数据库参数对数据库进行连接,然后再作一系列的查询(选择)和更新(插入、删除、更新)操作。下面是我封装的类的一个简化版本。
/** *//**
* 数据库操作
*/
package database;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
/** *//**
* @author Qutr
*
*/
public class DbConnection
...{
private Connection dbConnection = null;
private Statement selectPro = null; //用于 select 操作
private Statement updatePro = null; //用于 update 操作
private ResultSet dbResultSet = null; //操作 select 结果集
private String driverName;//声明MySql驱动类
private String dbHost;
private String dbPort;
private String dbName;
private String dbUserName;
private String dbPassword;
private String enCoding;
/** *//**
* 实例化DbConnection对象
* @param host 数据库主机(IP)
* @param port 数据库端口
* @param dName 数据库名称
* @param uName 用户名
* @param password 用户密码
*/
public DbConnection(String host, String port, String dName, String uName, String password)
...{
driverName = "com.mysql.jdbc.Driver";
dbHost = host;
dbPort = port;
dbName = dName;
dbUserName = uName;
dbPassword = password;
enCoding = "?useUnicode=true&characterEncoding=gb2312&autoReconnect=true";
}//end DbConnection(...)
/** *//**
* 连接数据库
* @return 连接成功返回true,连接失败返回false
*/
public boolean dbConnection()
...{
StringBuilder urlTem = new StringBuilder();
urlTem.append("jdbc:mysql://");
urlTem.append(dbHost);
urlTem.append(":");
urlTem.append(dbPort);
urlTem.append("/");
urlTem.append(dbName);
urlTem.append(enCoding);
String url = urlTem.toString();
try
...{
Class.forName(driverName).newInstance();
dbConnection = DriverManager.getConnection(url, dbUserName, dbPassword);
return true;
}catch(Exception e)...{
System.err.println("数据库联接失败!");
System.out.println("url = " + url);
e.printStackTrace(); //得到详细的出错消息
return false;
}
}// end dbConnection()
/** *//**
* 执行专门的select操作,注意:在selectSql中的字段和fields中的个数、名称要保持一致
* @param selectSql 用于执行的select语句
* @param fields 要选择的字段
* @return 含有Map的ArrayList,一条记录形成一个Map
*/
public ArrayList dbSelect(String selectSql, ArrayList fields)
...{
ArrayList<Map> selectResult = new ArrayList<Map>();
Map<String, String> recordInfo;
try...{
selectPro = dbConnection.createStatement();//定义Statement对象
dbResultSet = selectPro.executeQuery(selectSql);
while(dbResultSet.next())...{
recordInfo = new HashMap<String, String>();
for(int i = 0; i<fields.size(); ++i)
recordInfo.put((String)fields.get(i), dbResultSet.getString((String)fields.get(i)));
selectResult.add(recordInfo);
}
dbResultSet.close(); //断开结果集
selectPro.close(); //断开Statement对象
}catch(Exception e)...{
System.out.println("选择操作失败");
System.out.println("Sql = " + selectSql);
e.printStackTrace();
}
return selectResult;
}//end dbSelect(...)
/** *//**
* 对数据库执行update,delete或insert操作
* @param sql 要执行操作的SQL语句
* @return 执行成功返回true,失败返回false
*/
public boolean dbUpdate(String sql)
...{
try
...{
updatePro = dbConnection.createStatement(); //定义Statement对象
updatePro.executeUpdate(sql);
updatePro.close();// -------------关闭Statement对象
return true;
}catch(Exception err)...{
System.out.println("数据库操作失败!");
System.out.println("Sql = " + sql);
err.printStackTrace();
return false;
}
}//end dbUpdate(...)
/** *//**
* 关闭数据库连接
* @return 成功返回true, 失败返回false
*/
public boolean closeDatabase()
...{
try...{
if(dbConnection != null)
dbConnection.close();
return true;
}catch (Exception ex)...{
ex.printStackTrace();
return false;
}
}//end closeDatabase()
public static void main(String[] args)
...{
String dbHost = "localhost";
String dbPort = "3306";
String dbName = "test";
String dbUserName = "root";
String dbPassword = "";
DbConnection conn = new DbConnection(dbHost, dbPort, dbName, dbUserName, dbPassword);
boolean bool = conn.dbConnection();
if(!bool)
return;
String selectSql = "select user_name, ad from user_info where age = 23";
ArrayList<String> fieldsList = new ArrayList<String>();
fieldsList.add("user_name");
fieldsList.add("ad");
ArrayList<Map> userInfoList = conn.dbSelect(selectSql, fieldsList);
int infoSize = userInfoList.size();
String userName;
String ad;
if(infoSize == 0)
System.out.println("没有选出符合条件的数据");
else...{
for(int i = 0; i < infoSize; ++i)...{
userName = (String)userInfoList.get(i).get("user_name");
ad = (String)(((Map)userInfoList.get(i)).get("ad"));
System.out.println("userName = " + userName + " ad = " + ad);
}
}
}//end main(...)
conn.closeDatabase();
}//end calss DbConnection
最后的结果:
[align=left]userName = 张三 ad = 北京[/align]
[align=left]userName = 赵一 ad = 上海[/align]
userName = 钱二 ad = 深圳
这个类非常简单的实现了数据库的一般操作,初学者可以参考学习一下。将DbConnection中的driverName和数据库的驱动更换以后可以连接其他数据库。
相关文章推荐
- 利用JDBC连接MySQL数据库的基本操作
- 利用JDBC连接MySQL数据库
- java利用jdbc连接Mysql数据库——实现登录注册功能
- 利用java的jdbc连接mysql数据库
- eclipse新建java工程利用JDBC连接MYSQL数据库
- JAVA 利用JDBC连接MYSQL数据库以及增删改查的实现【学习笔记】
- 1、利用jdbc,连接mysql数据库
- Java利用JDBC连接Mysql数据库实例
- 利用JDBC实现java与MySQL数据库的连接及相关操作
- 利用JDBC连接MySql数据库
- java学习笔记之——JDBC(连接mysql数据库)
- JDBC连接Mysql数据库简单实例
- Python3利用PyMySql连接MySQL数据库
- JDBC中连接MySQL数据库
- java使用JDBC连接mysql数据库
- 使用JDBC连接MySQL数据库 用户名密码验证
- 利用MFC的ADO连接mysql数据库成功
- java:jdbc连接mysql数据库
- 在JSP页面中使用JDBC连接MySQL数据库的方法
- 使用JDBC连接MySQL数据库--典型案例分析(一)---员工数据读取与操作