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文件中操作语句的状态和操作结果。

时间: 2024-11-03 14:58:36

JDBC学习笔记1的相关文章

JDBC学习笔记(一)

public static void main(String[] args) { ResultSet rs = null; Statement stmt = null; Connection conn = null; try { /** * 1.加载JDBC驱动程序: * 加载目标数据库驱动到JVM * 成功加载后,会将Driver类的实例注册到DriverManager类 * oracle-Driver:oracle.jdbc.driver.OracleDriver * MySQL-Drive

JDBC学习笔记二

Statement执行更新操作 Statement:Statement 是 Java 执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句.Statement对象,用于执行不带参数的简单SQL语句. 通过JDBC向指定的数据表中插入一条记录,需要注意下面的几点: * 1.Statement:用于执行SQL语句的对象 * 1).通过COnnection的createStatement()方法来获取 * 2).通过excuteUpdate(sql)可以执行S

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

转自:http://www.cnblogs.com/ysw-go/ Statement执行更新操作 Statement:Statement 是 Java 执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句.Statement对象,用于执行不带参数的简单SQL语句. 通过JDBC向指定的数据表中插入一条记录,需要注意下面的几点: * 1.Statement:用于执行SQL语句的对象 * 1).通过COnnection的createStatement()方

JDBC学习笔记一

JDBC JDBC API是一个Java API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据.JDBC代表Java数据库连接. JDBC库中所包含的API任务通常与数据库使用: 连接到数据库 创建SQL或MySQL语句 在数据库中执行SQL或MySQL查询 查看和修改记录 JDBC架构   JDBC API支持两层和三层的处理模式对数据库的访问,但一般JDBC体系结构由两层组成: JDBC API: 这提供了应用程序到JDBC管理器连接. JDBC Driver API: 这支持J

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

转自:http://www.cnblogs.com/ysw-go/ JDBC JDBC API是一个Java API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据.JDBC代表Java数据库连接. JDBC库中所包含的API任务通常与数据库使用: 连接到数据库 创建SQL或MySQL语句 在数据库中执行SQL或MySQL查询 查看和修改记录 JDBC架构   JDBC API支持两层和三层的处理模式对数据库的访问,但一般JDBC体系结构由两层组成: JDBC API: 这提供了应用程

JDBC学习笔记及问题小结

JDBC => Java Database connectivity => 数据库连接 JDBC 就是由 java提供的一套访问数据库的统一api. 使用这套api , 我们在 切换库时 十分方便. 并且切换库不会改变代码.学习成本也降低了. 1.开发一个jdbc程序 1> 导包 ==> 导入厂商提供的数据库驱动. ==> mysql-connector-java-5.0.8-bin.jar 2> 注册驱动 3> 连接数据库 4> 操作数据库(执行sql)

JDBC学习笔记(7)——事务的隔离级别&批量处理

数据库事务的隔离级别 对于同时运行的多个事务, 当这些事务访问数据库中相同的数据时, 如果没有采取必要的隔离机制, 就会导致各种并发问题:脏读: 对于两个事物 T1, T2, T1 读取了已经被 T2 更新但还没有被提交的字段. 之后, 若 T2 回滚, T1读取的内容就是临时且无效的.不可重复读: 对于两个事物 T1, T2, T1 读取了一个字段, 然后 T2 更新了该字段. 之后, T1再次读取同一个字段, 值就不同了.幻读: 对于两个事物 T1, T2, T1 从一个表中读取了一个字段,

JDBC学习笔记(10)——调用函数&存储过程

如何使用JDBC调用存储在数据库中的函数或存储过程: * 1.通过COnnection对象的prepareCall()方法创建一个CallableStatement *    对象的实例,在使用Connection对象的prepareCall() 方法时,需要传入一个String类型的字符串, *    该字符串用于指明如何调用存储过程 * 2.通过CallableStatement对象的registerOutParameter() 方法注册Out参数 * 3.通过CallableStateme

JDBC学习笔记(9)——DBUtils的使用

使用DBUtils提供的功能需要使用commons-dbutils-1.6.jar这个JAR包,在Apache官网可以下载到 使用DBUtils进行更新操 测试QueryRunner类的update方法 ,该方法可用于insert,update,delete操作具体代码实现 1 @Test 2 public void testQuertRunnerUpdate() { 3 // 1.创建QueryRunner的实现类 4 String sql = "delete from customers&q

JDBC学习笔记(三)大文本数据的读写

一.用JDBC向数据库插入大文本数据 String sql = "insert into my_clob values (null, ?)"; ps = conn.prepareStatement(sql); File f = new File("D:\\BaiduNetdiskDownload\\mysql\\jdbc.sql"); Reader reader = new BufferedReader(new FileReader(f)); ps.setChara