当前位置: 移动技术网 > IT编程>开发语言>Java > JDBC

JDBC

2019年05月11日  | 移动技术网IT编程  | 我要评论

jdbc编码的步骤:
1、加载驱动并注册驱动
class.forname("com.mysql.jdbc.driver");

说明:在加载driver类时,它会自动创建自己的实例并向 drivermanager 注册该实例。

com.mysql.jdbc.driver的源码:

 1 public class driver extends nonregisteringdriver implements java.sql.driver {  
 2   
 3             // register ourselves with the drivermanager  
 4             static {  
 5                 try {  
 6                     java.sql.drivermanager.registerdriver(new driver());  
 7                 } catch (sqlexception e) {  
 8                     throw new runtimeexception("can't register driver!");  
 9                 }  
10             }  
11   
12             // construct a new driver and register it with drivermanager  
13             public driver() throws sqlexception {  
14                 // required for class.forname().newinstance()  
15             }  
16         }  

2、获取与数据库的连接:connection
connection conn = drivermanager.getconnection("jdbc:mysql://localhost:3306/oa", "root", "root");
3、得到代表sql语句的对象:statement
statement stmt = conn.createstatement();
4、发送sql给数据库,如果有查询结果,则得到封装了查询结果的对象:resultset
resultset rs = stmt.executequery("select id,name,password,email,birthday from users");
5、遍历结果
while(rs.next()){
system.out.println(rs.getobject("id"));
system.out.println(rs.getobject("name"));
}
6、释放占用的资源
rs.close();
stmt.close();
conn.close();

jdbc中常用的接口和类
1、drivermanager
作用:注册驱动,得到数据库的连接
1.1注册驱动:
drivermanager.registdriver(new com.mysql.jdbc.driver());(不可取)
原因: 1、严重依赖具体的数据库驱动。
2、导致驱动注册两遍,也就是在内存中会有两个driver对象
注:new com.mysql.jdbc.driver():在new了一个driver的同时使用drivermanager把自己给注册了(查看com.mysql.jdbc.driver的源码可知)。
替代方案:
class.forname("com.mysql.jdbc.driver");

1.2获取数据库的连接:
static connection getconnection()

2、connection
所有与数据库交互都必须建立在连接的基础上

3、statement
作用:代表着sql语句
常用的方法:
resultset executequery(string sql)
int executeupdate(string sql)
boolean execute(string sql)

preparedstatement:处理 dml 语句的利器,有以下3点好处

1、预编译sql语句,数据库执行效率高。
注:statement会使数据库频繁编译sql,可能造成数据库缓冲区溢出
2、防止sql注入
3、支持参数占位符"?",简化sql语句的编写

preparedstatement pstmt = conn.preparestatement("insert into user (username, birthday) values(?,?)");
pstmt.setstring(1, user.getusername());
pstmt.setdate(2, new java.sql.date(user.getbirthday().gettime()));
pstmt.executeupdate();

4、resultset
boolean next():下移一行
boolean previous():上移一行
void absolute(int row):第一行的记录就是1
注:absolute(1) 等效于 first()、absolute(-1) 等效于last()
void beforefirst():移动到第一行的前面
void afterlast():移动到最后一行的后面

5、释放资源
rs.close();
stmt.close();
conn.close();

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网