黑马程序员——java基础——JDBC基础操作

来源:互联网 发布:mysql的级联删除 编辑:程序博客网 时间:2024/06/03 21:52

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

JDBC简介

JDBC使得java程序员可以利用相同的代码访问不同的数据库。这是通过利用JDBC驱动程序作为Java代码和关系数据库之间的翻译程序而实现的,一种语言就有一种翻译,jdbc驱动程序就相当于一种翻译。

每种数据库都需要一个不同的JDBC的驱动程序然而事实如此,当今世界上的所有的数据库都有JDBC数据库驱动程序,JDBC驱动程序也可以来自第三方,所以数据库可能会有几个版本的JDBC驱动程序,比如想在流行的数据库Oracle,服务器端就有一个数据库驱动程序JDBC,还有一个已经优化过用来处理存储过程的。

Java发行包也包括一个默认的JDBC-ODBC驱动程序当可以通过ODBC连接到数据库时,它便可以连接到某个数据库,这证明,Java一面世就让他得到广泛的接受

从技术上来讲有四种JDBC驱动程序他们简单的称做:

1:Type1,这是一个JDBC-ODBC桥梁,促使通过一个ODBC驱动程序访问数据库,这类驱动程序很慢,只适合用于没其他JDBC驱动程序可用的情况。

2:Type2,,这个类型部分使用native-API编写,部分使用java编写。这类驱动程序利用数据库的clientAPI来连接数据库。

3:Type3,这类驱动程序会将JDBC调用翻译成中间件供应商的协议,然后再有中间件服务器翻译成数据库访问协议。

4:Type,这类驱动程序是用java编写的,直接连接到数据库

访问数据库的五个步骤:

1:加载要连接的数据库的JDBC驱动程序

2:获取一个数据库连接

3:创建一个表示某一条SQL语句的java.sql.Statement实例

4:根据需要创建一个java.sql.ResultSet对象,用来保存数据库返回的数据

5:关闭数据库以释放资源。

如何加载JDBC驱动程序?

JDBC驱动程序是由java.sql.driver接口表示的他定义了一个JDBC驱动程序和需要连接到数据库任意java类之间的一个契约,JDBC驱动程序经常被部署成一个jar包,你需要确定的是java程序运行的时候,类路径中有这个驱动程序文件

加载一个驱动程序要用到JAVA.LANG.CLASS类的forName静态方法

class.forname("数据库类型")

加载一个JDBC驱动程序的时候会自动在java.sql.DriverDmanger对象中为他注册,以便该对象能过找到驱动程序创建连接

如何建立数据库连接?

数据库连接推动了java代码和关系数据库之间的通信。java.sql.Connection接口是连接对象的模版,利用java.sql.DriverManager类的gerconnection静态方法获取一个连接,这个方法会在内存中查找加载的JDBC驱动程序,并返回一个java.sql.Connection对象,下面是常用的gerConnection重载方法的签名:

Connection getConnection(String url)

Connection gerConnection(String url   String   username     String   password)

第一个是连接不需要用户名和密码验证的数据库

第二个是连接需要用户名和密码验证的数据库,第二个方法可以取代第一个方法,只要将后面的用户名和密码都是为null,方法中第一个参数的是指数据库的位置以及要连接的数据库,第二个参数和第三个参数是数据库的用户名和密码。

数据库连接url地址的格式,不同的数据库,连接格式也有所不同,下面是三中苏据库种连接URL的格式:

Oracle数据库>jdbc:oracle:thin:@localhost:1521:sid
SqlServer数据库>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=sid
MySql数据库>jdbc:mysql://localhost:3306/sid

如何创建Statement对象?                                                                                                                                                                                                                                                                     

java.sql.Statement表示一条SQL语句,可以通过调用java.sql.connection对象中的createStatement方法来获得一个Statement。

Statement statement =connection.createStatement();接着调用Statement对象中的一个方法并传递一条SQL语句 ,如果SQL语句要获取数据,就要使用executeQuery方法,否则使用executeUpdate。下面是使用方法:

ResultSet executeQuery(String sql);

int  executeUpdate(String  sql);

以上这两个方法都是接受喊SQL语句的String参数。SQL语句不需要用数据库语句终结符作为结尾,因为不同数据库语句终结符是不同的例如,oracle用的是一个分号,Sybase则是用单词go表示结束,数据库驱动程序会自动提供适当的语句终止符,在JDBC代码中不需要出现。

executeUpdate方法执行的是创建,更新,修改数据库表,这个方法返回的是INSERT,UPDATE,DELETE语句的行数,或者为不返回任何内容的SQL语句 返回为0;

executeQuetr方法执行的是一个返回数据的查询语句,返回的是一个包含指定查询的结果集,注意他不会返回null值

如何创建一个ResultSet对象?

ResrltSet是从Statement返回的一个数据库表的表示方法,ResultSte对象保存的是指向当前数据行的第一个光标的位置,光标第一次返回时,他位于第一行之前,为了访问ResultSet第一行中的数据,必须调用ResultSet对象中的next方法

next方法将光标移到下一行并返回true或者false,如果当前行有效返回true如果当前没有更多的行则返回false,ResultSet对象中提供了很多方法来来获取里面的数据例如gerInt(),getLong()等等

如何关闭JDBC对象?

JDBC里面设计到了很多对象,我们使用了这写对象我们要及时资源,这里提供了一些关闭资源的方法:

Connection,close()

statement.close()

resuleSet.cose();

下面是数据库操作的代码演示:

<span style="font-size:18px;">package it.com.jichu;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class DButil {public static Connection getConnection(){Connection conn=null;String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=bishe";String userName="sa";String userPwd="1";try{Class.forName(driverName);System.out.println("数据库驱动成功");}catch(Exception e){e.printStackTrace();System.out.println("数据库驱动失败");}try{ conn=DriverManager.getConnection(dbURL,userName,userPwd);System.out.println("数据库连接成功");}catch(Exception e){e.printStackTrace();System.out.print("数据库连接失败");}return conn;}public static String search(String username,String password){String result=null;Connection con=getConnection();Statement st=null;ResultSet rs=null;System.out.print(username);System.out.print(password);try {st=con.createStatement();rs=st.executeQuery("select username from users where username='"+username+"'  and password="+password+"");//System.out.print(rs);if(rs.next()){result=new String(rs.getString(1).getBytes("ISO8859-1"),"GBK");}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{try {if(st!=null){st.close();st=null;}} catch (Exception e) {// TODO Auto-generated catch block6e.printStackTrace();}if(con!=null){try {con.close();con=null;} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}System.out.print(result);return result;}public int  add(String username,String password){int num=0;Connection con=null;Statement st=null;con=getConnection();System.out.println(password);System.out.println(username); String sql="insert into users(username,password)values('"+username+"',"+password+")"; try { st=con.createStatement(); num=st.executeUpdate(sql);if(num>0){System.out.println("插入成功");}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{try {st.close();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{try {con.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}};System.out.println(num);return num; }}</span>

总结:

java有自己的数据库访问和数据库操作技术,称做JDBC,相关功能类放在java.sql包中。





0 0
原创粉丝点击