新聞中心
隨著數(shù)據(jù)量的不斷增加,數(shù)據(jù)存儲(chǔ)及管理成為了一個(gè)非常重要的領(lǐng)域。為了能夠讓數(shù)據(jù)系統(tǒng)更加高效、穩(wěn)定、可靠,成為了現(xiàn)在的一個(gè)熱門話題。

為欽州等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及欽州網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、欽州網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
Java作為一種編程語言,在數(shù)據(jù)存儲(chǔ)方面的優(yōu)勢(shì)也非常明顯。Java本身具有垃圾回收機(jī)制以及天生的強(qiáng)類型,這些屬性使得它非常適合用于構(gòu)建高效的數(shù)據(jù)庫系統(tǒng)。我們可以在Java中使用諸如JDBC、Hibernate、MyBatis等框架來與數(shù)據(jù)庫進(jìn)行交互。這些框架不僅簡(jiǎn)化了開發(fā)人員的編碼工作,而且讓我們更好地管理和優(yōu)化數(shù)據(jù)庫。
當(dāng)下的數(shù)據(jù)庫系統(tǒng)大多都是基于關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS)的,這些系統(tǒng)需要使用SQL語句來查詢和操作數(shù)據(jù)。然而,隨著數(shù)據(jù)量的不斷增長(zhǎng),這種傳統(tǒng)的關(guān)系型數(shù)據(jù)庫系統(tǒng)變得越來越難以管理。同時(shí),由于這種系統(tǒng)需要使用磁盤進(jìn)行數(shù)據(jù)存儲(chǔ)和管理,因此也難以保證其高效性。
為了解決這些問題,我們可以采用一種新的方式構(gòu)建數(shù)據(jù)庫系統(tǒng),即基于Java的非關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(NoSQL)。與傳統(tǒng)的關(guān)系型數(shù)據(jù)庫系統(tǒng)不同,非關(guān)系型數(shù)據(jù)庫將數(shù)據(jù)存儲(chǔ)在內(nèi)存中而不是磁盤中,因此速度非常快。此外,非關(guān)系型數(shù)據(jù)庫還支持并發(fā)訪問和處理大量數(shù)據(jù)。這使我們能夠更高效地管理和運(yùn)行龐大的數(shù)據(jù)庫系統(tǒng),提高數(shù)據(jù)的傳輸速度、響應(yīng)時(shí)間和安全性。
具體而言,我們可以采用一種稱為“鍵值存儲(chǔ)”或“文檔數(shù)據(jù)庫”的方式來構(gòu)建非關(guān)系型數(shù)據(jù)庫系統(tǒng)。鍵值存儲(chǔ)是一種簡(jiǎn)單而高效的存儲(chǔ)機(jī)制,它使用唯一的鍵來訪問和存儲(chǔ)數(shù)據(jù),并且數(shù)據(jù)沒有任何特定的格式。文檔數(shù)據(jù)庫則使用文檔作為數(shù)據(jù)存儲(chǔ)的單元,每個(gè)文檔可以由不同的字段構(gòu)成。這種方式也讓數(shù)據(jù)庫能夠以O(shè)N和BSON等標(biāo)準(zhǔn)格式存儲(chǔ)API數(shù)據(jù)。
在構(gòu)建高效的Java數(shù)據(jù)庫系統(tǒng)時(shí),我們還需要處理大量的數(shù)據(jù)。為此,我們可以使用一種稱為“流式數(shù)據(jù)處理”的方式來處理數(shù)據(jù)。流式數(shù)據(jù)處理主要通過將數(shù)據(jù)分成小部分并對(duì)其進(jìn)行處理來實(shí)現(xiàn)高效的數(shù)據(jù)存儲(chǔ)。這種方式也讓我們能夠更好地控制數(shù)據(jù)的流向,并使我們能夠更好地優(yōu)化數(shù)據(jù)。
構(gòu)建高效的Java數(shù)據(jù)庫系統(tǒng)是非常重要的,這將幫助我們更好地管理和處理龐大的數(shù)據(jù)量。我們可以采用基于Java的非關(guān)系型數(shù)據(jù)庫管理系統(tǒng)來構(gòu)建這個(gè)系統(tǒng),這樣我們就能夠更快地存儲(chǔ)和處理數(shù)據(jù),并實(shí)現(xiàn)更高效的數(shù)據(jù)庫管理。通過在設(shè)計(jì)和開發(fā)高性能數(shù)據(jù)庫系統(tǒng)上的投入,我們可以為企業(yè)提供更好的解決方案來處理海量數(shù)據(jù)存儲(chǔ)和管理,讓企業(yè)勝出于競(jìng)爭(zhēng)!
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù)!
java自帶的數(shù)據(jù)庫怎么用,能不能給一段運(yùn)行的通的代碼.(包括import)
Sql:
import java.sql.Connection;
import java.sql.DriverManager;
public class TestSql {
public static void main(String args) {
try{
Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”).newInstance();
System.out.println(“成功加載數(shù)據(jù)庫驅(qū)動(dòng)槐中”);
String url=”jdbc:microsoft:
String user=”sa”;
String password=”111″;
Connection conn=DriverManager.getConnection(url,user,password);
System.out.println(“數(shù)據(jù)庫則慧連接成功”);
}
catch (Exception e){
System.out.println(“找不到數(shù)據(jù)庫驅(qū)動(dòng)”);
}
}
}
同時(shí)還得把JDBC驅(qū)動(dòng)安裝上。
你是指javaDB Derby嗎?Derby數(shù)據(jù)庫是一個(gè)純用Java實(shí)現(xiàn)的內(nèi)存數(shù)據(jù)庫,屬于Apache的一個(gè)開源項(xiàng)目。由于是用Java實(shí)現(xiàn)的,所以可以在任何平臺(tái)上運(yùn)行;另外一個(gè)特點(diǎn)是體積小,免安裝,只需要幾個(gè)小jar包就可以運(yùn)行了。
Derby數(shù)據(jù)庫有兩種運(yùn)行模式:
1) 內(nèi)嵌模式。Derby數(shù)據(jù)庫與應(yīng)用程序共享同一個(gè)JVM,通常由應(yīng)用程序負(fù)責(zé)啟動(dòng)和停止,對(duì)除啟動(dòng)它的應(yīng)用程序外的其它應(yīng)用陵納蠢程序不可見,即其它應(yīng)用程序不可訪問它;
2) 網(wǎng)絡(luò)模式。Derby數(shù)據(jù)庫獨(dú)占一個(gè)JVM,做為服務(wù)器上的一個(gè)獨(dú)立進(jìn)程運(yùn)行。在這種模式下,允許有多個(gè)應(yīng)用程序來訪問同一個(gè)Derby數(shù)據(jù)庫。
在Apache上,Derby有4種發(fā)布包,這里以bin發(fā)布包為例。bin發(fā)布包中含有包含了執(zhí)行derby數(shù)據(jù)庫工具、設(shè)置derby數(shù)據(jù)庫環(huán)境的腳本文件、Demo、jar文件等。
希望幫到你……
1、 安裝Derby數(shù)據(jù)庫
只需要從Derby官方網(wǎng)站下載Derby的zip或者tar包,解壓就可以了。這里以db-derby-10.4.1.3-bin版本為例,解壓后得到以下目錄:
1) bin目錄,包含了一些工具腳本和設(shè)備環(huán)境的腳本;
2) demo目錄,包含了一些實(shí)例程序;
3) docs目錄,包含了Derby的文檔;
4) javadoc目錄,包含了Derby的API文檔;
5) lib目錄,包含了Derby數(shù)據(jù)庫的jar文件;
6) test目錄,Derby的一些測(cè)試jar包;
2、 使用Derby腳本
Derby提供了幾個(gè)腳本來操作Derby數(shù)據(jù)庫,在使用這些腳本前,你必須先設(shè)置好Derby的運(yùn)行環(huán)境。
下面的例子都是在命令行下設(shè)置環(huán)境變量,這些設(shè)置都是臨時(shí)的,如果你新開一個(gè)命令茄迅行窗口,則需要重新設(shè)置一遍,如果想要使環(huán)境變量永久生效,可以在我的電腦中進(jìn)行設(shè)置。
首先設(shè)置好DERBY_HOME這個(gè)環(huán)境變量,為DERBY_HOME指定你的derby目錄,假如你的derby解壓到了E:\ db-derby-10.4.1.3-bin目錄下,則可以在命令行中如下設(shè)置:
set DERBY_HOME=E:\ db-derby-10.4.1.3-bin
將DERBY_HOME\bin目錄添加到PATH環(huán)境變量中:
set path=%DERBY_HOME%\bin;%PATH%
這樣可以簡(jiǎn)化你稍后在命令行中的輸入,否則你每次都必須使用腳本的全路徑或者你必須到DERBY_HOME\bin目錄中才能執(zhí)行腳本。
最后需要Derby的jar包添加到classpath環(huán)境變量中,在DERBY_HOME%\bin目錄中提供了幾個(gè)腳本用于設(shè)置classpath,以簡(jiǎn)化你手工在classpath中添加jar包的麻煩:
1) setEmbeddedCP。當(dāng)使用內(nèi)嵌模式來運(yùn)行Derby時(shí),可以使用該腳本來設(shè)置。該腳本將derby.jar和derbytools.jar添加到環(huán)境變量中;
2) setNetworkServerCP。當(dāng)使用網(wǎng)絡(luò)模式來運(yùn)行Derby時(shí),用該腳本來設(shè)置Derby服務(wù)端的classpath變量。該腳本將derbynet.jar添加到環(huán)尺陪境變量中;
3) setNetworkClientCP。當(dāng)使用網(wǎng)絡(luò)模式來運(yùn)行Derby時(shí),用該腳本來設(shè)置Derby客戶端的classpath變量。該腳本將derbyclient.jar和derbytools.jar添加到環(huán)境變量中。
一般只有當(dāng)你通過derbyrun.jar來運(yùn)行Derby工具時(shí)才會(huì)使用這些腳本。
Derby提供了三個(gè)工具腳本:1)sysinfo;2)ij;3)dblook。運(yùn)行這三個(gè)腳本時(shí),如果你沒有設(shè)置classpath環(huán)境變量,這些腳本會(huì)自動(dòng)進(jìn)行設(shè)置。
1) sysinfo
使用sysinfo可以顯示你的Java環(huán)境信息和Derby的版本信息。使用方法就是在命令行下直接輸入:
sysinfo.bat
2) dblook
使用dblook可以將全部或者部分?jǐn)?shù)據(jù)庫的DDL定義導(dǎo)出到控制臺(tái)或者文件中。使用方法:
dblook.bat –d
3) ij
使用ij工具來進(jìn)行數(shù)據(jù)庫交互,執(zhí)行SQL腳本,如查詢、增刪改、創(chuàng)建表等等。在命令行下輸入:
ij.bat
即可啟動(dòng)ij工具,然后就可以開始執(zhí)行SQL腳本了。當(dāng)要退出ij工具時(shí),在命令行下輸入
exit;
即可。
3、 使用ij腳本
1) 運(yùn)行內(nèi)嵌模式的Derby數(shù)據(jù)庫
在命令行中輸入ij.bat后啟動(dòng)ij工具。然后通過如下命令創(chuàng)建數(shù)據(jù)庫,并與數(shù)據(jù)庫創(chuàng)建連接:
connect ‘jdbc:derby:firstdb;create=true’;
通過connect命令可以與指定數(shù)據(jù)庫創(chuàng)建連接,通過一個(gè)JDBC URL來指定與哪個(gè)數(shù)據(jù)庫創(chuàng)建連接。ij命令是不區(qū)分大小寫的。
參數(shù)中jdbc:derby是Derby數(shù)據(jù)庫的驅(qū)動(dòng)協(xié)議;firstdb是數(shù)據(jù)庫命,由于沒有指定路徑,數(shù)據(jù)庫將會(huì)被創(chuàng)建在當(dāng)前你命令行下所在的目錄下;create=true表示如果數(shù)據(jù)庫不存在,則創(chuàng)建該數(shù)據(jù)庫;“;”是ij命令的終止符。
當(dāng)數(shù)據(jù)庫創(chuàng)建成功時(shí),Derby會(huì)在當(dāng)前你命令行下所在的目錄下創(chuàng)建一個(gè)與數(shù)據(jù)庫命一致(這里是firstdb)的目錄,其中存放了數(shù)據(jù)庫的文件。
與數(shù)據(jù)庫連接上后,就可以開始執(zhí)行SQL腳本了,如創(chuàng)建一個(gè)表格:
create table firsttable(id int primary key, name varchar(20));
然后插入記錄:
insert into firsttable values(1, ‘Hotpepper’);
也可以執(zhí)行查詢:
select * from firsttable;
也可以通過run命令來執(zhí)行sql文件:
run ‘E:\derby\demo\programs\toursdb\ToursDB_schema.sql’;
最后通過exit;來退出ij工具。
你可以在當(dāng)前你命令行下所在的目錄中找到一個(gè)derby.log的日志文件,derby在其中記錄的數(shù)據(jù)庫啟動(dòng)、關(guān)閉的信息。
2) 運(yùn)行網(wǎng)絡(luò)模式的Derby數(shù)據(jù)庫
這種模式下,需要使用兩個(gè)控制臺(tái)窗口,一個(gè)用于啟動(dòng)Derby數(shù)據(jù)庫服務(wù)端,另一個(gè)做為訪問Derby數(shù)據(jù)庫的客戶端。
可以通過DERBY_HOME\bin目錄下的startNetworkServer.bat來啟動(dòng)Derby數(shù)據(jù)庫服務(wù)端,只需要在命令行中輸入:
startNetworkServer.bat
數(shù)據(jù)庫就啟動(dòng)了,啟動(dòng)成功會(huì)在控制臺(tái)輸出如下信息:
已使用基本服務(wù)器安全策略安裝了安全管理程序。
Apache Derby Network Server - 10.4.1.3 – (648739) 已啟動(dòng)并且已準(zhǔn)備好
00:38:12.540 GMT 時(shí)在端口 1527 上接受連接
在另一個(gè)控制臺(tái)使用ij命令訪問Derby數(shù)據(jù)庫服務(wù)端,在輸入ij.bat啟動(dòng)ij工具后,通過如下命令建立與服務(wù)端的連接,并創(chuàng)建一個(gè)數(shù)據(jù)庫:
connect ‘jdbc:
參數(shù)中的數(shù)據(jù)庫命部分和內(nèi)嵌模式不同,這里使用了“//localhost:1527/”,訪問網(wǎng)絡(luò)模式的URL需要指定服務(wù)器的IP地址和端口,其它的就和內(nèi)嵌模式一樣了。
與服務(wù)端連接上后,就可以開始執(zhí)行SQL腳本了,如創(chuàng)建一個(gè)表格:
create table firsttable(id int primary key, name varchar(20));
然后插入記錄:
insert into firsttable values(1, ‘Hotpepper’);
也可以執(zhí)行查詢:
select * from firsttable;
也可以通過run命令來執(zhí)行sql文件:
run ‘E:\derby\demo\programs\toursdb\ToursDB_schema.sql’;
最后通過exit;來退出ij工具
4、 在Java應(yīng)用程序中訪問Derby數(shù)據(jù)庫
使用Java代碼訪問Derby數(shù)據(jù)庫與訪問其它數(shù)據(jù)庫的區(qū)別如下:
1) JDBC驅(qū)動(dòng)的不同;
2) 數(shù)據(jù)庫連接URL的不同;
3) 在訪問內(nèi)嵌模式數(shù)據(jù)庫時(shí),需要顯示關(guān)閉數(shù)據(jù)庫。
下面分別實(shí)例訪問內(nèi)嵌模式和網(wǎng)絡(luò)模式Derby數(shù)據(jù)庫的代碼
1) 訪問內(nèi)嵌模式Derby數(shù)據(jù)庫
String driver = “org.apache.derby.jdbc.EmbeddedDriver”;
String url = “jdbc:derby:firstdb;create=true”;
Connection conn;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url);
}catch(Exception e) {
……
}finally {
……
DriverManager.getConnection(“jdbc:derby:;shutdown=true”);
}
建立好連接后,其它的數(shù)據(jù)操作,如查詢、更新數(shù)據(jù)都和其它數(shù)據(jù)庫一樣,這里不詳述。有一點(diǎn)需要注意,通過Java應(yīng)用程序訪問內(nèi)嵌模式Derby數(shù)據(jù)庫時(shí),應(yīng)用程序有責(zé)任需要在程序結(jié)束時(shí)關(guān)閉Derby數(shù)據(jù)庫,如上面代碼finally中的
DriverManager.getConnection(“jdbc:derby:;shutdown=true”);
shutdown參數(shù)用于關(guān)閉Derby數(shù)據(jù)庫,如果url中指定了數(shù)據(jù)庫命,則只會(huì)關(guān)閉指定的數(shù)據(jù)庫,而不會(huì)關(guān)閉整個(gè)Derby數(shù)據(jù)庫。數(shù)據(jù)庫關(guān)閉成功時(shí),Derby會(huì)拋出一個(gè)錯(cuò)誤碼為XJ015和一個(gè)08006的異常表示關(guān)閉成功,應(yīng)用程序可以不處理這兩個(gè)異常。
2) 訪問網(wǎng)絡(luò)模式Derby數(shù)據(jù)庫
網(wǎng)絡(luò)模式和內(nèi)嵌模式的不同出在于:
A. 數(shù)據(jù)庫連接URL的不同;
B. 應(yīng)用程序退出時(shí)無效關(guān)閉Derby數(shù)據(jù)庫;
C. 數(shù)據(jù)庫驅(qū)動(dòng)的不同;
String driver = “org.apache.derby.jdbc.ClientDriver”;
String url = “jdbc:derby: //localhost:1527/firstdb;create=true”;
Connection conn;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url);
}catch(Exception e) {
……
}
javaDB數(shù)據(jù)庫問題
javaDB其實(shí)就是Derby,它并不是一個(gè)新的數(shù)據(jù)庫產(chǎn)品,它是由IBM捐獻(xiàn)給Apache的DB項(xiàng)目的一個(gè)純java數(shù)據(jù)庫,JDK6.0里面帶的這個(gè)Derby的版本是 10.2.1.7,支持存儲(chǔ)過程和觸發(fā)器;有兩種運(yùn)行模式,一種是作為嵌入式數(shù)據(jù)庫,另一種是作為網(wǎng)絡(luò)數(shù)據(jù)庫,前者的數(shù)據(jù)庫服務(wù)器鎮(zhèn)仔和客戶端都在同一個(gè) JVM里面運(yùn)行,后者允許數(shù)據(jù)庫服務(wù)器端和客戶端不在同一個(gè)JVM里面,而且允許這兩者在不同的物理機(jī)器上.值得注意的是JDK6里面的這個(gè)Derby支持JDK6的新特性JDBC 4.0規(guī)范(R 221),現(xiàn)在我們?nèi)绻毩?xí)JDBC的用法,沒有必要單獨(dú)裝一個(gè)數(shù)據(jù)庫產(chǎn)品了,直接用Derby就行.
1、本身沒有操作界面,可以用第三方工具來管理(也就是你說的操作界面),Aqua Data Studio 具備管理功能的用于 Apache Derby 關(guān)系數(shù)據(jù)庫的管理工具和數(shù)據(jù)庫查詢工具。直觀管理功能讓用戶能夠?yàn)g覽和修改數(shù)據(jù)庫結(jié)構(gòu),包括架構(gòu)對(duì)象和數(shù)據(jù)庫存儲(chǔ),以及維護(hù)數(shù)據(jù)庫安全。集成查詢工具讓您能夠迅速創(chuàng)建、編輯和執(zhí)行 SQL 查詢與腳本。Aqua Data Studio 進(jìn)一步提供導(dǎo)入與導(dǎo)出工具,從而輕松地將數(shù)據(jù)移入和移出不同的數(shù)據(jù)格式及 Apache Derby 數(shù)據(jù)庫。集成在這些工具內(nèi)的是庫瀏覽器 (Repository Browser),擁有 CVS 和 Subversion (SVN) 的完整來源控制客戶端。
2、兩者的區(qū)別,簡(jiǎn)單的說,就是javaDB是一個(gè)簡(jiǎn)化輕量級(jí)數(shù)據(jù)庫,適合小型系統(tǒng)的小規(guī)模測(cè)試用,完全可以跑在內(nèi)存里的數(shù)據(jù)庫,它只有3M大小,而MySQL則是可以應(yīng)用部署大型系統(tǒng)的數(shù)據(jù)庫,功能更多更全,也更穩(wěn)定,是用范圍更廣。
3、下面是個(gè)使用derby的簡(jiǎn)單例子:
首先導(dǎo)入JAR包:derby.jar,如果你裝的是JDK6,在C:\Program Files\Sun\JavaDB\lib目錄下就可以找到.
然后衫州就要?jiǎng)?chuàng)建數(shù)據(jù)庫了:
代碼
private Connection getConnection() throws SQLException {
Connection connection = DriverManager
.getConnection(“jdbc:derby:userDB;create=true;user=test;password=test”);
connection.setAutoCommit(false);
return connection;
}
其中userDB是要連接數(shù)據(jù)庫的名字,create=true表示如果該數(shù)據(jù)庫不存在,則創(chuàng)建該數(shù)據(jù)庫,如果數(shù)據(jù)庫存在,則用用戶user=test;密碼password=test連接數(shù)據(jù)庫.
有了數(shù)御塌汪據(jù)庫,接下來該建表了:
代碼
private void createTable(Connection connection) throws SQLException {
Statement statement = connection.createStatement();
String sql = “create table USERS(“
+ ” ID BIGINT not null generated by default as identity,”
+ ” USER_NAME VARCHAR(20) not null,”
+ ” PASSWORD VARCHAR(20),”
+ ” constraint P_KEY_1 primary key (ID))”;
statement.execute(sql);
sql = “create unique index USER_NAME_INDEX on USERS (“
+ ” USER_NAME ASC)”;
statement.execute(sql);
statement.close();
}
創(chuàng)建了 USERS表,包括ID,USER_NAME,PASSWORD三個(gè)列,其中ID是主鍵,其中g(shù)enerated by default as identity 的作用類似sequence,identity是定義自動(dòng)加一的列,
GENERATED BY ALWAYS AS IDENTITY
GENERATED BY DEFAULT AS IDENTITY
By always和by default是說明生成這個(gè)IDENTITY的方式。
By always是完全由系統(tǒng)自動(dòng)生成。
by default是可以由用戶來指定一個(gè)值。
編寫與USERS表對(duì)應(yīng)的javabean(這個(gè)就不多說了),:
代碼
public class User implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private Long id;
private String userName;
private String password;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
接下來就可以就數(shù)據(jù)庫進(jìn)行增刪改查的操作了:
插入數(shù)據(jù):
代碼
private void create(User user) {
Connection connection = null;
try {
connection = this.getConnection();
PreparedStatement statement = connection
.prepareStatement(“insert into users (user_name,password) values(?,?)”);
int index = 1;
statement.setString(index++, user.getUserName());
statement.setString(index++, user.getPassword());
statement.execute();
user.setId(this.getId(connection));
connection.commit();
} catch (SQLException e) {
rollback(connection);
throw new RuntimeException(e);
} finally {
if (connection != null) {
close(connection);
}
}
}
代碼
private Long getId(Connection connection) throws SQLException {
CallableStatement callableStatement = connection
.prepareCall(“values identity_val_local()”);
ResultSet resultSet = callableStatement.executeQuery();
resultSet.next();
Long id = resultSet.getLong(1);
resultSet.close();
callableStatement.close();
return id;
}
getId方法是獲得系統(tǒng)默認(rèn)的id值,是通過 identity_val_local()獲得的,而函數(shù)IDENTITY_VAL_LOCAL()則可以在INSERT語句執(zhí)行之后,為我們返回剛才系統(tǒng)為id所產(chǎn)生的值.感覺還是有點(diǎn)想sequence的curr_val.
修改數(shù)據(jù):
代碼
private void update(User user) {
Connection connection = null;
try {
connection = this.getConnection();
PreparedStatement statement = connection
.prepareStatement(“update users set user_name=?,password=? where id=?”);
int index = 1;
statement.setString(index++, user.getUserName());
statement.setString(index++, user.getPassword());
statement.setLong(index++, user.getId());
statement.execute();
connection.commit();
} catch (SQLException e) {
rollback(connection);
throw new RuntimeException(e);
} finally {
if (connection != null) {
close(connection);
}
}
}
刪除數(shù)據(jù):
代碼
public void delete(Long id) {
Connection connection = null;
try {
connection = this.getConnection();
PreparedStatement statement = connection
.prepareStatement(“delete from users where id=?”);
statement.setLong(1, id);
statement.execute();
connection.commit();
} catch (SQLException e) {
rollback(connection);
throw new RuntimeException(e);
} finally {
if (connection != null) {
close(connection);
}
}
}
查詢數(shù)據(jù):
代碼
public User findById(Long id) {
Connection connection = null;
try {
connection = this.getConnection();
PreparedStatement statement = connection
.prepareStatement(“select user_name,password from users where id=?”);
statement.setLong(1, id);
ResultSet resultSet = statement.executeQuery();
User user = null;
if (resultSet.next()) {
user = new User();
user.setId(id);
user.setUserName(resultSet.getString(“user_name”));
user.setPassword(resultSet.getString(“password”));
}
resultSet.close();
statement.close();
connection.commit();
return user;
} catch (SQLException e) {
throw new RuntimeException(e);
} finally {
if (connection != null) {
close(connection);
}
}
}
主鍵是必須的,如果覺得增加一列會(huì)給程序帶來麻煩,那覺得你現(xiàn)在應(yīng)該暫停繼續(xù)編碼,多花點(diǎn)時(shí)間在結(jié)構(gòu)的設(shè)計(jì)上,對(duì)整個(gè)程序而言更有意義
就數(shù)據(jù)庫方面而言扮尺,不建議用數(shù)據(jù)列作主鍵,因?yàn)殚L(zhǎng)字符數(shù)據(jù)操作起來效率不如整型高(可以設(shè)廳歲高想,刪除記錄的時(shí)候,比較兩個(gè)整形是否相等要比比較兩個(gè)長(zhǎng)字符串是否相等快捷得多,排序,分組之類的操作就不用多說了).
建議增加一個(gè)標(biāo)識(shí)列(identity column)作主鍵,不會(huì)給程序帶來多少麻煩的雀緩
純java數(shù)據(jù)庫的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于純java數(shù)據(jù)庫,構(gòu)建高效的純Java數(shù)據(jù)庫系統(tǒng)化解數(shù)據(jù)存儲(chǔ)難題,java自帶的數(shù)據(jù)庫怎么用,能不能給一段運(yùn)行的通的代碼.(包括import),javaDB數(shù)據(jù)庫問題的信息別忘了在本站進(jìn)行查找喔。
創(chuàng)新互聯(lián)(cdcxhl.com)提供穩(wěn)定的云服務(wù)器,香港云服務(wù)器,BGP云服務(wù)器,雙線云服務(wù)器,高防云服務(wù)器,成都云服務(wù)器,服務(wù)器托管。精選鉅惠,歡迎咨詢:028-86922220。
文章標(biāo)題:構(gòu)建高效的純Java數(shù)據(jù)庫系統(tǒng)化解數(shù)據(jù)存儲(chǔ)難題(純java數(shù)據(jù)庫)
新聞來源:http://m.5511xx.com/article/cdjopii.html


咨詢
建站咨詢
