當前位置:首頁 » 操作系統 » java搜索資料庫

java搜索資料庫

發布時間: 2024-01-17 02:03:30

① 使用jdbc從資料庫查詢數據,java程序需要考慮哪些優化方法

一、准備工作(一):Mysql安裝配置和基礎學習
使用JDBC操作資料庫之前,首先你需要有一個資料庫。這里提供了3個鏈接供讀者自學,如果曾有過SQL語言的使用經歷(包括在學校中的課堂學習),前兩個鏈接足以上手。
1.安裝和配置:mysql安裝圖解 mysql圖文安裝教程(詳細說明)

2.基本操作:21分鍾 MySQL 入門教程
3.簡易命令查詢 :一千行MySQL學習筆記

建議邊看入門教程,邊練習,在練習insert、update、select、delete等基本操作的同時,將後面要用的表建好。
下圖是我接下來用於演示的資料庫的表。


二、准備工作(二):下載資料庫對應的jar包並導入
使用JDBC需要在工程中導入對應的jar包。資料庫與JDBC包的對應關系可以參考各種資料庫對應的jar包、驅動類名和URL格式。在Eclipse下的導入方法:
在工程的圖標上右擊,選擇」Properties」,在」Java Bulid Path」中選擇」Add External JARs…」,選擇下載並解壓後獲得的jar包。

如果對MySQL進行操作,這時下面的import就不會報錯了:
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;

除此以外,還需要JDBC的包,直接import即可。
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

三、JDBC基本操作
為了簡單起見,與資料庫相關的操作、命令、參數都被硬編碼了。有興趣的讀者可以對這些進行探索,降低數據與操作的耦合性。
先看具體代碼並實踐,本文第五部分對用到的API稍作了研究。
下面的所有方法和數據成員都在public class JDBCOperation內部。
(1)定義記錄的類(可選)
這樣做主要是為了便於操作和介面定義,是非必須的。

static class Student {
private String Id;
private String Name;
private String Sex;
private String Age;

Student(String Name, String Sex, String Age) {
this.Id = null; //default
this.Name = Name;
this.Sex = Sex;
this.Age = Age;
}

public String getId() {
return Id;
}

public void setId(String Id) {
this.Id = Id;
}

public String getName() {
return Name;
}

public void setName(String Name) {
this.Name = Name;
}

public String getSex() {
return Sex;
}

public void setSex(String Sex) {
this.Sex = Sex;
}

public String getAge() {
return Age;
}

public void setage(String Age) {
this.Age = Age;
}
}

(2)連接的獲取
在操作前必須先獲取與資料庫的連接。
driver、url的格式同樣可以參考各種資料庫對應的jar包、驅動類名和URL格式。

private static Connection getConn() {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/samp_db";
String username = "root";
String password = "";
Connection conn = null;
try {
Class.forName(driver); //classLoader,載入對應驅動
conn = (Connection) DriverManager.getConnection(url, username, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}

(3)insert

private static int insert(Student student) {
Connection conn = getConn();
int i = 0;
String sql = "insert into students (Name,Sex,Age) values(?,?,?)";
PreparedStatement pstmt;
try {
pstmt = (PreparedStatement) conn.prepareStatement(sql);
pstmt.setString(1, student.getName());
pstmt.setString(2, student.getSex());
pstmt.setString(3, student.getAge());
i = pstmt.executeUpdate();
pstmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return i;
}

(4)update

private static int update(Student student) {
Connection conn = getConn();
int i = 0;
String sql = "update students set Age='" + student.getAge() + "' where Name='" + student.getName() + "'";
PreparedStatement pstmt;
try {
pstmt = (PreparedStatement) conn.prepareStatement(sql);
i = pstmt.executeUpdate();
System.out.println("resutl: " + i);
pstmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return i;
}

(5)select
以select * from XXX為例。

private static Integer getAll() {
Connection conn = getConn();
String sql = "select * from students";
PreparedStatement pstmt;
try {
pstmt = (PreparedStatement)conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
int col = rs.getMetaData().getColumnCount();
System.out.println("============================");
while (rs.next()) {
for (int i = 1; i <= col; i++) {
System.out.print(rs.getString(i) + "\t");
if ((i == 2) && (rs.getString(i).length() < 8)) {
System.out.print("\t");
}
}
System.out.println("");
}
System.out.println("============================");
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}

(6)delete

private static int delete(String name) {
Connection conn = getConn();
int i = 0;
String sql = "delete from students where Name='" + name + "'";
PreparedStatement pstmt;
try {
pstmt = (PreparedStatement) conn.prepareStatement(sql);
i = pstmt.executeUpdate();
System.out.println("resutl: " + i);
pstmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return i;
}

② java如何訪問資料庫(java訪問mysql資料庫)

Java可以使用JDBC訪問資料庫,也可以使用各類ORM框架訪問資料庫,但這些框架最終還是通過JDBC訪問資料庫,它們只是封裝了資料庫操作,而使得開發者可以減少這部分消耗。因此,本文只講解JDBC訪問方式。

JDBC訪問一般分為如下流程:

1、載入JDBC驅動程序:

在連接資料庫之前,首先要載入想要連接的資料庫的驅動到JVM(Java虛擬機),這通過java.lang.Class類的靜態方法forName(StringclassName)實現。

例如:

try{

//載入MySql的驅動類

Class.forName("com.mysql.jdbc.Driver");

}catch(e){

System.out.println("找不到驅動程序類,載入驅動失敗!");

e.();

}

成功載入後,會將Driver類的實例注冊到類中。

2、提供JDBC連接的URL

連接URL定義了連接資料庫時的協議、子協議、數據源標識。

書寫形式:協議:子協議:數據源標識

協議:在JDBC中總是以jdbc開始

子協議:是橋連接的驅動程序或是資料庫管理系統名稱。

數據源標識:標記找到資料庫來源的地址與連接埠。

例如:(MySql的連接URL)

jdbc:mysql://localhost:3306/test?useUnicode=true&=gbk;

useUnicode=true:表示使用Unicode字元集。如果設置為

gb2312或GBK,本參數必須設置為true。=gbk:字元編碼方式。

3、創建資料庫的連接

要連接資料庫,需要向java.sql.請求並獲得Connection對象,該對象就代表一個資料庫的連接。

使用的(Stringurl,Stringusername,Stringpassword)方法傳入指定的欲連接的資料庫的路徑、資料庫的用戶名和密碼來獲得。

例如:

//連接MySql資料庫,用戶名和密碼都是root

Stringurl="jdbc:mysql://localhost:3306/test";

Stringusername="root";

Stringpassword="root";

try{

Connectioncon=

.(url,username,password);

}catch(se){

System.out.println("資料庫連接失敗!");

se.();

}

4、創建一個Statement

要執行SQL語句,必須獲得java.sql.Statement實例,Statement實例分為以下3種類型:

1、執行靜態SQL語句。通常通過Statement實例實現。

2、執行動態SQL語句。通常通過實例實現。

3、執行資料庫存儲過程。通常通過實例實現。

具體的實現方式:

Statementstmt=con.();

PreparedStatementpstmt=con.prepareStatement(sql);

CallableStatementcstmt=con.prepareCall("{CALLdemoSp(?,?)}");

5、執行慧轎SQL語句

Statement介面提供了三種執行SQL語句的方法:executeQuery、executeUpdate和execute

1、ResultSetexecuteQuery(StringsqlString):執行查詢資料庫的SQL語句,返回一個結果集(ResultSet)對象。

2、intexecuteUpdate(StringsqlString):用於執行INSERT、UPDATE或DELETE語句以及SQLDDL語句,如:CREATETABLE和DROPTABLE等

3、execute(sqlString):用於執行返回多個結果集、多個更新計數或二者組合的語句。

具芹尺體實現的代碼:

ResultSetrs=stmt.executeQuery("SELECT*FROM...");

introws=stmt.executeUpdate("INSERTINTO...");

booleanflag=stmt.execute(Stringsql);

6、處理結果

兩種情況:

1、執行更新返回的是本次操作影響到的記錄數。

2、執行查詢返回的結果是一個ResultSet對象。

ResultSet包含符合SQL語句中條件的所有行,並且它通過一套get方法提嫌碧高供了對這些行中數據的訪問。

使用結果集(ResultSet)對象的訪問方法獲取數據:

while(rs.next()){

Stringname=rs.getString("name");

Stringpass=rs.getString(1);//此方法比較高效(列是從左到右編號的,並且從列1開始)

}

7、關閉JDBC對象

操作完成以後要把所有使用的JDBC對象全都關閉,以釋放JDBC資源,關閉順序和聲明順序相反:

1、關閉記錄集

2、關閉聲明

3、關閉連接對象

if(rs!=null){//關閉記錄集

try{

rs.close();

}catch(SQLExceptione){

e.printStackTrace();

}

}

if(stmt!=null){//關閉聲明

try{

stmt.close();

}catch(SQLExceptione){

e.printStackTrace();

}

}

if(conn!=null){//關閉連接對象

try{

conn.close();

}catch(SQLExceptione){

e.printStackTrace();

}

}

熱點內容
網易收件伺服器怎麼填寫 發布:2024-11-29 01:52:15 瀏覽:278
螢石攝像頭激活密碼是多少 發布:2024-11-29 01:51:38 瀏覽:579
iphone如何設置像安卓動態壁紙 發布:2024-11-29 01:37:50 瀏覽:474
電腦如何避過聯網查配置 發布:2024-11-29 01:25:16 瀏覽:972
期貨軟體編程 發布:2024-11-29 01:13:16 瀏覽:834
如何下載加密pdf文件 發布:2024-11-29 01:09:21 瀏覽:326
高通android開發 發布:2024-11-29 01:09:11 瀏覽:693
xp電腦無線網密碼怎麼看密碼 發布:2024-11-29 01:08:30 瀏覽:124
戀愛劇腳本 發布:2024-11-29 00:59:58 瀏覽:575
安卓官方版陰陽師在哪裡下載 發布:2024-11-29 00:59:50 瀏覽:417