在Eclipse中编写jsp网页,引用数据库,并使用连接池
在网页编写中,会经常需要用到数据库,我尝试了两种数据库的引用,一种是mysql,一种是sqilte,一开始我使用的是mysql,后来觉得每次移植需要重新搭建mysql的环境太麻烦,而我的数据量又不大,所以又改到sqlite中。
mysql的使用
先放一个mysql的jar文件的下载链接,传送门 : 主要代码:
import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
//首先导入一些可能会用到的sql相关的功能包
public class BaseDao {
public synchronized static Connection getConnection() {
//存放Connection对象的数组,数组作为连接池
static ArrayList<Connection>list=new ArrayList<Connection>();
//定义一个连接,并初始化
Connection con=null;
//mysql打开数据库文件
public static final String DBDRIVER="org.gjt.mm.mysql.Driver";
final String DBURL="jdbc:mysql://localhost:3306/ybwtest?serverTimezone=UTC";
final String DBUSER="root";
final String DBPASS="67936";
//如果连接池中有连接对象,则移除
if(list.size()>0) {
return list.remove(0);
}
//如果连接池没有连接对象则创建连接放到连接池中
else {
for(int i=0;i<5;i++) {
//创建连接
try {
con=DriverManager.getConnection(DBURL,DBUSER,DBPASS);
list.add(con);
}catch (SQLException e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
return list.remove(0);
}
以上就是主要的代码,下面附上路径检查的代码:
public static void checkDirExists(File file) {
if (file.exists()) {
if (!file.isDirectory()){
System.out.println("同名文件存在, 不能创建");
}
}else{
System.out.println("数据库目录不存在,创建目录");
file.mkdir();
}
}
sqlite的使用
sqlite用到的jar包的下载链接,传送门: 主要代码与mysql区别不大,主要是修改以下几个地方:
public static final String DBDRIVER="org.gjt.mm.mysql.Driver";
final String DBURL="jdbc:mysql://localhost:3306/ybwtest?serverTimezone=UTC";
final String DBUSER="root";
final String DBPASS="66666";
修改为以下内容:
//连接sqlite数据库,后面为什么是org.sqlite.JDBC,这个你别问,反正别乱改,就这么写
final String DBDRIVER = "org.sqlite.JDBC";
//您想要存放数据库的位置。这个路径必须存在,不然会报错,我在下一步中进行了路径检查
File mfile =new File("D:\TX_INFO_DATA");
//这个是自定义的函数,作用是检查路径,如不存在则创建
checkDirExists(mfile);
final String DB_URL = "jdbc:sqlite:D:\TX_INFO_DATA/TX_Info_database.db";
以及
for(int i=0;i<5;i++) {
//创建连接
try {
con=DriverManager.getConnection(DBURL,DBUSER,DBPASS);
list.add(con);
}catch (SQLException e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
修改为以下内容:
for(int i=0;i<5;i++) {
try {
Class.forName("org.sqlite.JDBC");
}catch (ClassNotFoundException e) {
// TODO: handle exception
e.printStackTrace();
}
//创建连接
try {
con=DriverManager.getConnection(DB_URL);
list.add(con);
}catch (SQLException e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
