JDBC技术

JDBC技术

一、JDBC简介
JDBC(Java DataBase Connectivity)是Java运行平台的核心类库中的一部分,提供了访问数据库的API,
我们经常使用JDBC进行如下操作:
与一个数据库建立连接。
向已连接的数据库发送SQL语句。
处理SQL语句返回的结果。
二、JDBC API
1、DriverManager
DriverManager类是JDBC的管理层,作用于用户和驱动程序之间。跟踪可用的驱动程序,并在数据库和相应驱动程序之间建立连接。另外,DriverManager类也处理诸如驱动程序登录时间限制及登录和跟踪消息的显示等事务。
2、Connection
Connection对象代表与数据库的连接。连接过程包括所执行的SQL语句和在该连接上所返回的结果。一个应用程序可与单个数据库有一个或多个连接,或者可与许多数据库有连接。
3、Statement
Statement对象用于将SQL语句发送到数据库中。实际上有三种Statement对象,它们都作为在给定连接上执行SQL语句的包容器:Statement、PreparedStatement(它从Statement继承而来)和CallableStatement(它从PreparedStatement 继承而来)。它们都专用于发送特定类型的SQL语句:Statement对象用于执行不带参数的简单SQL语句;PreparedStatement对象用于执行带或不带IN参数的预编译SQL语句;CallableStatement对象用于执行对数据库已存储过程的调用。Statement接口提供了执行语句和获取结果的基本方法。PreparedStatement接口添加处理IN参数的方法;而CallableStatement添加处理OUT参数的方法。
4、ResultSet
使用Statement对象执行executeQuery()方法,将会返回一个数据库的结果集。结果集一般是一个表,其中有查询所返回的列标题及相应的值。ResultSet记录集中包含符合SQL语句中条件的所有行,并且它通过一套get方法(这些get方法可以访问当前行中的不同列)提供对这些行中数据的访问。ResultSet使用next方法用于移动到ResultSet中的下一行,使下一行成为当前行。
三、连接过程
1、连接前准备
下载MySql数据库的JDBC驱动程序:mysql.connector-java-5.1.6-bin.jar,复制到Tomcat安装目录下的lib文件夹中。
2、连接数据库
(1)加载JDBC驱动程序
Class.forName(com.mysql.jdbc.Driver)
(2)提供JDBC URL
URL = “jdbc:mysql://localhost:3306/book?user=root&password=root”
(3)获取Connection对象
conn = DriverManager.getConnection(URL)
3、关闭连接
四、更新、添加与删除操作
更新数据库中的数据,可以使用SQL语句的UPDATE、INSERT和DELETE操作,然后将包含UPDATE、INSERT、DELETE的SQL语句交给Statement对象的executeUpdate()方法执行。Statement对象用于执行不带参数的简单SQL语句。
五、查询操作
显示和查询数据库的操作,与执行更新的操作基本相似。不同的是使用的SQL语句不同,并且操作完成后往往需要对查询的结果集进行处理
六、预处理语句
1、许多成熟的数据库都支持预处理语句(Prepared Statements)的概念。它们是什么东西?我们可以把它们想成是一种编译过的要执行的SQL语句模板,可以使用不同的变量参数定制它。
2、预处理语句具有两个主要的优点:
(1)查询只需要被解析(或准备)一次,但可以使用相同或不同的参数执行多次。
(2)传给预处理语句的参数不需要使用引号,底层驱动会处理这个。
3、包含于PreparedStatement对象中的SQL语句可具有一个或多个IN参数。IN参数的值在SQL语句创建时未被指定。相反的,该语句为每个IN参数保留一个问号(“?”)作为占位符。每个问号的值必须在该语句执行之前,通过适当的SetXXX方法来提供。
七、JDBC主要接口
1、Class.forName()声明驱动程序类型。
2、Java.sql.DriverManager用来装载驱动程序,并且为创建新的数据库联接提供支持。
3、Java.sql.Connection完成对某一指定数据库的联接
4、Java.sql.Statement在一个给定的连接中作为SQL执行声明的容器,他包含了两个重要的子类型。
5、Java.sql.PreparedSatement用于执行预编译的sql声明
6、Java.sql.CallableStatement用于执行数据库中存储过程的调用
7、Java.sql.ResultSet对于给定声明取得结果的途径。
八、查询记录
对一个数据库中表进行查询操作的具体步骤:
1、创建SQL语句对象:Statement对象
2、处理查询结果
3、sql对象可以调用相应的方法实现对数据库中表的查询和修改,并将查询结果存放在一个ResultSet类声明的对象中。
4、ResultSet对象使用next()方法一次看到一个数据行,
5、取不同字段类型数据的方法
(1)getByte(“columnName”):取得当前行中列名为columnName的字节类型值
(2)getShort(“columnName”):取得当前行中列名为columnName的短整类型值
(3)getInt(“columnName”) :取得当前行中列名为columnName的整型类型值
(4)getLong(“columnName”) :取得当前行中列名为columnName的长整类型值
(5)getFloat(“columnName”) :取得当前行中列名为columnName的单精实数类型值
(6)getDouble(“columnName”) : 取得当前行中列名为columnName的双精类型值
(7)getBoolean(“columnName”) : 取得当前行中列名为columnName的布尔类型值
(8)getString (“columnName”) :取得当前行中列名为columnName的字符串类型值
(9)getDate(“columnName”) : 取得当前行中列名为columnName的日期类型值
(10)getTime(“columnName”) :取得当前行中列名为columnName的时间类型值
6、顺序查询
通过conn.getMetaData()获取字段信息
通过rs.getString(index)获取每条记录相应字段的内容
7、随机查询 为了在结果集中可以前后移动,随机显示若干记录,必须要返回一个可滚动的结果集。
8、条件查询 where =
9、排序查询 order by
10、模糊查询 where like ‘%%’
九、添加记录
可以使用SQL语句添加新的记录。
1、Statement对象调用方法:
public int executeUpdate(String sqlStatement);
通过参数sqlStatement指定的方式实现向数据库表中添加新的记录。
例如:
executeUpdate(“INSERT INTO user VALUES (100, ‘test’, 'test’)”);
十、删除记录
可以使用SQL语句删除记录。
1、Statement对象调用方法:
public int executeUpdate(String sqlStatement);
删除数据库表中的记录。
例如:
executeUpdate("DELETE FROM user WHERE username= ‘test’ ");
十一、用结果集操作数据库中的表
1、可以使用内存中ResultSet对象对底层数据库表进行更新和插入操作。前提是要事先返回结果集。
2、更新记录中的列值
结果集rs的游标移动到第n行
rs.absolute(n);
结果集将第n行的p列的列值更新
rs.updateInt(String columnName, int x)
更新数据库中的表
3、插入记录
结果集rs的游标移动到插入行
rs.moveToInsertRow();
更新插入行的列值updateXXX()
rs.updateString(2, “test”);
插入记录 insertRow()
rs.insertRow();
十二、预处理语句
1、预处理语句优点
(1)对于JDBC,如果使用Connection和某个数据库建立了连接对象con,那么con就可以调用方法对参数sql指定的SQL语句进行预编译处理,生成该数据库底层的内部命令,并将该命令封装在PreparedStatement对象pre中
PreparedStatement pre=con.prepareStatement(String sql);
(2)对象pre可以随时地执行下述方法,提高访问数据库的速度。
ResultSet executeQuery()
boolean execute()
int executeUpdate()
2、使用统配符
在对SQL进行预处理时可以使用统配符“?”来代替字段的值,只要在预处理语句执行之前再设置统配符所表示的具体值即可。
例如:pre=con.prepareStatement("SELECT * FROM user WHERE username= ? “);
pre.setString(1,“liming”);
等同于:
pre=con.prepareStatement("SELECT * FROM user WHERE username=liming’ ");
十三、常见数据库连接
1、Microsoft SQLServer(microsoft)
(1)Class.forName( “com.microsoft.jdbc.sqlserver.SQLServerDriver” );
(2)cn = DriverManager.getConnection( “jdbc:microsoft:sqlserver://DBServerIP:1433;databaseName=master”, userName, password );
2、MySQL
(1)Class.forName(“com.mysql.jdbc.Driver”)
(2)或Class.forName( “org.gjt.mm.mysql.Driver” );
(3)cn = DriverManager.getConnection( “jdbc:mysql://DBServerIP:3306/myDatabaseName”, userName, password );
3、Oracle(classes12.jar)
(1)安装Oracle后,找到目录Oracle/ora81/jdbc中的classes.jar(classes12.jar),即用java编写Oracle数据库驱动程序。
(2)Class.forName(“oracle.jdbc.driver.OracleDriver”);
(3)cn = DriverManager.getConnection(“jdbc:oracle:thin:@MyDbComputerNameOrIP:1521:ORCL”, userName, password );
4、DB2
(1)Class.forName(“Com.ibm.db2.jdbc.net.DB2Driver”);
(2)String url=“jdbc:db2://dburl:port/DBname”
(3)cn = DriverManager.getConnection(url, userName, password);
5、Sybase(jconn2.jar)
(1)Class.forName( “com.sybase.jdbc2.jdbc.SybDriver” );
(2)cn = DriverManager.getConnection( “jdbc:sybase:Tds:DBServerIP:2638”, userName, pas
如果没有JDBC驱动程序,可用使用Sun的JDBC-ODBC桥接驱动程序,其语句为:
(1)Class.forName( “sun.jdbc.odbc.JdbcOdbcDriver” );
(2)Connection cn = DriverManager.getConnection( “jdbc:odbc:” + sDsn, userName, password );
6、常见数据库连接
Access也是比较流行的一种数据库管理系统,操作简单、使用方便。一些规模不大的Web应用经常使用Access数据库数据库管理系统。
(1).建立JDBC-ODBC桥接器
try{
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
} catch(ClassNotFoundException e){
out.print(e);
}
(2).创建ODBC数据源时选择的数据库驱动程序为:
Microsoft Access Driver(*.mdb)
(3).和ODBC数据源建立连接
Connection con=DriverManager.getConnection(“jdbc:odbc: 数据源名字”, “登录名”, “密码”);

你可能感兴趣的:(JDBC技术)