JDBC连接数据库

JDBC连接数据库





1.

 

JDBC

连接数据库

 

   

2.

 

创建一个以

JDBC

连接数据库的程序,包含

7

个步骤:

 

   

3.

 

 

1

、加载

JDBC

驱动程序:

 

   

4.

 

    

在连接数据库之前,

首先要加载想要连接的数据库的驱动到

JVM

Java

虚拟机)

 

   

5.

 

    

这通过

java.lang.Class

类的静态方法

forName(String  className)

实现。

 

   

6.

 

    

例如:

 

   

7.

 

    

try

   

8.

 

    

//

加载

MySql

的驱动类

 

   

9.

 

    Class.forName(

"com.mysql.jdbc.Driver"

)  

   

10.

 

    }

catch

(ClassNotFoundException e){ 

   

11.

 

    System.out.println(

"

找不到驱动程序类

 

,加载驱动失败!

"

); 

   

12.

 

    e.printStackTrace()  

   

13.

 

    } 

   

14.

 

   

成功加载后,会将

Driver

类的实例注册到

DriverManager

类中。

 

   

15.

 

 

2

、提供

JDBC

连接的

URL 

   

16.

 

   

连接

URL

定义了连接数据库时的协议、子协议、数据源标识。

 

   

17.

 

    

书写形式:协议:子协议:数据源标识

 

   

18.

 

    

协议:在

JDBC

中总是以

jdbc

开始

 

   

19.

 

    

子协议:是桥连接的驱动程序或是数据库管理系统名称。

 

   

20.

 

    

数据源标识:标记找到数据库来源的地址与连接端口。

 

   

21.

 

    

例如:(

MySql

的连接

URL

 

   

22.

 

    jdbc:mysql: 

   

23.

 

        

//localhost:3306/test?useUnicode=true&characterEncoding=gbk 

 

   

24.

 

   useUnicode=

true

:表示使用

Unicode

字符集。如果

characterEncoding

置为

 

   

25.

 

   gb2312

GBK

,本参数必须设置为

true

 

characterEncoding=gbk

:字符

编码方式。

 

   

26.

 

 

3

、创建数据库的连接

 

   

27.

 

    

要连接数据库,

需要向

java.sql.DriverManager

请求并获得

Connection

象,

 

   

28.

 

     

该对象就代表一个数据库的连接。

 

   

29.

 

    

使用

DriverManager

getConnectin(String url , String usernam

e ,  

   

30.

 

    String password )

方法传入指定的欲连接的数据库的路径、

数据库的用户名和

 

   

31.

 

     

密码来获得。

 

   

32.

 

     

例如:

 

   

33.

 

     

//

连接

MySql

数据库,用户名和密码都是

root 

   

34.

 

     String url = 

"jdbc:mysql://localhost:3306/test"

   

   

35.

 

     String username = 

"root"

  

   

36.

 

     String password = 

"root"

  

   

37.

 

     

try

   

38.

 

    Connection con =  

   

39.

 

             DriverManager.getConnection(url , username , password )  

   

40.

 

     }

catch

(SQLException se){ 

   

41.

 

    System.out.println(

"

数据库连接失败!

"

); 

   

42.

 

    se.printStackTrace()  

   

43.

 

     } 

   

44.

 

 

4

、创建一个

Statement 

   

45.

 

    

要执行

SQL

语句,必须获得

java.sql.Statement

实例,

Statement

实例分

为以下

3

   

46.

 

     

种类型:

 

   

47.

 

      

1

、执行静态

SQL

语句。通常通过

Statement

实例实现。

 

   

48.

 

      

2

、执行动态

SQL

语句。通常通过

PreparedStatement

实例实现。

 

   

49.

 

      

3

、执行数据库存储过程。通常通过

CallableStatement

实例实现。

 

   

50.

 

    

具体的实现方式:

 

   

51.

 

        Statement stmt = con.createStatement()  

   

52.

 

       PreparedStatement pstmt = con.prepareStatement(sql)  

   

53.

 

       CallableStatement cstmt =  

   

54.

 

                            con.prepareCall(

"{CALL demoSp(? , ?)}"

)  

   

55.

 

 

5

、执行

SQL

语句

 

   

56.

 

    Statement

接口提供了三种执行

SQL

语句的方法:

executeQuery 

execut

eUpdate 

   

57.

 

   

execute 

   

58.

 

    

1

ResultSet executeQuery(String sqlString)

执行查询数据库的

SQL

 

   

59.

 

        

,返回一个结果集(

ResultSet

)对象。

 

   

60.

 

     

2

int

 executeUpdate(String sqlString)

:用于执行

INSERT

UPDATE

 

   

61.

 

        DELETE

语句以及

SQL DDL

语句,如:

CREATE TABLE

DROP TABLE

 

   

62.

 

     

3

execute(sqlString):

用于执行返回多个结果集、多个更新计数或二者组合

 

   

63.

 

        

语句。

 

   

64.

 

   

具体实现的代码:

 

   

65.

 

          ResultSet rs = stmt.executeQuery(

"SELECT * FROM ..."

)  

   

66.

 

    

int

 rows = stmt.executeUpdate(

"INSERT INTO ..."

)  

   

67.

 

    

boolean

 flag = stmt.execute(String sql)  

   

68.

 

 

6

、处理结果

 

   

69.

 

    

两种情况:

 

   

70.

 

     

1

、执行更新返回的是本次操作影响到的记录数。

 

   

71.

 

     

2

、执行查询返回的结果是一个

ResultSet

对象。

 

   

72.

 

    

 ResultSet

包含符合

SQL

语句中条件的所有行,并且它通过一套

get

方法提

供了对这些

 

   

73.

 

      

行中数据的访问。

 

   

74.

 

    

 

使用结果集(

ResultSet

)对象的访问方法获取数据:

 

   

75.

 

     

while

(rs.next()){ 

   

76.

 

         String name = rs.getString(

"name"

)  

   

77.

 

    String pass = rs.getString(

1

)  

// 

此方法比较高效

 

   

78.

 

     } 

   

79.

 

    

(列是从左到右编号的,并且从列

1

开始)

 

   

80.

 

 

7

、关闭

JDBC

对象

  

   

81.

 

     

操作完成以后要把所有使用的

JDBC

对象全都关闭,以释放

JDBC

资源,关闭

顺序和声

 

   

82.

 

     

明顺序相反:

 

   

83.

 

     

1

、关闭记录集

 

   

84.

 

     

2

、关闭声明

 

   

85.

 

     

3

、关闭连接对象

 

   

86.

 

          

if

(rs != 

null

){   

// 

关闭记录集

 

   

87.

 

        

try

   

88.

 

            rs.close()  

   

89.

 

        }

catch

(SQLException e){ 

   

90.

 

            e.printStackTrace()  

   

91.

 

        } 

   

92.

 

          } 

   

93.

 

          

if

(stmt != 

null

){   

// 

关闭声明

 

   

94.

 

        

try

   

95.

 

            stmt.close()  

   

96.

 

        }

catch

(SQLException e){ 

   

97.

 

            e.printStackTrace()  

   

98.

 

        } 

   

99.

 

          } 

   

100.

 

          

if

(conn != 

null

){  

// 

关闭连接对象

 

   

101.

 

         

try

   

102.

 

            conn.close()  

   

103.

 

         }

catch

(SQLException e){ 

   

104.

 

            e.printStackTrace()  

   

105.

 

         } 

   

106.

 

          } 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值