存儲連接資料庫
『壹』 JDBC連接資料庫的步驟都有哪些
創建一個以JDBC連接資料庫的程序,包含7個步驟:
1、JDBC所需的四個參數(user,password,url,driverClass)
(1)user用戶名;
(2)password密碼;
(3)URL定義了連接資料庫時的協議、子協議、數據源標識。
書寫形式:協議:子協議:數據源標識。
協議:在JDBC中總是以jdbc開始。
子協議:是橋連接的驅動程序或是資料庫管理系統名稱。
數據源標識:標記找到資料庫來源的地址與連接埠。
例如:(Mysql的連接URL)
jdbc:mysql:
//localhost:3306/test?useUnicode=true&characterEncoding=gbk ;
useUnicode=true:表示使用Unicode字元集。如果characterEncoding設置為
gb2312或GBK,本參數必須設置為true 。characterEncoding=gbk:字元編碼方式。
(4)driverClass連接資料庫所需的驅動。
2、載入JDBC驅動程序
在連接資料庫之前,首先要載入想要連接的資料庫的驅動到JVM(java虛擬機),這通過java.lang.Class類的靜態方法forName(String className)實現。
例如:
註:列是從左到右編號的,並且從列1開始。
7、處理異常,關閉JDBC對象資源
操作完成以後要把所有使用的JDBC對象全都關閉,以釋放JDBC資源,關閉順序和聲明順序相反:
(1)先關閉requestSet
(2)再關閉preparedStatement
(3)最後關閉連接對象connection
實現代碼如下:
requestSet.close();
preparedStatement.close();
connection.close();
『貳』 怎麼使用JAVA連接資料庫
1、載入驅動程序。
處理結果兩種情況:
1、執行更新返回的是本次操作影響到的記錄數。
2、執行查詢返回的結果是一個ResultSet對象。
ResultSet包含符合SQL語句中條件的所有行,並且它通過一套get方法提供了對這些 行中數據的訪問。
(2)存儲連接資料庫擴展閱讀:
Statement
要執行SQL語句,必須獲得java.sql.Statement實例,Statement實例分為以下3 種類型:
1、執行靜態SQL語句。通常通過Statement實例實現。
2、執行動態SQL語句。通常通過PreparedStatement實例實現。
3、執行資料庫存儲過程。通常通過CallableStatement實例實現。
『叄』 關於存儲過程中連接資料庫問題
存儲過程的概念
SQL Server提供了一種方法,它可以將一些固定的操作集中起來由SQL Server資料庫伺服器來完成,以實現某個任務,這種方法就是存儲過程。
存儲過程是SQL語句和可選控制流語句的預編譯集合,存儲在資料庫中,可由應用程序通過一個調用執行,而且允許用戶聲明變數、有條件執行以及其他強大的編程功能。
在SQL Server中存儲過程分為兩類:即系統提供的存儲過程和用戶自定義的存儲過程。
可以出於任何使用SQL語句的目的來使用存儲過程,它具有以下優點:
可以在單個存儲過程中執行一系列SQL語句。
可以從自己的存儲過程內引用其他存儲過程,這可以簡化一系列復雜語句。
存儲過程在創建時即在伺服器上進行編譯,所以執行起來比單個SQL語句快,而且減少網路通信的負擔。
安全性更高。
創建存儲過程
在SQL Server中,可以使用三種方法創建存儲過程 :
①使用創建存儲過程向導創建存儲過程。
②利用SQL Server 企業管理器創建存儲過程。
③使用Transact-SQL語句中的CREATE PROCEDURE命令創建存儲過程。
下面介紹使用Transact-SQL語句中的CREATE PROCEDURE命令創建存儲過程
創建存儲過程前,應該考慮下列幾個事項:
①不能將 CREATE PROCEDURE 語句與其它 SQL 語句組合到單個批處理中。
②存儲過程可以嵌套使用,嵌套的最大深度不能超過32層。
③創建存儲過程的許可權默認屬於資料庫所有者,該所有者可將此許可權授予其他用戶。
④存儲過程是資料庫對象,其名稱必須遵守標識符規則。
⑤只能在當前資料庫中創建存儲過程。
⑥ 一個存儲過程的最大尺寸為128M。
使用CREATE PROCEDURE創建存儲過程的語法形式如下:
QUOTE:
CREATE PROC[EDURE]procere_name[;number][;number]
[{@parameter data_type}[VARYING][=default][OUTPUT]][,...n]
WITH
{RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}]
[FOR REPLICATION]
AS sql_statement [ ...n ]
用CREATE PROCEDURE創建存儲過程的語法參數的意義如下:
procere_name:用於指定要創建的存儲過程的名稱。
number:該參數是可選的整數,它用來對同名的存儲過程分組,以便用一條 DROP PROCEDURE 語句即可將同組的過程一起除去。
@parameter:過程中的參數。在 CREATE PROCEDURE 語句中可以聲明一個或多個參數。
data_type:用於指定參數的數據類型。
VARYING:用於指定作為輸出OUTPUT參數支持的結果集。
Default:用於指定參數的默認值。
OUTPUT:表明該參數是一個返回參數。
例如:下面創建一個 簡單的存儲過程proctinfo,用於檢索產品信息。
USE Northwind
if exists(select name from sysobjects
where name='proctinfo' and type = 'p')
drop procere proctinfo
GO
create procere proctinfo
as
select * from procts
GO
通過下述sql語句執行該存儲過程:execute proctinfo
即可檢索到產品信息。
執行存儲過程
直接執行存儲過程可以使用EXECUTE命令來執行,其語法形式如下:
[[EXEC[UTE]]
{ [@return_status=]
{procere_name[;number]|@procere_name_var} [[@parameter=]{value|@variable[OUTPUT]|[DEFAULT]}
[,...n]
[ WITH RECOMPILE ]
使用 EXECUTE 命令傳遞單個參數,它執行 showind 存儲過程,以 titles 為參數值。showind 存儲過程需要參數 (@tabname),它是一個表的名稱。其程序清單如下:
EXEC showind titles
當然,在執行過程中變數可以顯式命名:
EXEC showind @tabname = titles
如果這是 isql 腳本或批處理中第一個語句,則 EXEC 語句可以省略:
showind titles或者showind @tabname = titles
下面的例子使用了默認參數
USE Northwind
GO
CREATE PROCEDURE insert_Procts_1
( @SupplierID_2 int,
@CategoryID_3 int,
@ProctName_1 nvarchar(40)='無')
AS INSERT INTO Procts
(ProctName,SupplierID,CategoryID)
VALUES
(@ProctName_1,@SupplierID_2,@CategoryID_3)
GO
exec insert_Procts_1 1,1
Select * from Procts where SupplierID=1 and CategoryID=1
GO
下面的例子使用了返回參數
USE Northwind
GO
CREATE PROCEDURE query_procts
( @SupplierID_1 int,
@ProctName_2 nvarchar(40) output)
AS
select @ProctName_2 = ProctName from procts
where SupplierID = @SupplierID_1
執行該存儲過程來查詢SupplierID為1的產品名:
declare @proct nvarchar(40)
exec query_procts 1,@proct output
select '產品名'= @proct
go
查看存儲過程
存儲過程被創建之後,它的名字就存儲在系統表sysobjects中,它的源代碼存放在系統表syscomments中。可以使用使用企業管理器或系統存儲過程來查看用戶創建的存儲過程。
使用企業管理器查看用戶創建的存儲過程
在企業管理器中,打開指定的伺服器和資料庫項,選擇要創建存儲過程的資料庫,單擊存儲過程文件夾,此時在右邊的頁框中顯示該資料庫的所有存儲過程。用右鍵單擊要查看的存儲過程,從彈出的快捷菜單中選擇屬性選項,此時便可以看到存儲過程的源代碼。
使用系統存儲過程來查看用戶創建的存儲過程
可供使用的系統存儲過程及其語法形式如下:
sp_help:用於顯示存儲過程的參數及其數據類型
sp_help [[@objname=] name]
參數name為要查看的存儲過程的名稱。
sp_helptext:用於顯示存儲過程的源代碼
sp_helptext [[@objname=] name]
參數name為要查看的存儲過程的名稱。
sp_depends:用於顯示和存儲過程相關的資料庫對象
sp_depends [@objname=]』object』
參數object為要查看依賴關系的存儲過程的名稱。
sp_stored_proceres:用於返回當前資料庫中的存儲過程列表
修改存儲過程
存儲過程可以根據用戶的要求或者基表定義的改變而改變。使用ALTER PROCEDURE語句可以更改先前通過執行 CREATE PROCEDURE 語句創建的過程,但不會更改許可權,也不影響相關的存儲過程或觸發器。其語法形式如下:
ALTERPROC[EDURE]procere_name[;number]
[{@parameterdata_type}
[VARYING][=default][OUTPUT]][,...n] [WITH
{RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}]
[FOR REPLICATION]
AS
sql_statement [ ...n ]
重命名和刪除存儲過程
1. 重命名存儲過程
修改存儲過程的名稱可以使用系統存儲過程sp_rename,其語法形式如下:
sp_rename 原存儲過程名稱,新存儲過程名稱
另外,通過企業管理器也可以修改存儲過程的名稱。
刪除存儲過程
刪除存儲過程可以使用DROP命令,DROP命令可以將一個或者多個存儲過程或者存儲過程組從當前資料庫中刪除,其語法形式如下:
drop procere {procere} [,…n]
當然,利用企業管理器也可以很方便地刪除存儲過程。
存儲過程的重新編譯
在我們使用了一次存儲過程後,可能會因為某些原因,必須向表中新增加數據列或者為表新添加索引,從而改變了資料庫的邏輯結構。這時,需要對存儲過程進行重新編譯,SQL Server提供三種重新編譯存儲過程的方法 :
1、在建立存儲過程時設定重新編譯
語法格式:CREATE PROCEDURE procere_name WITH RECOMPILE AS sql_statement
2、在執行存儲過程時設定重編譯
語法格式: EXECUTE procere_name WITH RECOMPILE
3、通過使用系統存儲過程設定重編譯
語法格式為: EXEC sp_recompile OBJECT
系統存儲過程與擴展存儲過程
1.系統存儲過程
系統存儲過程存儲在master資料庫中,並以sp_為前綴,主要用來從系統表中獲取信息,為系統管理員管理SQL Server提供幫助,為用戶查看資料庫對象提供方便。比如用來查看資料庫對象信息的系統存儲過程sp_help、顯示存儲過程和其它對象的文本的存儲過程sp_helptext等。
2.擴展存儲過程:
擴展存儲過程以xp_為前綴,它是關系資料庫引擎的開放式數據服務層的一部分,其可以使用戶在動態鏈接庫(DLL)文件所包含的函數中實現邏輯,從而擴展了Transact-SQL的功能,並且可以象調用Transact-SQL過程那樣從Transact-SQL語句調用這些函數。
例: 利用擴展存儲過程xp_cmdshell為一個操作系統外殼執行指定命令串,並作為文本返回任何輸出。
執行代碼:
use master
exec xp_cmdshell 'dir *.exe'
執行結果返回系統目錄下的文件內容文本信息。
最後給大家舉一個例子:
QUOTE:
/**
1、 在Northwind資料庫中,創建一個帶查詢參數的存儲過程,
要求在輸入一個定購金額總額@total時,查詢超出該值的所
有產品的相關信息,包括產品名稱和供應商名稱、單位數量、
單價、以及該產品的定購金額總額,並通過一個輸出參數返回
滿足查詢條件的產品數
**/
IF exists (select * from SysObjects where name='more_than_total' and type='p')
drop procere more_than_total
go
CREATE PROCEDURE More_Than_Total
@total money = 0
AS
Declare @amount smallint
BEGIN
select distinct
P.proctName,
S.contactName,
P.UnitPrice
from Procts P inner join [order Details] O
on p.proctID=o.proctID inner join suppliers s
on p.supplierID=s.SupplierID
where O.proctID in
(select proctID
from [order Details]
group by proctId
having sum(quantity*unitprice)>@total
)
END
GO
『肆』 c#連接資料庫的幾種方式
第一種方法:直接通過資料庫的用戶名、密碼等連接到資料庫進行資料庫連接。
如:private void sqlconn()
{
SqlConncetion conn = new SqlConnection("SERVER=.;DATABASE=pubs;PWD=;UID=sa;");
SqlConncetion cmd = new SqlCommand("SELECT*FROM [table]",cmd);
DataSet ds = new DataSet();
SqlDataAdapter adp = new SqlDataAdapter(cmd);
adp.Fill(ds);
}
其中SqlConnection 是資料庫連接類,SqlDataAdapter是數據適配器,SqlCommand是數據操作命令,即執行SQL語言。
說明,使用SqlConnection進行資料庫的連接,然後使用SqlCommand定義SQL查詢語句,再定義一個DataSet存儲查詢的結果,而SqlDataAdapter是資料庫和DataSet的轉換橋梁。
第二種方法:通過ConfigurationManager.ConnectionString獲取資料庫的配置信息。進行資料庫的連接。
如:public static int ExcuteNonQuery(string sql,params SqlParameter[] parameters)
{
string connStr = configurationManager.ConnectionStrings["ConnStr"].ConncetionString;
using(SqlConncetion conn=new SqlConnection(connStr))
{
conn.open();
using(SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
foreach(SqlParameter parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
return cmd.ExecuteNonQuery();
}
}
}
說明:
(1) 通過string connStr=ConfigurationManager.ConnectionString[「ConnStr」].ConnectionString;獲得資料庫連接的一些配置信息,即「數據源」、「資料庫名」、「用戶名」、「密碼」,將這些信息都保存在connStr中。
(2) SqlConnection conn = new SqlConnection(connStr);創建一個資料庫連接對象conn,連接資料庫用conn.Open();
(3) SqlCommand cmd = new SqlCommand(「Select * Form [表]」,conn);
或者string sql = 「Select * From [表]」;
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = sql;這樣就把訪問資料庫的SQL語句存到了cmd中
(4) 建立SqlDataAdapter對象和DataSet對象
DataSet myDataSet = new DataSet();創建DataSet對象,
SqlDataAdapter myDataAdapter = new SqlDataAdapter(cmd);創建數據適配器對象。
(5) 填充DataSet:myDataAdapter.Fill(myDataSet);其實SqlDataAdapter數據適配器起的就是一個連接資料庫和數據集(DataSet)的橋梁作用,把對資料庫操作的SQL語句得到的結果傳到SqlDataAdapter對象中,在通過SqlDataAdapter.Fill(DataSet)方法,將結果填充到DataSet中。
第三種方法:用工廠方法
DbProviderFactory m_dbProviderFactory = DbProviderFactories.GetFacory(ConfigurationManager.ConnectionString[「ConStr」].ProviderName);//獲取工廠
DbConnection conn = m_dbProviderFactory.CreateConncetion();//創建連接
DbCommand cmd = m_dbProviderFactory.CreateCommand();//創建命令
cmd.Connection = conn;
cmd.CommandText = strSql;
cmd.CommandType = CommandType.Text;
DbDataAdapter dapter = m_dbProviderFactory.CreateDataAdapter();//創建適配器
dapter.SelectCommand = cmd;
dapter.Fill(DataSet ds = new DataSet());//填充
return ds;
說明:
上面的語句中用ConfigurationManager.ConnectionString[「ConStr」].ProviderName獲取了當前資料庫的名稱,因此可以適用於任何資料庫,如果這樣寫,就是不同的資料庫使用不同的語言:
SqlServer:DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.SqlClient");
Oracle:DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OracleClient");
ODBC:DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.Odbc");
Access:DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OleDb");
『伍』 百度雲資料庫如何連接
這個也太高深了,真不知道哇。
『陸』 java濡備綍榪炴帴鏁版嵁搴擄紵
1銆侀栧厛絎涓姝ュ氨鏄鍦ㄧ綉涓婁笅杞戒竴涓猰ysql鐨勬暟鎹搴撻┍鍔╦ar鍖咃紝綾諱技mysql-connector-java-5.1.20-bin.jar銆傛柊寤轟竴涓狫AVA欏圭洰錛屽湪欏圭洰涓嬮潰鍒涘緩涓涓猯ib鏂囦歡澶癸紝灝嗛┍鍔╦ar鏂囦歡鎷瘋礉鍒發ib鏂囦歡澶逛腑銆
2銆佸厜鏄鎷瘋礉鍒拌繖閲岃繕涓嶅燂紝闇瑕佸皢璇JAR鍖呭姞鍏ュ埌欏圭洰鐨刡uildpath鍙橀噺涓銆傞紶鏍囧彸杈-銆媌uildpath->configurebuildpath..鍦ㄥ脊鍑虹殑鐣岄潰涓鐐瑰嚮Addjars閫変腑椹卞姩jar鍖呭皢涔嬫坊鍔犲埌buildpath鍙橀噺涓銆
3銆佺劧鍚庡壋寤轟竴涓狫AVA鏂囦歡鍐欒繛鎺ユ暟鎹搴撶殑浠g爜銆傞渶瑕佸0鏄庡洓涓鍙橀噺錛堥潤鎬佺殑錛屼竴鑸涓嶄細淇鏀癸級銆倁rl鏄鏁版嵁搴撶殑緗戠粶鍦板潃鍙婂叾鏁版嵁搴撶殑鍚嶇О銆俷ame椹卞姩鐨勫悕縐幫紙涓嶅悓鏁版嵁搴撴槸涓嶅悓鐨勶紝鍒浜哄畾涔夌殑鍥哄畾鍐欐硶錛夛紝user鏁版嵁搴撶敤鎴峰悕password鏁版嵁搴撹繛鎺ュ瘑鐮併
4銆佹帴涓嬫潵灝辨槸閫氳繃鏁版嵁搴撹繛鎺ュ壋寤篊onnection瀵硅薄錛孴estDBHelper綾葷殑鏋勯犳柟娉曚紶鍏sql璇鍙ワ紝閭f牱鍦ㄤ嬌鐢ㄧ殑鏃跺欏氨鍙浠ョ洿鎺New瀵硅薄鐒跺悗浼犲叆SQL璇鍙ユ墽琛屼簡銆傝板緱鍐欎竴涓鍏抽棴榪炴帴鐨勬柟娉曪紝姣忔¤塊棶鏁版嵁搴撲箣鍚庡繀欏誨叧闂榪炴帴銆
5銆佹帴涓嬫潵灝辨槸鍐檓ain鏂規硶嫻嬭瘯鏁版嵁搴撹繛鎺ワ紝SQL璇鍙ユ墽琛岀殑緇撴灉闆嗘槸鏀懼湪ResultSet瀵硅薄涓鐨勶紝濡傛灉瑕佸彇閲岄潰鐨勫唴瀹瑰氨闇瑕佸驚鐜渚濇″彇鍑恆備嬌鐢ㄥ畬涔嬪悗璁板緱鍏抽棴鏁版嵁搴撹繛鎺ャ
6銆佹渶鍚庡氨鏄鏌ョ湅鎺у埗鍙扮殑杈撳嚭淇℃伅錛屾瘮杈冨拰鏁版嵁搴撹〃涓鐨勪俊鎮鏄鍚︿竴鑷淬傚彟澶栨垜榪欓噷鐨勮〃鍙鏈変袱涓瀛楁碉紝濡傛灉鏈夊氫釜瀛楁墊寜鐓ret.getString(2);ret.getString(3);渚濇″線鍚庨潰鍙栧氨鍙浠ヤ簡銆
鎷撳睍璧勬枡錛
Java鏄鐢盨un鍏鍙鎬簬1995騫5鏈堟帹鍑虹殑闈㈠悜瀵硅薄鐨勭▼搴忚捐¤璦銆
Java緇ф壙浜咰++璇璦闈㈠悜瀵硅薄鎶鏈鐨勬牳蹇冿紝鍙堣垗寮冧簡C++璇璦涓鐨勬寚閽堛佽繍綆楃﹂噸杞戒互鍙婂氶噸緇ф壙鐨勭壒鎬э紝鍚屾椂寮曞叆浜嗘硾鍨嬬紪紼嬨佺被鍨嬪畨鍏ㄧ殑鏋氫婦絳夌壒鎬э紝浣縅ava鎴愪負綆鍗曘侀潰鍚戝硅薄銆佸垎甯冨紡銆佽В閲婃с佸仴澹銆佸畨鍏ㄤ笌緋葷粺鏃犲叧銆佸彲縐繪嶃侀珮鎬ц兘銆佸氱嚎紼嬪拰鍔ㄦ佺殑璇璦銆
闅忕潃浜掕仈緗戠殑榪呯寷鍙戝睍錛孞ava宸茬粡鎴愪負閲嶈佺殑緗戠粶緙栫▼璇璦錛岃騫挎硾搴旂敤浜庝紒涓氱駭Web搴旂敤寮鍙戝拰縐誨姩搴旂敤寮鍙戙
Java鐪嬭搗鏉ヨ捐″緱寰堝儚C++錛屼絾鏄涓轟簡浣胯璦灝忓拰瀹規槗鐔熸倝錛岃捐¤呬滑鎶奀++璇璦涓璁稿氬彲鐢ㄧ殑鐗瑰緛鍘繪帀浜嗭紝榪欎簺鐗瑰緛鏄涓鑸紼嬪簭鍛樺緢灝戜嬌鐢ㄧ殑銆備緥濡傦紝Java涓嶆敮鎸乬oto璇鍙ワ紝浠d箣浠ユ彁渚沚reak鍜宑ontinue璇鍙ヤ互鍙婂紓甯稿勭悊銆侸ava榪樺墧闄や簡C++鐨勬搷浣滅﹁繃杞斤紙overload錛夊拰澶氱戶鎵跨壒寰侊紝騫朵笖涓嶄嬌鐢ㄤ富鏂囦歡錛屽厤鍘諱簡棰勫勭悊紼嬪簭銆傚洜涓篔ava娌℃湁緇撴瀯錛屾暟緇勫拰涓查兘鏄瀵硅薄錛屾墍浠ヤ笉闇瑕佹寚閽堛侸ava鑳藉熻嚜鍔ㄥ勭悊瀵硅薄鐨勫紩鐢ㄥ拰闂存帴寮曠敤錛屽疄鐜拌嚜鍔ㄧ殑鏃犵敤鍗曞厓鏀墮泦錛屼嬌鐢ㄦ埛涓嶅繀涓哄瓨鍌ㄧ$悊闂棰樼儲鎮礆紝鑳芥洿澶氱殑鏃墮棿鍜岀簿鍔涜姳鍦ㄧ爺鍙戜笂銆
『柒』 如何連接資料庫