java的api连接数据库的

1.连接数据库工具类
package jdbc.jdbcutils;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ResourceBundle;
//import java.util.Properties;
//import java.io.IOException;
//import java.io.InputStream;

public class JdbcUtils {
// static Properties pros=new Properties();
static String url = null;
static String user = null;
static String password = null;
static {
// pros.load(is);
ResourceBundle bundle=ResourceBundle.getBundle(“jdbc”);
url=bundle.getString(“url”);
user=bundle.getString(“user”);
password=bundle.getString(“password”);
//加载驱动
try {
Class.forName(bundle.getString(“driver”));
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
//获取连接
public static Connection getConnection() {
try {
return DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
throw new RuntimeException(“获取连接失败”);
}
}

public static void closeRes(Connection conn,PreparedStatement ps,ResultSet rs) {
try {
if(rs!=null) {
rs.close();
}if(ps!=null) {
ps.close();
}if(conn!=null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
2.执行sql语句的api
package jdbc.jdbcutils;
import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class BaseDao {
Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
//通用的增删改
//增删改的条件
//不同表
public int executeUpdate(String sql,Object[] params) {
int rows=0;
conn=JdbcUtils.getConnection();
//创建ps对象
try {
ps=conn.prepareStatement(sql);
//赋值
for(int i=0;i<params.length;i++) {
ps.setObject(i+1, params[i]);
}
//执行
rows=ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally {
JdbcUtils.closeRes(conn, ps, rs);
}
return rows;
}
//通用查询
//不同表 sql
//参数不确定 object[]
//ResultSet 封装对象
//对象属性对应每一个字段
public List executeQuery(String sql,Object[]params,Classclz){
List lists=new ArrayList<>();
conn=JdbcUtils.getConnection();
try {
ps=conn.prepareStatement(sql);
//给sql语句中占位符?赋值
for(int i=0;i<params.length;i++) {
ps.setObject(i+1, params[i]);
}
//发送sql
rs=ps.executeQuery();
//获取rs的元数据
ResultSetMetaData md=rs.getMetaData();
//获取字段的个数
int count=md.getColumnCount();
while(rs.next()) {//遍历每一条记录,对应一个对象
T t=clz.newInstance();//通过字节码文件创建对象
//给每个对象属性赋值(字段对应一个属性)
//字段有哪些?
for(int i=0;i<count;i++) {
//每一个字段名称
String name=md.getColumnName(i+1);
//每个字段的值
Object value=rs.getObject(name);
// 获取属性描述对象赋值
Field field =clz.getDeclaredField(name);
field.setAccessible(true);
field.set(t, value);
}
//属性有哪些?clz
lists.add(t);
}
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return lists;
}
}
3.测试类
package jdbc.jdbcutils;
import java.util.List;
public class TestBook {
public static void main(String[] args) {
BaseDao base= new BaseDao ();
//3.查询bid为3的book记录
Class clz=Book.class;
/String sql=“select * from book where bid=3”;
Object[] params = {};
List lists=base.executeQuery(sql,params, clz);
lists.forEach(System.out::println);
/
//4.询所有的book信息.
/String sql=“select * from book”;
Class clz=Book.class;
Object[] params = {};
List lists=base.executeQuery(sql,params, clz);
lists.forEach(System.out::println);
/
Book b=new Book();
b.setBid(2);
// b.setPrice(50);;
// String sql=“update book set price=”+b.getPrice()+" where bid="+b.getBid()+"";
//5.修改bid为3的book的价格为50元
/String sql=“update book set price=? where bid=?”;
Object[] params = {b.getPrice(),b.getBid()};
int rows=base.executeUpdate(sql, params);
System.out.println(“受影响行数:”+rows);
/
//6.删除bid为2的book记录
/String sql=“delete from book where bid=?”;
Object[] params = {b.getBid()};
int rows=base.executeUpdate(sql, params);
System.out.println(“受影响行数:”+rows);
/
//7.查询名称中包含“三”的书籍信息。
String sql=“select * from book where bname like’%三%’”;
Object[] params = {};
List lists=base.executeQuery(sql,params, clz);
lists.forEach(System.out::println);

}

}

猜你喜欢

转载自blog.csdn.net/zwmonk/article/details/82935601