一、创建配置文件
创建公共参数
例如:以myschool数据库为例,配置文件名为 Properties
driver=com.mysql.jdbc.Driver 驱动
url=jdbc:mysql://localhost:3306/myschool 数据库连接字符
loginname=root 登陆名/账号
loginpassword=bdqn 登陆密码
二、创建BaseDao类
1.创建公共参数
private static String driver; 驱动
private static String url; 数据库链接字符
private static String loginname; 登录名/账号
private static String loginpwd; 登陆密码
static Connection conn=null; 链接数据库对象
static PreparedStatement ps=null; 获取sql命令对象
static ResultSet res = null; 存储sql结果集对象
2.定义初始化读取数据的方法
例如:演示代码
public static void init() {
1.创建配置文件对象
Properties p=new Properties();
2.创建输入流 并且将文件路径告诉他
InputStream is=BaseDao.class.getClassLoader().getResourceAsStream("jdbc.Properties");
try {
3.加载文件
p.load(is);
4.读取参数并且给对你供应的参数赋值
driver=p.getProperty("d");
url=p.getProperty("u");
name=p.getProperty("n");
pwd=p.getProperty("p");
} catch (IOException e) {
e.printStackTrace();
}
}
3.使用静态代码块自动执行init方法
演示代码
static {init();}
4.获取数据库
例如:演示代码
public static Connection getConn() {
1.判断链接是否为空
if (conn==null) {
2.加载驱动
try {
Class.forName(driver);
3.建立连接
conn=DriverManager.getConnection(url,name,pwd);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
return conn; 4.返回链接结果
}
5.释放资源的方法/俗称关闭链接(先打开的后关闭)
public static void close(ResultSet res) {
try {
if (res!=null) {
res.close(); 关闭执行sql结果集
}
if (ps!=null) {
ps.close(); 关闭执行sql
}
if (conn!=null) {
conn.close(); 关闭数据库连接
}
} catch (SQLException e) {
e.printStackTrace();
}
}
6.定义增删改的通用方法
public static int update(String sql,Object[] o) {
1.定义返回值
int num=-1;
2.创建命令对象
try {
ps=BaseDao.getConn().prepareStatement(sql);
3.替换占位符,遍历数组 按照顺序替换占位符(替换下标必须从1开始)
for (int i = 1; i <= o.length; i++) {
ps.setObject(i, o[i-1]);
}
4.执行sql语句
num=ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally {
close(null); 关闭连接
}
return num; 返回受影响行数
}
7.定义增查通用方法
public static ResultSet query(String sql,Object[] o) {
1.创建命令对象
try {
ps=BaseDao.getConn().prepareStatement(sql);
2.替换占位符,遍历数组 按照顺序替换占位符(替换下标必须从1开始)
for (int i = 1; i <= o.length; i++) {
ps.setObject(i, o[i-1]);
}
3.执行sql语句
res=ps.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
return res; 返回查询结果
三、main函数,调用BaseDao里的增删改、查 方法
示例代码:
1.调用增删改 示例
创建sql
String sql="增删改SQL语句"; 如果需要替换占位符 数据名=? 表名、增加数据直接用 ?(英文输入发下 "?")
创建数组 将数组放入数组
Object[] o= {增删改数据};
调用通用增删改方法返回结果
int a=BaseDao.update(sql, o);
判断结果
a 受影响行数,如果没有结果则 a=-1
if (a>0) {
System.out.println("成功");
}else {
System.out.println("失败");
}
2.调用查询通用方法 示例
创建存储查询结果对象
ResultSet res=null;
创建sql
String sql="查询SQL语句"; 如果需要替换占位符 数据名=? 表名直接用 ?(英文输入发下 "?")
创建数组 将数据放入数组
Object[] o= {替换占位符数据}; 如果不需要使用替换占位则不需要此行代码
调用通用查询方法返回结果
res=BaseDao.query(sql, o);
判断结果
res.next()==true 有查询数据
res.next()==false 无差寻数据
try {
if (res.next()==true) {
System.out.println(输出需要的结果);
如果输出多行数据则需要使用while循环
示例:
while(res.next){
System.out.println(输出需要的结果);
}
}else {
System.out.println("查询失败!");
}
} catch (SQLException e) {
e.printStackTrace();
}