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的更多相关文章

  1. JDBC 学习笔记(十一)—— JDBC 的事务支持

    1. 事务 在关系型数据库中,有一个很重要的概念,叫做事务(Transaction).它具有 ACID 四个特性: A(Atomicity):原子性,一个事务是一个不可分割的工作单位,事务中包括的诸操 ...

  2. JDBC 学习笔记(十)—— 使用 JDBC 搭建一个简易的 ORM 框架

    1. 数据映射 当我们获取到 ResultSet 之后,显然这个不是我们想要的数据结构. 数据库中的每一个表,在 Java 代码中,一定会有一个类与之对应,例如: package com.gerrar ...

  3. JDBC 学习笔记(六)—— PreparedStatement

    1. 引入 PreparedStatement PreparedStatement 通过 Connection.createPreparedStatement(String sql) 方法创建,主要用 ...

  4. JDBC学习笔记二

    JDBC学习笔记二 4.execute()方法执行SQL语句 execute几乎可以执行任何SQL语句,当execute执行过SQL语句之后会返回一个布尔类型的值,代表是否返回了ResultSet对象 ...

  5. JDBC学习笔记一

    JDBC学习笔记一 JDBC全称 Java Database Connectivity,即数据库连接,它是一种可以执行SQL语句的Java API. ODBC全称 Open Database Conn ...

  6. JDBC学习笔记(2)——Statement和ResultSet

    Statement执行更新操作 Statement:Statement 是 Java 执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句.Statement ...

  7. JDBC学习笔记(1)——JDBC概述

    JDBC JDBC API是一个Java API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据.JDBC代表Java数据库连接. JDBC库中所包含的API任务通常与数据库使用: 连接到数 ...

  8. 【转】JDBC学习笔记(2)——Statement和ResultSet

    转自:http://www.cnblogs.com/ysw-go/ Statement执行更新操作 Statement:Statement 是 Java 执行数据库操作的一个重要方法,用于在已经建立数 ...

  9. 【转】JDBC学习笔记(1)——JDBC概述

    转自:http://www.cnblogs.com/ysw-go/ JDBC JDBC API是一个Java API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据.JDBC代表Java数据 ...

  10. JDBC学习笔记(1)

    说明:本系列学习笔记主要是学习传智播客的李勇老师的教学课程和一本英文电子书<JDBC Recipes A Problem-Solution Approach>所作的笔记. 1,什么是JDB ...

随机推荐

  1. 攻城狮在路上(壹) Hibernate(七)--- 通过Hibernate操纵对象(下)

    一.与触发器协同工作: 当Hibernate与数据库的触发器协同工作时,会出现以下两类问题: 1.触发器使Session缓存中的数据和数据库中的不一致: 出现此问题的原因是触发器运行在数据库内,它执行 ...

  2. Grafana 安装

    由于 Grafana 是存静态的,你只需要下载源代码解压,将它部署在 Nginx 上面就可以了,或者可以用 Python 的 SimpleHTTPServer 来跑 $ wget http://gra ...

  3. jsp,图片显示

    问题:jsp中显示项目中image文件夹中的图片 1,项目中image文件夹中有对应的图片 2,<img ,src="/项目名/image/图片名.jpg">,用其他变 ...

  4. [荐] jQuery取得select选择的文本与值

    csdn:http://blog.csdn.net/tiemufeng1122/article/details/44154571 jquery获取select选择的文本与值获取select :获取se ...

  5. HDU 3364 Lanterns 高斯消元

    Lanterns Problem Description   Alice has received a beautiful present from Bob. The present contains ...

  6. 移动 Web 开发技巧

    1.使用click会出现绑定点击区域闪一下的情况,解决:给该元素一个样式如下 -webkit-tap-highlight-color: rgba(0,0,0,0); 2.用iphone或ipad浏览很 ...

  7. 解决android expandablelistview 里面嵌入gridview行数据重复问题

    最近做了一个“csdn专家博客App” 当然了是android版本,在专家浏览页面,我才用了expandablelistview 组件来显示专家分类,每个分类点击之后可以显示专家的头像和名字. 很简单 ...

  8. Eclipse首字母快捷设置

    windows->Preference  ,然后:

  9. Java数组课后作业

    1.运行TestArrays.java,了解Arrays中的一些重要方法的用法. Arrays.equals(a 1, a2):判断数组是否相等. int[] b = Arrays.copyOf(a, ...

  10. js总结1