首页 > 代码库 > JDBC入门
JDBC入门
一】什么是JDBC?为什么使用?
1)sun公司为了是java程序员能灵活的访问各种不同的关系型数据库提供的规则。
2)为什么使用JDBC?
1》降低Java程序操作数据库的成本
2》使Java程序灵活移植
二】体验JDBC开发数据库的过程
code:
// 1,注册数据库驱动
//DriverManager.registerDriver(new Driver());// 注册mysql驱动[com.mysql.jdbc.Driver等...]
/*
但是:由于Driver的源码中已经注册过一次,即将驱动放入了集合,如果再在外面注册就会放入两个到
注册驱动集合中,【通过查看源码可知,下文详细介绍】
故实际开发中:
*/
//1,只注册一次并无须导入与具体数据库相关的包
Class.forName("com.mysql.jdbc.Driver");
// 2,取得与MySQL数据库连接的桥梁
Connection conn = DriverManager.getConnection(
"jdbc:mysql://127.0.0.1:3306/day11sql", "root", "568231252");
// 3,创建封装SQL命令的对象
Statement stmt = conn.createStatement();
// 4,执行SQL命令,并返回符合条件的记录集合
String sql = "select * from user";
ResultSet rs = stmt.executeQuery(sql);
// 5,处理结果集合
while (rs.next()) {
Object obj = rs.getObject("name");
System.out.println(obj);
}
//6,依次关闭所用过的连接对象
rs.close();
stmt.close();
conn.close();
常用类库:
1》DriverManager类:管理一组 JDBC 驱动程序的基本服务。
常用方法:
1)向 DriverManager 注册给定驱动程序
static void registerDriver(Driver driver)
2)试图建立到给定数据库 URL 的连接。
static Connection getConnection(String url)
static Connection getConnection(String url, Properties info) //info - 作为连接参数的任意字符串标记/值对的列表;通常至少应该包括 "user" 和 "password" 属性
static Connection getConnection(String url, String user, String password)
2》Connection类:与特定数据库的连接(会话)。在连接上下文中执行 SQL 语句并返回结果。
常用方法:
1)创建一个 Statement 对象来将 SQL 语句发送到数据库。
Statement createStatement()
3》Statement类:用于执行静态 SQL 语句并返回它所生成结果的对象。
常用方法:
1)执行给定的 SQL 语句,该语句返回单个 ResultSet 对象
ResultSet executeQuery(String sql)
2)执行给定 SQL 语句,该语句可能为 INSERT、UPDATE 或 DELETE 语句,或者不返回任何内容的 SQL 语句(如 SQL DDL 语句)。
int executeUpdate(String sql);//返回值:代表影响的行数
总结:
int executeUpdate()函数:根据表中被影响的行数作为返回值。
boolean excute()函数:除了select操作外返回true之外,其它的操作都返回flase;
4》ResultSet类:表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。
即:相当于含有行和列的一个二维表。
常用方法:
1)将光标从当前位置向前移一行。
boolean next()
2) 以 Java 编程语言中 String 的形式获取此 ResultSet 对象的当前行中指定列的值。
String getString(String columnLabel) ;
3)以 Java 编程语言中 double 的形式获取此 ResultSet 对象的当前行中指定列的值。
double getDouble(String columnLabel)
4)以 Java 编程语言中 float 的形式获取此 ResultSet 对象的当前行中指定列的值。
float getFloat(String columnLabel)
5)以 Java 编程语言中 int 的形式获取此 ResultSet 对象的当前行中指定列的值。
int getInt(String columnLabel)
....
....
三】 DriverManager类---驱动管理器
作用:管理一组 JDBC 驱动程序的基本服务。
四】详解JDBC连接数据库的详解:
1》注册驱动:
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
参数:java.sql.Driver(接口)-com.mysql.jdbc.Driver(实现类)
(首先返回true)boolean acceptsURL(String url)
查询驱动程序是否认为它可以打开到给定 URL 的连接。
(然后)Connection connect(String url, Properties info)
试图创建一个到给定 URL 的数据库连接。
注意:上述代码会向DriverManager注册二次相同的MySQL驱动,其中一次在Driver实现类中.
源码:
public class Driver extends NonRegisteringDriver implements java.sql.Driver {
static {
try {
java.sql.DriverManager.registerDriver(new Driver());//####
} catch (SQLException E) {
throw new RuntimeException("Can‘t register driver!");
}
}
故:
【重点:forName的由来】===============>
项目中推荐使用以下代码间接注册数据库驱动:
Class.forName("com.mysql.jdbc.Driver");
优点:
a)只注册一次
b)无需导入与具体数据库驱动相关的包
2》获取数据库连接对象:
Connection conn = DriverManager.getConnection(
"jdbc:mysql://127.0.0.1:3306/mydb2","root","root");
3》关闭流
a)依次按resultSet->Statement->Connection顺序关闭
b)在能完成业务的情况下,尽早关闭
五】数据库URL
格式:【协议】:【子协议】://【主机ip】:【端口】/【数据库】
访问本机简写:
jdbc:mysql:///sid
code:
Oracle—jdbc:oracle:thin:@localhost:1521:sid
SqlServer—jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=sid
MySql—jdbc:mysql://localhost:3306/sid
六】流的关闭
原则:
1)一次result->statement->connection顺序关闭
2)在能完成业务的情况下,尽早关闭
问题:在代码中不能关闭流的时候,如何解决?
【重点】一般会单独用一个db.properties文件来设置数据库相关配置信息:
七】、JDBC的六个固定步骤
1,注册数据库驱动[利用反射]
2,取得数据库连接对象Connection
3,创建SQL对象
4,执行SQL命令,并返回结果集
5,处理结果集
6,依次关闭结果集
八】使用JDBC完成CURD操作
1》insert/update/delete 使用:Statement.executeUpdate(sql).
返回值:表示影响记录的行数
2》select使用:Statement.executeQuery(sql)
返回值:表示影响记录的行数
3》cerate使用: Statement.executeUpdate(sql)
4》drop使用:Statement.executeUpdate(sql)
JDBC入门