日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

12-jdbc入门

發布時間:2024/9/27 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 12-jdbc入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、jdbc基本概念

jdbc : Java Database Connectivity

sun公司為了統一對數據庫的操作,定義了一套api,稱之為jdbc

這套api完全有接口組成,我們在編寫程序的時候針對接口進行調用

這些接口交給數據庫廠家去實現, 不同的數據庫廠商會提供不同的實現類,這些實現類被我們稱作數據庫的驅動

?

二、實現jdbc程序

步驟:

1. 實驗環境

建 user 表? user.sql

create database day12 character set utf8 collate utf8_general_ci;

?

use day12;

?

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的PreparedStatement對象。

prepareCall(sql):創建執行存儲過程的callableStatement對象。

setAutoCommit(boolean?autoCommit):設置事務是否自動提交。

commit() :在鏈接上提交事務。

rollback() :在此鏈接上回滾事務。

?

4. Statement 對象

用于向數據庫發送sql語句

execute(String sql):用于向數據庫發送任意sql語句,但是返回值為boolean,不能滿足我們的需求

executeQuery(String?sql) :只能向數據發送查詢語句,返回值是ResultSet 結果

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)

??? );

?

?

2. 設計bean

Employee.java

?

3. 實現dao

?

4. 實現service

簡單service 原封不動調用dao的方法

?

5. 實現web層

首頁

?

?

?

?

?

?

?

?

?

總結

以上是生活随笔為你收集整理的12-jdbc入门的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。