JDBC概述

JDBC:Java DataBase ConnectivitySUN公司推出的访问数据库的标准规范。

JDBC和理解数据库驱动之间的关系:抽象和实现的关系。

 

开发准备工作:

  • JDBC规范在何处:

JDK

java.sql.*;javax.sql.*;

  • 数据库驱动:jar

二、开发第一个JDBC程序:(很重要)

CREATE DATABASE day15;

USE day15;

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′);

用JDBC把数据查询出来,并打印到控制台上。

 

  • 编码步骤:(非常重要)

//注册驱动

//获取与数据库的连接:任何的与数据库的交互都是基于连接的

//得到代表SQL语句的对象

//执行SQL语句

//如果执行的查询语句,会返回结果集,进行遍历

//释放占用的资源

  • 关于ResultSet对象的游标:

三、JDBC常用的类或接口详解

1、DriverManager:

a、注册驱动

DriverManager.registerDriver(new com.mysql.jdbc.Driver()):注册驱动,不推荐使用。

原因有两个:

a、导致驱动被注册2次

b、编译时严重依赖具体的数据库驱动

改进方案:

Class.forName(“com.mysql.jdbc.Driver”);

b、获取与数据库的链接

  • static Connection getConnection(String url,String user,String password);
  • static Connection getConnection(String url,Properties props);
  • static Connection getConnection(String url);

Connection conn =

DriverManager.getConnection(“jdbc:mysql://localhost:3306/day15?user=root&password=sorry”);

 

链接URL:

SUN公司和数据库厂商之间的一种协议。(查看具体数据库的帮助文档)

常用数据库的连接串:

MySQL:jdbc:mysql://localhost:3306/day15或者jdbc:mysql:///day15(本机默认端口)

Oracle:jdbc:oracle:thin:@localhost:1521:sid

2、java.sql.Connection接口

接口的实现在数据库的驱动中。所有与数据的交互都是基于连接对象的。

 

Statement createStatement();创建代表SQL语句的对象。

3、java.sql.Statement接口

实现在数据库的驱动中。代表SQL语句对象。

 

  • ResultSet executeQuery(String sql):返回结果集。sql语句必须是查询语句。
  • int executeUpdate(String sql):返回语句影响到的行数。sql语句一般为DML语句,或者是没有返回结果集的其他语句,比如DDL。
  • boolean execute(String sql):可以执行任何的sql语句。返回值不代表是否执行成功。返回true说明有结果集,返回false说明没有结果集。

 

4、java.sql.ResultSet接口

a、封装结果

封装了查询结果,有一个可移动的游标,游标的开始位置在第一条记录的前面。

取某条记录的某列数据:

Object getObject(String columName):按照列名来取

Object getObject(int columCount):按照列的顺序来取,第一列为1

 

设计JavaBean封装查询结果:

Java类型和数据库类型的对应关系

ResultSet中提供了对应类型的重载方法。

 

b、可滚动结果集

boolean next():向下滚动。返回有无记录

boolean provious():向上滚动。返回有无记录

boolean absolute(int rowCount):定位到某条记录。第一条为1

void beforeFirst():滚动到第一条的前面

void afterLast():滚动到最后一条的后面

5、释放资源:JDBC编码模板

资源有限,合理释放。目前需要全部释放。

四、利用JDBC进行CRUD

 

五、利用JDBC改写用户注册和登陆案例

1、拷贝用户的注册和登陆案例

 

2、搭建开发环境

a、拷贝数据库驱动到WEB-INF/lib目录中

b、把刚写的JDBC工具类和配置文件搞过来

 

3、根据JavaBean设计你的数据库表

USE day15;

CREATE TABLE user(

username varchar(100) PRIMARY KEY,

password varchar(100) NOT NULL,

email varchar(100) NOT NULL,

birthday date NOT NULL

);

4、添加一个DAO的实现

 

六、SQL注入、参数问题:PreparedStatement(很重要)

1、PreparedStatement的优势:(能用这个就不要使用Statement)

a、执行效率要比Statement要高。

b、设置语句中的参数要方便。

c、设置参数后已经发生了变化, 已经不是原来的字符串语句。可以防止SQL注入。

2、具体编码

 

七、JavaWeb案例:客户基本信息的管理

0、需求分析

1、搭建开发环境

建立一个JavaWeb应用,拷贝以下jar包到WEB-INF\lib目录中

mysql-connector-driver.jar

commons-beanutils.jar

commons-logging.jar

2、建立JavaBean或者设计数据库表

USE day15;

CREATE TABLE customers(

id varchar(100) PRIMARY KEY,

name varchar(100) NOT NULL,

gender char(1) NOT NULL,#1 male;0 female

birthday date NOT NULL,

cellphone varchar(20) NOT NULL,

email varchar(100) NOT NULL,

hobby varchar(100),#吃饭,睡觉

type varchar(100),#VIP|普通客户

description varchar(255)

);

3、编码:

JavaBean:

Service接口:

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇