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 ... 
随机推荐
- Codeforces Testing Round #12 C. Subsequences  树状数组
			C. Subsequences For the given sequence with n different elements find the number of increasing s ... 
- Vue#Class 与 Style 绑定
			绑定HTMLCLASS 在我没看这之前,我觉得要写绑定class ,应该像绑定数据一样这么写 class ={{class-a}} 看官方教程时,不推荐这么写,推荐这样 v-bind:class=&q ... 
- 通信原理实践(五)——2PSK 与2DPSK 通信系统
			一.一些Matlab函数 二.2PSK调制解调,性能分析 1.2PSK调制 (1)图示 (2)Matlab代码 function [ s_t ,bb_t,bits] = psk2_module( nS ... 
- LayoutInflater(一)
			相信接触Android久一点的朋友对于LayoutInflater一定不会陌生,都会知道它主要是用于加载布局的.而刚接触Android的朋友可能对LayoutInflater不怎么熟悉,因为加载布局的 ... 
- windows mysql 自动备份的几种方法
			转自:http://www.cnblogs.com/liongis/archive/2013/03/12/2956573.html 1.复制date文件夹备份===================== ... 
- java gui 之容器组件
			演示Frame和Panel package unit7; import java.awt.*; public class SimpleFrame { public static void main(S ... 
- 在CSDN中添加友情连接
			<a bref='http://www......'>友情连接</a><br/> <a bref='http://www......'>友情连接2< ... 
- 给img添加类名可以动态切换图片
			<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ... 
- loopback 05
			数据并发处理 数据库事务 事务隔离 ACID性质 原子性(Atomicity): 要么全部被执行,要么都不执行; 一致性(Consistency): 满足完整性约束; 隔离性(Isolation): ... 
- http://www.roncoo.com/article/detail/124661
			http://www.roncoo.com/article/detail/124661 
