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

------<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 block
			e.printStackTrace();
		}finally{
			try {
				if(st!=null){
				st.close();
				st=null;
				}
				
			} catch (Exception e) {
				// TODO Auto-generated catch block6
				e.printStackTrace();
			}
			if(con!=null){
				try {
					con.close();
					con=null;
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.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 block
		e.printStackTrace();
	}finally{
		try {
			st.close();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			try {
				con.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	};
	System.out.println(num);
	return num;
	 
	
}}
</span>

总结:

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





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值