JDBC学习笔记1
JDBC(java database connectivity)
一、基于socket+数据库底层协议
java  sun ------标准(接口)java.sql.*;
jdbc sun公司为了方便连接数据库,给出了一套接口。这套接口由各大数据库厂商去实现,最终数据库厂商都会给出一套jar包。
二、接口
Driver 数据驱动,直接将我们编写的代码转化为数据库的网络协议
Statement  执行静态的sql语句
preparedstatement预编译
Connection  获取数据库的连接
ResultSet   接受数据库返回的结果集
DirverManager  驱动管理类,对驱动进行管理
ojdbc14.jar 开发人员提供的
ojdbc14_g.jar  运行的时候会输入大量的测试语句,数据开发人员
ojdbc5.jar 因为jdk版本太高,就用这个jar包
连接数据库的四个要素
//驱动类
	private String driver="oracle.jdbc.OracleDriver";
			//请求资源路径
	private String url="jdba:oracle:thin:@localhost:1521:XE";
			//用户名
	private String user="victor";
	        //密码
	private String password="victor";
1、driver--指向的是包名+类名
oracle.jdbc.driver.OracleDriver
2、url:jdbc:oracle:thin:@localhost:1521:XE
thin代表的是连接方式
@localhost请求数据库所处服务器的ip地址
1521数据库的端口号
网页的端口号8080
XE数据库的名字
3、user  用户名---》自己将来要连接操作的用户
4、password 登录密码
Properties集合
存放的是key——value,一般只对字符串使用
存值setProperty(key,value);类型都是String
取值getProperty(key);key必须是String
可以加载普通的file文件,或以.properties结尾的文件
文件里的内容必须是=连接的,不要出现空格
操作流程:
1、注册驱动
2、获取数据库的连接
3、创建statement对象
4、执行sql语句
5、关闭资源
execute(sql) boolean执行sql语句的时候,执行成功true,反之false
executeUpdate(sql)   int  表示影响的行计数
executeQuery(sql)    resultSet  返回结果集,通常用在查询语句中,获取数据库的数据
加载驱动的三种方式:自动加载【反射创建】、手动加载【实例化】、虚拟机传参数创建
import java.sql.DriverManager;
import java.sql.SQLException;
public class Touch {
	//连接数据库的四要素
			//驱动类
	private String driver="oracle.jdbc.OracleDriver";
			//请求资源路径
	private String url="jdba:oracle:thin:@localhost:1521:XE";
			//用户名
	private String user="victor";
	        //密码
	private String password="victor";
	public void connect(){
		//1、自动注册驱动[通过反射注册驱动]
		java.sql.Connection con;
		try {
			//加载驱动
			Class.forName(driver);
			//获取数据库连接
			con=DriverManager.getConnection(url, user, password);
			System.out.println(con);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public void connect1(){
		//2、注册驱动,实例化,手动注册
		java.sql.Connection con;
		try {
			////加载驱动
			//Driver dri=new OracleDriver();
			//获取数据库连接
			con=DriverManager.getConnection(url, user, password);
			System.out.println(con);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public void connect2(){
	    //3、虚拟机传参数
		//-Djdbc.drivers=oracle.jdbc.OracleDriver
		java.sql.Connection con;
		try {
		    //获取数据库连接
			con=DriverManager.getConnection(url, user, password);
			System.out.println(con);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public static void main(String[] args){
		Touch t=new Touch();
		t.connect();
		t.connect1();
		t.connect2();
	}
}
插入数据的两种方式【带参数和不带参数】和手动提交事务
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import oracle.jdbc.driver.OracleDriver;
public class LinkInsert {
	private String url="jdbc:oracle:thin:@localhost:1521:XE";
	private String user="victor";
	private String password="victor";
	//插入数据第一种方式
	  public void link(){
		java.sql.Connection con;
		java.sql.Statement  sta;
		java.sql.ResultSet  res;
		try {
			//加载驱动
			Class.forName(driver);
			//获取数据库连接
			con=DriverManager.getConnection(url, user, password);
			//创建statement对象
			sta=con.createStatement();
			String sql="insert into lanzhou values(2,'lisi','femal')";
			//执行SQL语句
			res=sta.executeQuery(sql);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	//插入数据第一种方式
	   public void link1(int id, String name,String gender){
		java.sql.Connection con;
		java.sql.Statement  sta;
		java.sql.ResultSet  res;
		Driver driver=new OracleDriver();
		try {
			DriverManager.registerDriver(driver);
			con=DriverManager.getConnection(url, user, password);
			sta=con.createStatement();
			String sql="insert into lanzhou values("+id+",'"+name+"','"+gender+"')";
			res=sta.executeQuery(sql);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
}
	//手动提交事物
	public void link2(){
		java.sql.Connection con = null;
		java.sql.Statement  sta = null;
		java.sql.ResultSet  res = null;
		//第一步:注册驱动
		Driver driver=new OracleDriver();
		try {
			DriverManager.registerDriver(driver);
			//第二部:获取连接
			con=DriverManager.getConnection(url, user, password);
			//手动提交事物的设置,默认为true
			con.setAutoCommit(false);
			//第三步:创建Statement对象
			sta=con.createStatement();
			String sql="insert into lanzhou values(4,'wangwu','femal')";
			//第四步:执行sql语句
			res=sta.executeQuery(sql);
			//第五步:提交事物
			con.commit();
		} catch (SQLException e) {
			//事物回滚,撤销
			try {
				con.rollback();
			} catch (SQLException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			try {
				if(res!=null)
					res.close();
				if(sta!=null)
					sta.close();
				if(con!=null)
					con.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	}
	}
	public static void main(String[] args){
		LinkInsert l=new LinkInsert();
		//l.link();
		//l.link1(3, "lisi", "male");
		l.link2();
	}
}
两种查询【带参数和不带参数】
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import oracle.jdbc.driver.OracleDriver;
public class Connection {
	private String url="jdbc:oracle:thin:@localhost:1521:XE";
	private String user="victor";
	private String password="victor";
	public void connect(){
		java.sql.Connection con=null;
		java.sql.Statement  sta=null;
		java.sql.ResultSet  res=null;
		Driver driver=new OracleDriver();
		try {
			DriverManager.registerDriver(driver);
			con=DriverManager.getConnection(url, user, password);
			sta=con.createStatement();
			String sql="select * from lanzhou";
			//执行sql语句,要有结果放回,故用下面的语句
			res=sta.executeQuery(sql);
			//set.next返回的是boolean,如果下一个位置有值true
			while(res.next()){
				System.out.println("id="+res.getInt(1)+"  ;  "+"name="+res.getString(2)+"  ;  "+"gender="+res.getString(3));
				//System.out.println("name="+res.getString(2));
				//System.out.println("gender="+res.getString(3));
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public void connect1(int id){
		java.sql.Connection con=null;
		java.sql.Statement  sta=null;
		java.sql.ResultSet  res=null;
		Driver dri=new OracleDriver();
		try {
			DriverManager.registerDriver(dri);
			con=DriverManager.getConnection(url, user, password);
			sta=con.createStatement();
			String sql="select * from lanzhou where id="+id;
			res=sta.executeQuery(sql);
			while(res.next()){
				System.out.println("id="+res.getInt(1)+"  ;  "+"name="+res.getString(2)+"  ;  "+"gender="+res.getString(3));
				//System.out.println("id="+res.getInt(1));
				//System.out.println("name="+res.getString(2));
				//System.out.println("gender="+res.getString(3));
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}	
	public static void main(String[] args){
		Connection c=new Connection();
		//c.connect();
		c.connect1(1);
	}
}
eclipse和数据库手动连接的步骤:
1、创建一个.sql文件
2、打开open perspective窗口,选择datebase development
3、选择date source explorer窗口点击带黄色加号的图标(new connection profile)
4、然后选择相应的数据库【oracle等等】,可以将名字(name)改为数据库的名字
5、进入Driver设置选项,点击 new driver definition
6、设置name/type为9或者10;设置添加数据库中jdbc相应的jar包(ojdbc14.jar);properties设置将@后面的server设置为localhost,将db改为数据库的名字(如:XE);
将datebase name 改为数据库中自己的用户,将password改为自己用户的密码。
7、然后点击OK ,最后输入user name 输入自己数据库用户的密码,最后点击test connection测试,如果显示ping successed! 则表示连接成功。最后选择savepassword,并点击finish。
8、最后在新建的sql文件中选择type:数据库类型[oracle9、10];
name:数据库的名字[oracle];
datebase:数据库的名字[XE].
这样就可以在eclipse中操作数据库了,SQL result 中会显示.sql文件中操作语句的状态和操作结果。
调用Test方法运行程序
导入JUnit4包即可:
@Test
	public void clrear(){
		//clear清空缓存中的对象
		Person p1=new Person();
		p1.setId(2L);
		p1.setName("王五");
		p1.setGender("nan");
		p1.setBird(new Date());
		session.save(p1);
		tran.commit();
		session.clear();
		Person ps=(Person) session.get(Person.class, 2L);
		System.out.println(ps);
		session.close();
	}
JDBC学习笔记1的更多相关文章
- JDBC 学习笔记(十一)—— JDBC 的事务支持
		
1. 事务 在关系型数据库中,有一个很重要的概念,叫做事务(Transaction).它具有 ACID 四个特性: A(Atomicity):原子性,一个事务是一个不可分割的工作单位,事务中包括的诸操 ...
 - JDBC 学习笔记(十)—— 使用 JDBC 搭建一个简易的 ORM 框架
		
1. 数据映射 当我们获取到 ResultSet 之后,显然这个不是我们想要的数据结构. 数据库中的每一个表,在 Java 代码中,一定会有一个类与之对应,例如: package com.gerrar ...
 - JDBC 学习笔记(六)—— PreparedStatement
		
1. 引入 PreparedStatement PreparedStatement 通过 Connection.createPreparedStatement(String sql) 方法创建,主要用 ...
 - JDBC学习笔记二
		
JDBC学习笔记二 4.execute()方法执行SQL语句 execute几乎可以执行任何SQL语句,当execute执行过SQL语句之后会返回一个布尔类型的值,代表是否返回了ResultSet对象 ...
 - JDBC学习笔记一
		
JDBC学习笔记一 JDBC全称 Java Database Connectivity,即数据库连接,它是一种可以执行SQL语句的Java API. ODBC全称 Open Database Conn ...
 - JDBC学习笔记(2)——Statement和ResultSet
		
Statement执行更新操作 Statement:Statement 是 Java 执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句.Statement ...
 - JDBC学习笔记(1)——JDBC概述
		
JDBC JDBC API是一个Java API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据.JDBC代表Java数据库连接. JDBC库中所包含的API任务通常与数据库使用: 连接到数 ...
 - 【转】JDBC学习笔记(2)——Statement和ResultSet
		
转自:http://www.cnblogs.com/ysw-go/ Statement执行更新操作 Statement:Statement 是 Java 执行数据库操作的一个重要方法,用于在已经建立数 ...
 - 【转】JDBC学习笔记(1)——JDBC概述
		
转自:http://www.cnblogs.com/ysw-go/ JDBC JDBC API是一个Java API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据.JDBC代表Java数据 ...
 - JDBC学习笔记(1)
		
说明:本系列学习笔记主要是学习传智播客的李勇老师的教学课程和一本英文电子书<JDBC Recipes A Problem-Solution Approach>所作的笔记. 1,什么是JDB ...
 
随机推荐
- Linux环境下使用shell编写CGI(httpd)
			
/var/www/cgi-bin/hello.sh #!/bin/bash echo "Content-type: text/html" echo "" ech ...
 - Storyboards
			
这里是吐槽时间,换掉了mac默认的输入法,出发点只有一个,就是切换中英文输入的时候相当不爽.也许是习惯了其他各大输入法的一键切换,而又没有找到自带输入法可设置的地方. Segue 以前我们使用navi ...
 - 解决 CentOS网卡eth0启用不了问题
			
转自:http://www.centoscn.com/CentosBug/osbug/2014/0423/2850.html [root@localhost Desktop]# service net ...
 - view的setTag() 和 getTag()应用 (转)
			
原文地址:http://www.cnblogs.com/qingblog/archive/2012/07/03/2575140.html View中的setTag(Onbect)表示给View添加一个 ...
 - 接着上一篇 《Is WPF dead》
			
最近美国的PM传来消息,说微软在收集开发者的意见,会对WPF进行改进,微软会主要在1) performance 2) interop 3) touch and 4) access to WinRT A ...
 - 数字信号处理实验(一)——DTFT
			
1.MATLAB自编绘图函数 function [] = signal_write(X,w,flag) % X:数据 % w:频率向量 magX=abs(X);angX=angle(X); realX ...
 - Linux内核system_call中断处理过程
			
“平安的祝福 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ” men ...
 - Base64编码保存到文件服务器
			
byte[] buffer = Convert.FromBase64String(param.Base64Code); System.Net.WebClient webClient = new Sys ...
 - 大端模式 VS 小端模式
			
简单点说,就是字节的存储顺序,如果数据都是单字节的,那怎么存储无所谓了,但是对于多字节数据,比如int,double等,就要考虑存储的顺序了.注意字节序是硬件层面的东西,对于软件来说通常是透明的.再说 ...
 - HTML DOM学习之二
			
1.HTML DOM属性: **innerHTML属性-获取元素内容的最简单方法是使用innerHTML属性,innerHTML属性对于获取或替换HTML元素的内容很有用 <html> & ...