1.JDBC了解 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。 2.开发步骤 1.创建一个java项目 2.导入mysql的数据库驱动jar包 驱动包 3.注册驱动 Class.forName(“”) 4.获取与数据库的链接 5.得到代表发送和执行SQL语句的对象 Statement 6.执行语句 7.如果执行的是查询语句,就会有结果集,处理 8.释放占用的资源 3.代码
// 注册数据库驱动
DriverManager.deregisterDriver(new Driver());
// 获取数据库连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/database", "root", "123456");
// 获取执行sql语句的statem0ent
Statement st = conn.createStatement();
String sql = "select * from user ";
// 执行sql语句增删改查
//st.executeUpdate("insert into user values(12,'杨过','123456')");
//st.executeUpdate("update user set namer='杨康' where id='12'");
//st.executeUpdate("delete from user where id='12'");
ResultSet set = st.executeQuery(sql);
while (set.next()) {
// 获取指定位置的数据,角标从1 开始
String com1 = set.getString(1);
String com2 = set.getString(2);
String com3 = set.getString(3);
String com4 = set.getString(4);
System.out.println(com2 + ":" + com3 + ":" + com4 + ":" + com1);
}
// 释放数据库资源
set.close();
st.close();
conn.close();
4.PreparedStatement PreparedStatement实现Statement PreparedStatement需要预编译以及需要参数 由于PreparedStatement有缓存区,所以效率更高 由于PreparedStatement有缓存区,所以更安全,防止了注入(1=1) 语句中的参数可以使用占位符(?) ?
// 准备sql预编译语句
// ?占用一个参数位
String sql = "INSERT INTO user (NAME,sex,age) VALUES (?,?,?);";
// 3:执行sql预编译语句(检查语法)
stsm=conn.prepareStatement(sql);
// 4:设置传递的参数
stsm.setString(1,"张三");
stsm.setString(2,"男");
stsm.setInt(3,20);
// 5:发送参数,执行sql
// 注意:这里的方法后面没有参数
int result = stsm.executeUpdate();
5.封装工具类的使用 1)db.properties
className=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql://localhost:3306/reba
name=root
password=12345
2)JdbcUtil.class
public static String DRIVER ;
public static String URL ;
public static String USERNAME ;
public static String PASSWORD ;
static{
//读取配置文件的方式
InputStream is = JdbcUtil.class.getClassLoader().getResourceAsStream("db.properties");
Properties p = new Properties();
try {
p.load(is);
DRIVER = p.getProperty("driverClass");
URL = p.getProperty("jdbcUrl");
USERNAME = p.getProperty("username");
PASSWORD = p.getProperty("password");
Class.forName(DRIVER);//加载驱动
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 获取数据库连接
* @return
* @throws Exception
*/
public static Connection getConnection() throws Exception{
return DriverManager.getConnection(URL, USERNAME, PASSWORD);
}
/**
* 关闭资源的方法
* @param rs
* @param st
* @param con
*/
public static void release(ResultSet rs ,Statement st,Connection con){
//6.关闭资源 (有顺序)
if(rs!=null){
try {
rs.close();
rs = null; //垃圾回收器立即回收
} catch (SQLException e) {
e.printStackTrace();
}
}
if(st!=null){
try {
st.close();
st = null;
} catch (SQLException e) {
e.printStackTrace();
}
}
if(con!=null){
try {
con.close();
con = null;
} catch (SQLException e) {
e.printStackTrace();
}
}
}
3)Test.class
Connection con = null;
Statement st = null;
ResultSet rs = null;
try {
con = JdbcUtil.getConnection();
st = con.createStatement();
rs = st.executeQuery("");
while(rs.next()){
//封装数据
}
} catch (Exception e) {
e.printStackTrace();
}finally{
JdbcUtil.release(null, st, con);
}