50150504 資料訪問1

2022-08-31 18:12:10 字數 3542 閱讀 5632

資料訪問:——ado.net

一、命名空間:

using system.data;

using system.data.sqlclient;

二、鏈結類 - sqlconnection——建立與資料庫的鏈結

(一)鏈結字串: 連哪台電腦,連電腦上的哪個資料庫,使用者名稱是什麼,密碼

server=目標伺服器的ip位址;database=資料庫名;uid=資料庫的登入名;pwd=資料庫的登入密碼

server=.;database=mydb;uid=sa;pwd=123

(二)例項化——構造

sqlconnection conn = new sqlconnection();

sqlconnection conn = new sqlconnection(鏈結字串);

(三)屬性

connectionstring:(string)指定與獲取鏈結字串。

state:用來描述鏈結當前的狀態。closed-鏈結處於關閉狀態。open-鏈結處於開啟狀態。

(四)方法

open():開啟鏈結

close():關閉鏈結。

(五)案例

1.定義鏈結字串。

string connectionstring = "server=.;database=mydb;uid=sa;pwd=123";

2.構造鏈結物件

sqlconnection conn = new sqlconnection(connectionstring);

或sqlconnection conn = new sqlconnection();

conn.connectionstring = connectionstring;

3.開啟鏈結

conn.open();

4.關閉鏈結

conn.close();

三、命令類——sqlcommand——向資料傳遞sql語句或儲存過程,並執行。

(一)構造:

sqlcommand cmd = new sqlcommand();

sqlcommand cmd = conn.createcommand();

(二)屬性:

connection:(sqlconnection)指定通過哪個鏈結物件來運算元據庫

commandtext:(string)要執行的sql語句或儲存過程名.

(三)方法:

executenonquery()——執行命令,返回影響行數。一般用來執行增刪改的語句。

executereader() ——執行命令,返回乙個讀取器物件。一般用來執行查詢語句。

(四)案例:

string connectionstring = "server=.;database=mydb;uid=sa;pwd=123";

sqlconnection conn = new sqlconnection(connectionstring);

conn.open();

//運算元據庫

sqlcommand cmd = new sqlcommand();

cmd.connection = conn;

cmd.commandtext = "insert into student values('s001','張三','1','清華大學','1990-6-1')";

cmd.executenonquery();

conn.close();

四、讀取器類:——sqldatareader——從查詢的結果集中把資料逐個讀出來。

(一)構造:

只有唯一的一種構造方式。再沒有別的構造方式了。

sqldatareader dr = cmd.executereader();

說明:唯讀,只向前,讀取器工具。記憶體中只佔一條記錄的空間。

(二)屬性:

hasrows : bool,判斷是否有資料可讀。是否查出資料來了。

(三)方法:

read():bool。把結果集中當前行讀取記憶體的datareader中來。讀來了,返回true。沒有資料可讀,返回false。

在使用sqldatareader讀取某列資料時,必須先使用read()方法把資料先取到記憶體中的sqldatareader中。

最常用的讀取句式:

while (dr.read())

從sqldatareader中讀取某列值的時候,使用方法:

1.dr[列的下標/列的索引號]

2.dr["列名"]

3.dr.getint(索引號) dr.getstring(索引號) ...

(四)案例:

1.登入。

///登入的例子。

//輸入

console.write("使用者名稱:");

string uid = console.readline();

console.write("密碼:");

string pwd = console.readline();

//運算元據庫

sqlconnection conn = new sqlconnection("server=.;database=mydb;uid=sa;pwd=123");

conn.open();

sqlcommand cmd = conn.createcommand();

cmd.commandtext = "select * from login where username='"+uid+"' and password='"+pwd+"' "; //查詢

sqldatareader dr = cmd.executereader(); //生成讀取器物件。

if (dr.hasrows)

else

conn.close();

2.讀取顯示表中的所有的資料。

sqlconnection conn = new sqlconnection("server=.;database=mydb;uid=sa;pwd=123");

conn.open();

sqlcommand cmd = conn.createcommand();

cmd.commandtext = "select * from student";

sqldatareader dr = cmd.executereader(); //生成讀取器

while (dr.read())

//向讀取器中讀進一條資料來

////把記憶體的讀取器中讀進來的資料取出來顯示出來。

+ dr[1].tostring() + dr[2].tostring() + dr[3].tostring() + dr[4].tostring());

+ dr[1].tostring() + dr[2].tostring() + dr[3].tostring() + dr[4].tostring());

+ dr[1].tostring() + dr[2].tostring() + dr[3].tostring() + dr[4].tostring());

conn.close();

3.完善插入功能,在插入之前,判斷一下學號是否已存在。如果已存在就提示報名,不存在就插入進去。

訪問介面1

第四節 訪問介面 對介面成員的訪問 對介面方法的呼叫和採用索引指示器訪問的規則與類中的情況也是相同的。如果底層成員的命名與繼承而來的高層成員一致,那麼底層成員將覆蓋同名的高層成員。但由於介面支援多繼承,在多繼承中,如果兩個父介面含有同名的成員,這就產生了二義性 這也正是c 中取消了類的多繼承機制的原...

訪問介面1

第四節 訪問介面 對介面成員的訪問 對介面方法的呼叫和採用索引指示器訪問的規則與類中的情況也是相同的。如果底層成員的命名與繼承而來的高層成員一致,那麼底層成員將覆蓋同名的高層成員。但由於介面支援多繼承,在多繼承中,如果兩個父介面含有同名的成員,這就產生了二義性 這也正是c 中取消了類的多繼承機制的原...

資料訪問層設計 多庫操作 (1)

以前設計,無法實現多資料庫操作,本次修改做了部分改動,尤其配置檔案,加了自定義配置節來處理多資料庫 只貼出修改的關鍵 及配置處理,配置樣式 關於介面設計等其它相關 請參見以前寫的 資料訪問層設計 1 資料庫配置類,管理引數等 using system using system.collections...