您的位置:首页 > 数据库 > SQL

JDBC第二章知识点总结——JDBC基本应用

2012-09-14 20:34 525 查看
JDBC第二章知识点总结——JDBC基本应用

知识点预览
 

使用JDBC建立到数据库的连接

理解并使用JDBC相关对象

使用JDBC操作数据

使用JDBC建立到数据库的连接
1.      第一个JDBC程序

 

 






  

 
2.      应用JDBC的基本步骤

a)        注册驱动 

b)       建立到数据库的连接

c)        创建statement

d)       执行SQL语句

e)        处理results

f)        关闭JDBC对象

3.      Step 1--注册驱动

a)        四种驱动方式

 

第四种:本地协议驱动

 

 


b)       驱动用来连接到数据库

c)        可以装载多个驱动

JDBC API使用能成功连接到指定URL(数据库)的第一个驱动

d)       JDBC API使用驱动与数据库引擎建立连接

e)        语法

Class.forName(driverName);

f)        示例

//com.mysql.jdbc.Driver是MySQL数据库的Java驱动类名

//不同的数据库,驱动各不相同

//由数据库厂商提供,可以在数据库厂商的网站下载

Class.forName(“com.mysql.jdbc.Driver”);

g)       经常使用的JDBC驱动

                                     i.             JDBC-ODBC:sun.jdbc.odbc.JdbcOdbcDriver

                                   ii.             Oracle:oracle.jdbc.driver.OracleDriver

                                 iii.             MySQL:com.mysql.jdbc.Driver

                                  iv.             Sybase:com.sybase.jdbc2.jdbc.SybDriver

                                    v.             SQL Server:com.microsoft.jdbc.sqlserver.SQLServerDriver

                                  vi.             。。。。。。

h)       不是固定不变的,与数据库的版本有关

在数据库厂商的网站上下载

4.      Step 2—建立到数据库的连接

a)        使用驱动创建连接,连接建立后就可以访问数据

b)       创建数据库连接

DriverManager类调用getConnection(urlString)方法

获得一个Connection对象

c)        URL被解析用来查找数据库服务器的位置

d)       当驱动收到URL(数据库)的确认响应时, DriverManager创建一个连接

e)        当驱动不能匹配会返回null,并对下一个驱动进行检测

f)        连接创建失败时,会抛出SQLException异常

5.      创建数据库连接的过程

 

 


6.      使用getConnection()方法

a)        方法

getConnection(Stringurl)

b)       语法

Connection con =DriverManager.getConnection(参数)

c)        示例

//jdbc:mysql://computerName或IP地址 :端口/数据库名称

// 不同的数据库URL字符串格式不同

Connection con =DriverManager.getConnection(

"jdbc:mysql://localhost:3306/test?user=root&password=root");

7.      JDBC URLs语法

a)        使用URL来查找数据库服务器的位置

b)       常见数据库的URL

JDBC-ODBC:jdbc:odbc:ODBC名称

Oracle:jdbc:oracle:thin:@ computerName或IP地址:端口:数据库名称

MySQL: jdbc:mysql://computerName或IP地址 :端口/数据库名称

Sybase:jdbc:sybase:Tds:computerName或IP地址:端口

SQL  Server:

jdbc:microsoft:sqlserver://computerName或IP地址:端口;databaseName=数据库名称

c)        Connection con =DriverManager.getConnection(

"jdbc:mysql://localhost:3306/test?user=root&password=root");

 

8.      Step 3--创建Statement

a)        Statement对象用来执行SQL语句,对数据进行操作

b)       通过connection.createStatement()方法得到Statement对象

c)        语法

Statement  stm = connection.createStatement();

d)       示例

Statement  stm = null;

ResultSet  rs = null;

try{

 stm =connection.crateStatement();

 rs = stm.executeQuery("select  id, name, age from  student");

 }catch(SQLException e) {}

9.      Step 4--执行SQL语句

a)        通过Statement对象将SQL语句原样传送到已经建立连接的数据库并执行

b)       查询数据的SQL语句执行后得到的结果集以表数据的形式存储在java.sql.ResultSet对象中,通过ResultSet对象访问查询结果

executeQuery(sqlString):执行查询相关的SQL语句,返回ResultSet对象

c)        添加,删除,修改数据的SQL语句执行后返回整数,表示受到影响的行数

executeUpdate(sqlString):执行增加,修改,删除相关SQL语句或不返回任何内容的SQL语句

d)       executeQuery(sqlString)

语法

Connection  con = DriverManger.getConnection(urlString);

Statement  stm = con.createStatement();

ResultSet  rs = stm.excuteQuery(sqlString);

示例

Statement  stm = con.createStatement();

ResultSet  rs = stm.executeQuery(“select  * from  student”);

e)        executeUpdate(sqlString)

语法

Connection  con = DriverManger.getConnection(urlString);

Statement  stm = con.createStatement();

int  count = stm.excuteUpdate(sqlString);

示例

Statement  stm = con.createStatement();

int  count= stm.executeUpdate(“update  student set  age=25  where id=1”);

10.  Step 5--处理Results

a)        对数据进行添加、删除、修改等操作,SQL执行结束就已经完成

b)       对数据进行查询,查询结果存放在ResultSet对象中

ResultSet对象是满足查询条件的数据行,是数据库表数据的子集

c)        ResultSet



使用游标指向数据行

游标最初定位在第一行之前

boolean  rs.next();

当游标指向某行数据,我们就可以从当前行取出需要的数据

 


 
 
d)       在ResultSet对象中使用getXXX(索引或列名)方法获得数据

e)        使用列名称或索引检索数据

rs.getString(2);

rs.getInt(“age”);

 

 
f)        语法

While(rs.next()){

        System.out.println(rs.getXXX(column);

}

g)       示例

        ResultSet rs = stm.executeQuery(“select *  from  student”);

     while(rs.next()){

         System.out.print("id: " +rs.getInt(1));

         System.out.print("\tname: "+ rs.getString(2));

         System.out.print("\tage: " +rs.getInt(3));

         System.out.println("");

     }

getDate(),getDouble(),getFloat(),getInt(),getLong(),getShort(),

getTime(),getString(),getBoolean(),getByte()……

11.  Step 6--关闭JDBC对象

a)        所有JDBC对象都需要关闭,关闭顺序应该是从小到大

ResultSet

Statement

Connection

b)       示例

//关闭JDBC对象,释放资源

if(rs != null)try{ rs.close(); }catch(Exception e){}

if(stm != null)try{ stm.close(); }catch(Exception e){}

if(con != null)try{ con.close(); }catch(Exception e){}

12.  应用JDBC示例

public class TestJDBC2 {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
int count = 0;
String sql = "";
try {
Class.forName("com.mysql.jdbc.Driver");
conn =DriverManager.getConnection(
"jdbc:mysql://localhost:3306/test?user=root&password=root");
stmt = conn.createStatement();
sql = "update  student set  age=25  where id=1";
count =stmt.executeUpdate(sql);
} catch(Exception ex) {
ex.printStackTrace();
} finally {
try {
if(stmt!=null){  stmt.close(); }
if(conn!=null){  conn.close(); }
} catch (SQLException e){  e.printStackTrace();  }
}  }  }





 

JDBC操作数据的核心

1.      JDBC操作数据的核心

a)        Connection

应用程序与数据库之间的桥梁

数据库驱动程序是构建桥梁的基石和材料

DriverManager类是基石和材料的管理员

b)       Statement

桥梁上的汽车,在应用程序和数据库之间运送SQL语句和执行结果

c)        ResultSet

执行查询得到的数据集,由若干行和列组成的数据表,是数据库中数据表的子集,有游标

 

2.      应用JDBC的总结

a)        注册驱动

Class.forName(“com.mysql.jdbc.Driver”);

b)       建立到数据库的连接

Connection con =DriverManager.getConnection(

"jdbc:mysql://localhost:3306/test?user=root&password=root");

c)        创建statement

Statement  stmt = con.createStatement();

d)       执行SQL语句

int  count= stmt.executeUpdate(“update  student set  age=25  where id=1”);

ResultSet  rs= stmt.executeQuery(“select  * from  student”);

e)        处理results

while(rs.next()){ 

    rs.getString(2);

}

f)        关闭JDBC对象

   try {

        if(rs!=null){  rs.close(); }

        if(stmt!=null){  stmt.close(); }

        if(conn!=null){  conn.close(); }

    } catch (SQLException e) { 

              e.printStackTrace(); 

    }

g)       某些步骤的实现方式有多种,比如:注册驱动……

3.      驱动注册的其他方式

a)        注册驱动的方式有多种

b)       使用类装载器(Class.forName(“类名”))

Class.forName(“com.mysql.jdbc.Driver”);

c)        使用new关键字实例化驱动类

d)       在属性文件中配置jdbc.drivers属性

e)        省略驱动程序注册步骤

使用JDBC4.0以上版本

4.      可以使用new关键字对驱动进行显式的实例化

语法

Driver drv = newDriverConstructor();

DriverManager.registerDriver(drv);

示例

Driver  drv = new com.mysql.jdbc.Driver();

DriverManager.registerDriver(drv);

 


 

5.      在配置文件中指定驱动类名

a)        语法

jdbc.drivers =driverName

b)       示例

//创建一个test.properties配置文件,在属性文件中写入属性并赋值

//然后在程序中读取配置文件

jdbc.drivers=com.mysql.jdbc.Driver

 

适合于数据库可能会变化的情况

 

 


 


 

6.      获得连接的其他方法

a)        通过DriverManager类获得连接对象

b)       方法

getConnection(Stringurl)

getConnection(Stringurl, String user, String passwd)

getConnection(Stringurl, java.util.properties info)

c)        示例

DriverManager.getConnection(“jdbc:mysql://localhost:3306/test”,“root”,”root”);

Properties  pro = new Properties();

pro.setProperty(“user”,”root”);       //键是user,不是username

pro.setProperty(“password”,”root”);

Connection con =DriverManager.getConnection(

“jdbc:mysql://localhost:3306/test”, pro);

d)       通过指定的驱动对象直接调用connect()方法

e)        语法

Connection con =Driver.connect(urlString, properties)

f)        示例

Driver  drv = new com.mysql.jdbc.Driver();

Connection  con = null; 

Properties  pro = new  Properties();

pro.setProperty(“user”,”root”);         //键是user,不是username

pro.setProperty(“password”,”root”);

try {

        con =drv.connect(“jdbc:mysql://localhost:3306/test”, pro);

}catch(SQLException  e){   e.printStackTrace();  }

 

Statement相关接口

1.      Statement相关接口

Statement:执行SQL语句,对数据库进行操作

executeQuery():查询数据

executeUpdate():添加数据,删除数据,修改数据

PreparedStatement:扩展Statement接口,对预编译的SQL语句进行处理,提高效率

CallableStatement:扩展PreparedStatement接口,执行数据库存储过程口 

2.      PreparedStatement对象

a)        对SQL语句的编译结果在缓存中保留,提高多次执行的效率

statement每次执行sql语句,相关数据库都要先将sql语句进行编译,然后执行。而preparedstatement则将sql语句编译的结果保留,可以多次执行。

b)       语法

PreparedStatementpstm = connection.prepareStatement(sqlString);

c)        示例

String  sql = “select *  from  student where  id=?”;

pstm = connection.prepareStatement(sql);

pstm.setInt(1,1);       //setString(),setFloat()

rs =pstm.executeQuery();             //executeUpdate()

……

pstm.setInt(1,2);

rs =pstm.executeQuery();

 


 

3.      CallableStatement对象

a)        执行数据库存储过程(数据库中定义的函数)

b)       语法

CallableStatement  cstm = connection.prepareCall(sqlString);

c)        示例

CallabeStatement  cstm = null;

try{

   cstm = connection.prepareCall(“{callproc_insert_test(?,?)}”);

   cstm.setString(1, “sunqi”);

   cstm.setInt(2, 33);

   cstm.executeUpdate();

}catch(SQLExceptione){}

 
 




 


4.      CallableStatement对象

存储过程返回值







 



 

5.      应用JDBC的基本步骤

a)        注册驱动

使用类装载器(Class.forName(“类名”))

使用new关键字实例化驱动类

在属性文件中配置jdbc.drivers属性

b)       建立到数据库的连接

DriverManager.getConnection(url)

DriverManager.getConnection(url,name,pass)

DriverManager.getConnection(url,properties)

驱动类connect()

c)        创建statement

statement

PreparedStatement

CallableStatement

d)       执行SQL语句

e)        处理results

f)        关闭JDBC对象

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息