- 浏览: 105860 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
小小诺:
博主实例2中的代码博主难道没有测试吗?“工资总额不能超过6万元 ...
PLSQL -
emilyzhanghong:
我一般都用工具导入导出,语句记不住.
ORACLE 导入导出
一、jdbc基本概念
jdbc : Java Database Connectivity
sun公司为了统一对数据库的操作,定义了一套api,称之为jdbc
这套api完全有接口组成,我们在编写程序的时候针对接口进行调用
这些接口交给数据库厂家去实现, 不同的数据库厂商会提供不同的实现类,这些实现类被我们称作数据库的驱动
二、实现jdbc程序
步骤:
1. 实验环境
建 user 表 user.sql
create database xday12 character set utf8 collate utf8_general_ci;
use xday12;
create table users(
id int primary key auto_increment,
name varchar(40),
password varchar(40),
email varchar(60),
birthday date
)character set utf8 collate utf8_general_ci;
insert into users(name,password,email,birthday)
values('zs','123456','zs@sina.com','1980-12-04');
insert into users(name,password,email,birthday)
values('lisi','123456','lisi@sina.com','1981-12-04');
insert into users(name,password,email,birthday)
values('wangwu','123456','wangwu@sina.com','1979-12-04');
2. 导入数据库的驱动
mysql-connector-java-5.0.8-bin.jar
3. 编程java程序
// 1. 注册数据库的驱动
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
// 2. 建立与mysql数据库的连接 用到 jdbc api
String url = "jdbc:mysql://localhost:3306/day11";
String user = "root";
String password = "root";
Connection conn = DriverManager.getConnection(url, user, password);
// 3. 创建用于发送sql语句的 Statement 对象
Statement stmt = conn.createStatement();
// 4. 编写一句 sql
String sql = "select * from users";
// 5. 发送sql, 获得结果集
ResultSet rs = stmt.executeQuery(sql);
// 6. 处理结果集
System.out.println("id | name | password | email | birthday");
while(rs.next()) {
// 有第一行
int id = rs.getInt("id"); // 通过列名取值比较直观
String name = rs.getString("name");
String psw = rs.getString("password");
String email = rs.getString("email");
Date birthday = rs.getDate("birthday");
System.out.println(id + " | " + name + " | " + psw + " | " + email + " | " + birthday);
}
// 7. 关闭连接 释放资源
rs.close();
stmt.close();
conn.close();
三、jdbc程序详解
1. 注册驱动
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
上面的语句会导致注册两次驱动
原因在于,查看Driver类的源码会发现在静态代码块中完成了注册驱动的工作,
也就是说注册驱动其实很简单,只需要加载驱动类即可
Class.forName(“com.mysql.jdbc.Driver”);
2. 创建数据库的连接
Connection conn = DriverManager.getConnection(url, user, password);
其中:
url, 相当于数据库的访问地址,程序员通过url指定需要访问的数据库
jdbc:mysql:[]//localhost:3306/test?参数名:参数值
其中jdbc为主协议,mysql为子协议,localhost为主机名,3306为端口号,test为数据库名
url的后面可以跟参数,常用的参数有:user=root&password=root&characterEncoding=UTF-8
如果url地址后面跟了user和password,创建Connection对象时将不必再次传入值
Connection conn = DriverManager.getConnection(url);
补充: 如果访问的localhost:3306,url 可省写为jdbc:mysql:///test
3. Connection 对象
Connection对象用于表示与某个数据库之间的连接,在程序中对数据库的所有操作都需要通过此对象来完成
常用方法有:
createStatement():创建向数据库发送sql的statement对象。
prepareStatement(sql) :创建向数据库发送预编译sql的PrepareSatement对象。
prepareCall(sql):创建执行存储过程的callableStatement对象。
setAutoCommit(boolean autoCommit):设置事务是否自动提交。
commit() :在链接上提交事务。
rollback() :在此链接上回滚事务。
4. Statement 对象
用于向数据库发送sql语句
execute(String sql):用于向数据库发送任意sql语句
executeQuery(String sql) :只能向数据发送查询语句。
executeUpdate(String sql):只能向数据库发送insert、update或delete语句
addBatch(String sql) :把多条sql语句放到一个批处理中。
executeBatch():向数据库发送一批sql语句执行。
5. ResultSet 对象
对于查询操作,该对象特别重要,因为它专门用于封装结果集
存储的形式就是一种表格的形式,同样是列+行,说白了就和我们在 dos 命令行窗口查询的结果一样
遍历方式:
一开始游标指向结果集第一行, 也就是表头
通过 next 将游标移向下一行, 如果没有下一行,该方法会返回false
获得当前行的数据需要调用get方法:
get(int index)获得第几列 列数从1开始
get(String columnName) 根据列名获得值 常用
数据库的数据类型与java中数据类型的对应关系
ResultSet对象的常用方法
next():移动到下一行
previous():移动到前一行
absolute(int row):移动到指定行
beforeFirst():移动resultSet的最前面。
afterLast() :移动到resultSet的最后面。
6. 释放数据库资源
由于数据库的资源非常宝贵,所以用完了一定要记得释放资源
特别是Connection对象,因为数据允许的并发访问连接数量往往都比较有限
在java程序中,我们应该将最终必须要执行的代码放到finally当中
释放资源的代码
if(rs!=null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
rs = null;
}
if(stmt!=null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
stmt = null;
}
if(conn!=null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
conn = null;
}
四、jdbc实现crud
1. 编写程序对User表进行增删改查操作
2. 防止 sql 注入
在 service 层进行逻辑判断
使用PreparedStatement对象
3. 编写工具类对 jdbc 程序进行优化
将获得连接和释放资源的代码写到通用的工具类中
五、 jdbc案例
实现一个简单的员工信息管理系统,练习对员工表的crud
字段名 说明 类型
id 编号 varchar(40)
name 员工姓名 varchar(20)
gender 性别 varchar(4)
birthday 出生日期 date
idcard 身份证号 varchar(20)
degree 学历 varchar(20)
entrydate 入职日期 date
position 部门 varchar(40)
department 职位 varchar(20)
web开发的两种模式
model1: jsp+javabean 只适合小型应用
model2: servlet+jsp+javabean mvc
jsp 的作用只是显示的模板,所以在mvc中jsp应该禁止外界直接方法,藏在 web-inf下面
web应用的分层框架
案例实现步骤:
1. 搭建开发环境
1) 建工程 建包
2) 导入需要jar包
BeanUtils 相关jar包
jstl 标签
mysql 的驱动
3) 创建数据库和表
create database day12_employee;
use day12_employee;
create table employee
(
id varchar(40) primary key,
name varchar(20),
gender varchar(6),
birthday date,
idcard varchar(20),
degree varchar(20),
entrydate date,
department varchar(20),
position varchar(40)
);
jdbc : Java Database Connectivity
sun公司为了统一对数据库的操作,定义了一套api,称之为jdbc
这套api完全有接口组成,我们在编写程序的时候针对接口进行调用
这些接口交给数据库厂家去实现, 不同的数据库厂商会提供不同的实现类,这些实现类被我们称作数据库的驱动
二、实现jdbc程序
步骤:
1. 实验环境
建 user 表 user.sql
create database xday12 character set utf8 collate utf8_general_ci;
use xday12;
create table users(
id int primary key auto_increment,
name varchar(40),
password varchar(40),
email varchar(60),
birthday date
)character set utf8 collate utf8_general_ci;
insert into users(name,password,email,birthday)
values('zs','123456','zs@sina.com','1980-12-04');
insert into users(name,password,email,birthday)
values('lisi','123456','lisi@sina.com','1981-12-04');
insert into users(name,password,email,birthday)
values('wangwu','123456','wangwu@sina.com','1979-12-04');
2. 导入数据库的驱动
mysql-connector-java-5.0.8-bin.jar
3. 编程java程序
// 1. 注册数据库的驱动
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
// 2. 建立与mysql数据库的连接 用到 jdbc api
String url = "jdbc:mysql://localhost:3306/day11";
String user = "root";
String password = "root";
Connection conn = DriverManager.getConnection(url, user, password);
// 3. 创建用于发送sql语句的 Statement 对象
Statement stmt = conn.createStatement();
// 4. 编写一句 sql
String sql = "select * from users";
// 5. 发送sql, 获得结果集
ResultSet rs = stmt.executeQuery(sql);
// 6. 处理结果集
System.out.println("id | name | password | email | birthday");
while(rs.next()) {
// 有第一行
int id = rs.getInt("id"); // 通过列名取值比较直观
String name = rs.getString("name");
String psw = rs.getString("password");
String email = rs.getString("email");
Date birthday = rs.getDate("birthday");
System.out.println(id + " | " + name + " | " + psw + " | " + email + " | " + birthday);
}
// 7. 关闭连接 释放资源
rs.close();
stmt.close();
conn.close();
三、jdbc程序详解
1. 注册驱动
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
上面的语句会导致注册两次驱动
原因在于,查看Driver类的源码会发现在静态代码块中完成了注册驱动的工作,
也就是说注册驱动其实很简单,只需要加载驱动类即可
Class.forName(“com.mysql.jdbc.Driver”);
2. 创建数据库的连接
Connection conn = DriverManager.getConnection(url, user, password);
其中:
url, 相当于数据库的访问地址,程序员通过url指定需要访问的数据库
jdbc:mysql:[]//localhost:3306/test?参数名:参数值
其中jdbc为主协议,mysql为子协议,localhost为主机名,3306为端口号,test为数据库名
url的后面可以跟参数,常用的参数有:user=root&password=root&characterEncoding=UTF-8
如果url地址后面跟了user和password,创建Connection对象时将不必再次传入值
Connection conn = DriverManager.getConnection(url);
补充: 如果访问的localhost:3306,url 可省写为jdbc:mysql:///test
3. Connection 对象
Connection对象用于表示与某个数据库之间的连接,在程序中对数据库的所有操作都需要通过此对象来完成
常用方法有:
createStatement():创建向数据库发送sql的statement对象。
prepareStatement(sql) :创建向数据库发送预编译sql的PrepareSatement对象。
prepareCall(sql):创建执行存储过程的callableStatement对象。
setAutoCommit(boolean autoCommit):设置事务是否自动提交。
commit() :在链接上提交事务。
rollback() :在此链接上回滚事务。
4. Statement 对象
用于向数据库发送sql语句
execute(String sql):用于向数据库发送任意sql语句
executeQuery(String sql) :只能向数据发送查询语句。
executeUpdate(String sql):只能向数据库发送insert、update或delete语句
addBatch(String sql) :把多条sql语句放到一个批处理中。
executeBatch():向数据库发送一批sql语句执行。
5. ResultSet 对象
对于查询操作,该对象特别重要,因为它专门用于封装结果集
存储的形式就是一种表格的形式,同样是列+行,说白了就和我们在 dos 命令行窗口查询的结果一样
遍历方式:
一开始游标指向结果集第一行, 也就是表头
通过 next 将游标移向下一行, 如果没有下一行,该方法会返回false
获得当前行的数据需要调用get方法:
get(int index)获得第几列 列数从1开始
get(String columnName) 根据列名获得值 常用
数据库的数据类型与java中数据类型的对应关系
ResultSet对象的常用方法
next():移动到下一行
previous():移动到前一行
absolute(int row):移动到指定行
beforeFirst():移动resultSet的最前面。
afterLast() :移动到resultSet的最后面。
6. 释放数据库资源
由于数据库的资源非常宝贵,所以用完了一定要记得释放资源
特别是Connection对象,因为数据允许的并发访问连接数量往往都比较有限
在java程序中,我们应该将最终必须要执行的代码放到finally当中
释放资源的代码
if(rs!=null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
rs = null;
}
if(stmt!=null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
stmt = null;
}
if(conn!=null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
conn = null;
}
四、jdbc实现crud
1. 编写程序对User表进行增删改查操作
2. 防止 sql 注入
在 service 层进行逻辑判断
使用PreparedStatement对象
3. 编写工具类对 jdbc 程序进行优化
将获得连接和释放资源的代码写到通用的工具类中
五、 jdbc案例
实现一个简单的员工信息管理系统,练习对员工表的crud
字段名 说明 类型
id 编号 varchar(40)
name 员工姓名 varchar(20)
gender 性别 varchar(4)
birthday 出生日期 date
idcard 身份证号 varchar(20)
degree 学历 varchar(20)
entrydate 入职日期 date
position 部门 varchar(40)
department 职位 varchar(20)
web开发的两种模式
model1: jsp+javabean 只适合小型应用
model2: servlet+jsp+javabean mvc
jsp 的作用只是显示的模板,所以在mvc中jsp应该禁止外界直接方法,藏在 web-inf下面
web应用的分层框架
案例实现步骤:
1. 搭建开发环境
1) 建工程 建包
2) 导入需要jar包
BeanUtils 相关jar包
jstl 标签
mysql 的驱动
3) 创建数据库和表
create database day12_employee;
use day12_employee;
create table employee
(
id varchar(40) primary key,
name varchar(20),
gender varchar(6),
birthday date,
idcard varchar(20),
degree varchar(20),
entrydate date,
department varchar(20),
position varchar(40)
);
发表评论
-
db2 with函数使用
2012-08-15 10:59 1007WITH T1 AS( SELECT CGBT.SEGM ... -
db2 数据 对象备份
2012-07-28 17:03 778CREATE OR REPLACE FUNCTION RSPD ... -
Java_sokect 网络通信
2012-05-10 23:52 922客户端程序 package tcp; import j ... -
jdk下载以及Windows 安装
2011-12-29 20:13 1286http://www.oracle.com/technetwo ... -
JAVA基本功<8>_面向对象
2011-12-15 00:22 708一.面向对象的特点: ... -
JAVA基本功<6>
2011-12-15 00:16 780一. 1. 循环结构 1. while 语句格式: ... -
JAVA基本功<5>
2011-12-15 00:15 1796一.常量与变量 1.概念:变量就是内存中的一个存储区域,它有 ... -
JAVA基本功<4>
2011-12-15 00:09 7521:人机交互的方式: 一 ... -
J2SE基本功<3>
2011-09-27 15:35 686public class Test1 { public ... -
日期处理
2011-09-12 23:50 814http://changguangjuan.blog.163. ... -
泛型总结
2011-09-08 09:58 751package daan; /* 使用泛型类的限制和 ... -
J2SE基本功<2>
2011-09-07 09:06 669http://blog.csdn.net/java334452 ... -
J2SE基本功<1>
2011-08-16 22:55 611一、Java是一门高级语言,具有跨平台性(一次编译到处运行)1 ... -
IO文件读取
2011-08-01 08:51 677斯蒂芬 -
String数组的二分排序
2011-07-31 18:04 1488public class Bsearch { /* ... -
JAVA编程练手题
2011-07-04 23:48 27821:写一个方法(函数):判断一个单链表中是是否有环? 2:串行 ... -
代理模式
2011-06-16 09:54 631使用动态代理不需要为特定对象与方法编写特定的代理对象,可以 ... -
策略模式
2011-06-09 00:11 717策略模式:高内聚 低耦合 可扩展(OCP) 在策略与最终用 ... -
正则表达式
2011-05-30 15:13 657import java.util.regex.Matcher; ... -
JSP 连接MySQL数据库
2011-05-29 20:23 763<%@ page contentType="t ...
相关推荐
《疯狂Java:突破程序员基本功的16课2》是一本深入浅出的编程学习书籍,专注于提升程序员的基础技能。作者李刚以其丰富的教学经验,精心设计了16个课程,旨在帮助读者全面掌握Java编程的核心知识,为日后的职业发展...
根据提供的文件信息,我们可以推断出这是一本关于Java编程技术的书籍——《疯狂Java突破程序员基本功的16课》。尽管没有提供具体的章节内容,但基于书名及其描述,我们可以合理推测这本书的主要内容是帮助程序员提升...
在JDBC博客系统中,Java基础包括对象导向编程、异常处理、IO流等,这些都是构建系统的基本功。 2. **JDBC API**:JDBC是Java连接数据库的标准接口,它允许Java程序与各种类型的数据库进行通信。开发者需要了解如何...
在《疯狂JAVA:突破程序员基本功的16课》中,作者深入浅出地探讨了Java编程中的核心概念和技术,旨在提升程序员的基本技能和解决问题的能力。以下是对这些知识点的详细阐述: 1. **Java基础**:Java是一种面向对象...
《疯狂Java:突破程序员基本功16课》是一本针对Java程序员进阶的教程,旨在提升读者在编程领域的技能和专业素养。这本书结合了理论与实践,通过16个关键课程,深入讲解了Java编程的核心概念和技术。源代码的提供使得...
《疯狂JAVA 突破程序员基本功的16课》是一部专为初学者和进阶者设计的编程教程,旨在通过一系列深入浅出的课程,帮助读者巩固和提升JAVA编程的基础技能。这本书的配套源代码提供了丰富的实例,让读者能够在实践中...
在标题和描述中提到的“疯狂Java 突破程序员基本功的16课”,我们可以详细了解到几个关键的知识点。首先,课程的主要目标是帮助程序员强化其Java基础技能。这说明本课程将围绕Java编程语言的基础知识、关键概念、...
因此,理解和熟悉如何构造JDBC连接字符串,对于每一个Java开发者来说都是基本功之一。 在实际应用中,开发者应当根据所使用的数据库类型和具体需求,合理设置连接字符串的各项参数,以确保数据库连接的安全、高效和...
《疯狂JAVA:突破程序员基本功的16课》是一本旨在提升Java程序员技能的书籍,其源代码提供了书中实例的详细实现,帮助读者深入理解Java编程的核心概念和技术。以下是根据书名和描述提取的一些关键知识点,以及可能...
常用API包括`<div>`, `<p>`, `<a>`, `<img>`等标签,以及`class`, `id`属性等。理解DOM(文档对象模型)也是关键,它是HTML和XML文档的编程接口。 2. CSS(层叠样式表):CSS用于控制网页的样式和布局。API包括选择...
然后,书中详细介绍了Java语法基础,如数据类型、变量、运算符、控制流程语句(如if、for、while等),以及如何编写函数和类,这些都是任何Java程序员必须掌握的基本功。 在面向对象编程方面,书中详细讲解了类、...
1. Java基础:Java是一种面向对象的编程语言,Java Web开发的第一步是掌握Java的基础语法,包括变量、控制流程、数组、类和对象、继承、多态、封装等基本概念和特性。 2. Java Web核心技术:Java Web的核心技术包括...
在Java编程中,与MySQL数据库进行连接是常见的...总之,理解并掌握Java与MySQL的连接技术是Java开发者的基本功,它使得我们能够构建与数据库交互的应用程序。通过实践和不断学习,你将能够更熟练地处理各种数据库操作。
了解JDBC驱动管理、连接池的使用以及如何编写SQL语句是每个Java开发者的基本功。 其次,重点讲解了数据库连接池的概念。连接池能够有效地管理和复用数据库连接,避免频繁创建和关闭连接带来的性能开销。常用的连接...
5. **Java EE(Enterprise Edition)**:Java Web开发通常基于Java EE平台,它包含了用于构建企业级应用的多种服务和API,如JDBC(Java Database Connectivity)用于数据库交互,EJB(Enterprise JavaBeans)用于...
Java开发过程中,jar(Java ...在实际项目中,根据需求选择合适的库,并正确配置依赖关系,是Java开发的基本功。同时,随着技术的不断更新,开发者也需要关注新的库和框架,如Lombok、Vavr等,以保持技术的前沿性。
Java开发和部署环境配置是Java Web开发者的基本功。在配置JDK、JSP、Java、Tomcat、Servlet以及Bean的过程中,我们需要确保各个组件的正确安装和配置,以便于应用程序的正常运行。 首先,JDK(Java Development Kit...
了解并熟练掌握JDBC是每个Java开发者的基本功。在合集中,你可能会找到关于JDBC的最佳实践,如如何有效管理数据库连接池,避免SQL注入,以及优化数据库查询效率等话题。 首先,JDBC的连接池技术,如C3P0、HikariCP...