當前位置:九游会j9娱乐平台-九游ag登录中心网址 » 操作系統 » java搜索資料庫

java搜索資料庫-九游会j9娱乐平台

發布時間: 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-01-20 01:08:21 瀏覽:525
發布:2024-01-20 01:07:17 瀏覽:250
愛奇藝正義聯盟為啥不能緩存 發布:2024-01-20 00:52:13 瀏覽:248
caccess查詢資料庫 發布:2024-01-20 00:43:10 瀏覽:769
xp文件夾圖標更改 發布:2024-01-20 00:43:03 瀏覽:19
python和node 發布:2024-01-20 00:37:12 瀏覽:194
android拖拉 發布:2024-01-20 00:00:49 瀏覽:583
少兒編程課程體系介紹 發布:2024-01-20 00:00:48 瀏覽:846
我說你做下載ftp 發布:2024-01-20 00:00:47 瀏覽:8
安卓驅動培訓哪裡好 發布:2024-01-19 23:55:41 瀏覽:987
网站地图