小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

C# ADO.NET編寫簡單的圖書館管理軟件

 羊玉wngbx 2019-03-05

使用軟件:

Microsoft SQL Server 2012

Microsoft Visual Studio 2012

本文地址: http://www.cnblogs.com/go2bed/

 

參考資料:

http://www.w3school.com.cn/ W3School

http://baike.baidu.com/ 百度百科

http://blog.csdn.net/lvfeng19806001/article/details/8175153 WinForm控件縮寫

及其他。

 

經(jīng)驗(yàn)、注意與感悟:

  1. 圖書館需要的控件略多,注意命名規(guī)范。因?yàn)槊謺?huì)很長,網(wǎng)上有觀點(diǎn)建議可以使用縮寫:btnSubmit(一個(gè)按鈕)等。(下附詳細(xì))
  2. 寫一個(gè)靜態(tài)類,執(zhí)行SQL語句。執(zhí)行SELECT的返回DataSet;執(zhí)行Delete、Update、Insert的返回“受影響行數(shù)”,且可以合為一個(gè)方法。SQL語句較強(qiáng)大,不只是幾個(gè)基本操作,組合使用很實(shí)用。
  3. 注意數(shù)據(jù)庫的設(shè)計(jì),主鍵不要對用戶可見。設(shè)置級聯(lián)刪除等。時(shí)間存儲使用了SmallDateTime。
  4. 將“管理員”和“普通用戶”的權(quán)限區(qū)分開。
  5. 很多細(xì)節(jié)可以優(yōu)化。例如搜索功能,可以輸入完畢立即搜索,不必點(diǎn)擊搜索鍵。CheckBox,選中后,自動(dòng)進(jìn)行反應(yīng)。
  6. DataGridView可有很多玩法。
  7. ComboBox顯示數(shù)據(jù)庫內(nèi)容的細(xì)節(jié):

comboBox1.DataSource = TypesDataSet.Tables[0];

comboBox1.ValueMember = "type";     //type是數(shù)據(jù)庫的列名。

 

獲取ComboBox 選中的值: comboBox.SelectedValue.ToString()

8.窗口間傳值,窗體的Show、Hide、Dispose、Application.Exit();等。

9.及其他。

 

源代碼就不貼了。程序和數(shù)據(jù)庫就不發(fā)了。

 

相關(guān)知識:

SQL

結(jié)構(gòu)化查詢語言(Structured Query Language),簡稱SQL(發(fā)音:/??s kju? ??l/ "S-Q-L")

http://baike.baidu.com/view/595350.htm?fr=aladdin 百度百科

 

可以把 SQL 分為兩個(gè)部分:數(shù)據(jù)操作語言 (DML) 和 數(shù)據(jù)定義語言 (DDL)。

SQL (結(jié)構(gòu)化查詢語言)是用于執(zhí)行查詢的語法。但是 SQL 語言也包含用于更新、插入和刪除記錄的語法。

查詢和更新指令構(gòu)成了 SQL 的 DML 部分:

  • SELECT - 從數(shù)據(jù)庫表中獲取數(shù)據(jù)
  • UPDATE - 更新數(shù)據(jù)庫表中的數(shù)據(jù)
  • DELETE - 從數(shù)據(jù)庫表中刪除數(shù)據(jù)
  • INSERT INTO - 向數(shù)據(jù)庫表中插入數(shù)據(jù)

SQL 的數(shù)據(jù)定義語言 (DDL) 部分使我們有能力創(chuàng)建或刪除表格。我們也可以定義索引(鍵),規(guī)定表之間的鏈接,以及施加表間的約束。

SQL 中最重要的 DDL 語句:

  • CREATE DATABASE - 創(chuàng)建新數(shù)據(jù)庫
  • ALTER DATABASE - 修改數(shù)據(jù)庫
  • CREATE TABLE - 創(chuàng)建新表
  • ALTER TABLE - 變更(改變)數(shù)據(jù)庫表
  • DROP TABLE - 刪除表
  • CREATE INDEX - 創(chuàng)建索引(搜索鍵)
  • DROP INDEX - 刪除索引

 

select

SELECT LastName,FirstName FROM Persons

"Persons" 表:

Id

LastName

FirstName

Address

City

1

Adams

John

Oxford Street

London

2

Bush

George

Fifth Avenue

New York

3

Carter

Thomas

Changan Street

Beijing

結(jié)果:

LastName

FirstName

Adams

John

Bush

George

Carter

Thomas

 

SELECT * FROM Persons

提示:星號(*)是選取所有列的快捷方式。

 

SELECT DISTINCT Company FROM Orders

對于一個(gè)列的重復(fù)數(shù)據(jù),僅輸出一次。即各個(gè)不同。

distinct adj. 有區(qū)別的

 

Where

如需有條件地從表中選取數(shù)據(jù),可將 WHERE 子句添加到 SELECT 語句。

語法

SELECT 列名稱 FROM 表名稱 WHERE 列 運(yùn)算符 值

下面的運(yùn)算符可在 WHERE 子句中使用:

操作符

描述

=

等于

<> 

不等于

大于

小于

>=

大于等于

<=

小于等于

BETWEEN

在某個(gè)范圍內(nèi)

LIKE

搜索某種模式

注釋:在某些版本的 SQL 中,操作符 <> 可以寫為 !=。

注意:

對于SQL server,可以使用 != 。

此處等于號使用 = 而不是 ==。

 

SQL 使用單引號來環(huán)繞文本值(大部分?jǐn)?shù)據(jù)庫系統(tǒng)也接受雙引號)。如果是數(shù)值,請不要使用引號。

 

AND 和 OR 可在 WHERE 子語句中把兩個(gè)或多個(gè)條件結(jié)合起來。

SELECT * FROM Persons WHERE FirstName='Thomas' AND LastName='Carter'

SELECT * FROM Persons WHERE firstname='Thomas' OR lastname='Carter'

SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William') AND LastName='Carter'

 

ORDER BY 語句用于根據(jù)指定的列對結(jié)果集進(jìn)行排序。

ORDER BY 語句默認(rèn)按照升序?qū)τ涗涍M(jìn)行排序。

如果您希望按照降序?qū)τ涗涍M(jìn)行排序,可以使用 DESC 關(guān)鍵字。

desc 

abbr. 降序排列(descend 的縮寫)

descend 

英 [d?'send]  美 [d?'s?nd]

vi. 下降;下去;下來;遺傳;屈尊

vt. 下去;沿…向下

 

ORDER 例子4個(gè):

實(shí)例 1

以字母順序顯示公司名稱:

SELECT Company, OrderNumber FROM Orders ORDER BY Company

結(jié)果:

Company

OrderNumber

Apple

4698

IBM

3532

W3School

6953

W3School

2356

實(shí)例 2

以字母順序顯示公司名稱(Company),并以數(shù)字順序顯示順序號(OrderNumber):

SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber

結(jié)果:

Company

OrderNumber

Apple

4698

IBM

3532

W3School

2356

W3School

6953

實(shí)例 3

以逆字母順序顯示公司名稱:

SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC

結(jié)果:

Company

OrderNumber

W3School

6953

W3School

2356

IBM

3532

Apple

4698

實(shí)例 4

以逆字母順序顯示公司名稱,并以數(shù)字順序顯示順序號:

SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC

ASC 代表升序排序,從小到大

 

結(jié)果:

Company

OrderNumber

W3School

2356

W3School

6953

IBM

3532

Apple

4698

注意:在以上的結(jié)果中有兩個(gè)相等的公司名稱 (W3School)。只有這一次,在第一列中有相同的值時(shí),第二列是以升序排列的。如果第一列中有些值為 nulls 時(shí),情況也是這樣的。

 

INSERT INTO 語句

INSERT INTO 語句用于向表格中插入新的行。

語法

INSERT INTO 表名稱 VALUES (值1, 值2,....)

我們也可以指定所要插入數(shù)據(jù)的列:

INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

注: 在數(shù)據(jù)后加大寫N,強(qiáng)制保存為Unicode格式。適用于漢字等。

 

Update 語句

Update 語句用于修改表中的數(shù)據(jù)。

語法:

UPDATE 表名稱 SET 列名稱 = 新值 WHERE 列名稱 = 某值

注: SET 后可以加多個(gè)列,用英文逗號隔開。

 

DELETE 語句

DELETE 語句用于刪除表中的行。

語法

刪除某一行:

DELETE FROM 表名稱 WHERE 列名稱 = 值

刪除所有行:

可以在不刪除表的情況下刪除所有的行。這意味著表的結(jié)構(gòu)、屬性和索引都是完整的:

DELETE FROM table_name

或者:

DELETE * FROM table_name

 

Microsoft Access、MySQL 以及 SQL Server 所使用的數(shù)據(jù)類型和范圍

Microsoft Access 數(shù)據(jù)類型

數(shù)據(jù)類型

描述

存儲

Text

用于文本或文本與數(shù)字的組合。最多 255 個(gè)字符。

 

Memo

Memo 用于更大數(shù)量的文本。最多存儲 65,536 個(gè)字符。

注釋:無法對 memo 字段進(jìn)行排序。不過它們是可搜索的。

 

Byte

允許 0 到 255 的數(shù)字。

1 字節(jié)

Integer

允許介于 -32,768 到 32,767 之間的數(shù)字。

2 字節(jié)

Long

允許介于 -2,147,483,648 與 2,147,483,647 之間的全部數(shù)字

4 字節(jié)

Single

單精度浮點(diǎn)。處理大多數(shù)小數(shù)。

4 字節(jié)

Double

雙精度浮點(diǎn)。處理大多數(shù)小數(shù)。

8 字節(jié)

Currency

用于貨幣。支持 15 位的元,外加 4 位小數(shù)。

提示:您可以選擇使用哪個(gè)國家的貨幣。

8 字節(jié)

AutoNumber

AutoNumber 字段自動(dòng)為每條記錄分配數(shù)字,通常從 1 開始。

4 字節(jié)

Date/Time

用于日期和時(shí)間

8 字節(jié)

Yes/No

邏輯字段,可以顯示為 Yes/No、True/False 或 On/Off。

在代碼中,使用常量 True 和 False (等價(jià)于 1 和 0)

注釋:Yes/No 字段中不允許 Null 值

1 比特

Ole Object

可以存儲圖片、音頻、視頻或其他 BLOBs (Binary Large OBjects)

最多 1GB

Hyperlink

包含指向其他文件的鏈接,包括網(wǎng)頁。

 

Lookup Wizard

允許你創(chuàng)建一個(gè)可從下列列表中進(jìn)行選擇的選項(xiàng)列表。

4 字節(jié)

MySQL 數(shù)據(jù)類型

在 MySQL 中,有三種主要的類型:文本、數(shù)字和日期/時(shí)間類型。

Text 類型:

數(shù)據(jù)類型

描述

CHAR(size)

保存固定長度的字符串(可包含字母、數(shù)字以及特殊字符)。在括號中指定字符串的長度。最多 255 個(gè)字符。

VARCHAR(size)

保存可變長度的字符串(可包含字母、數(shù)字以及特殊字符)。在括號中指定字符串的最大長度。最多 255 個(gè)字符。

注釋:如果值的長度大于 255,則被轉(zhuǎn)換為 TEXT 類型。

TINYTEXT

存放最大長度為 255 個(gè)字符的字符串。

TEXT

存放最大長度為 65,535 個(gè)字符的字符串。

BLOB

用于 BLOBs (Binary Large OBjects)。存放最多 65,535 字節(jié)的數(shù)據(jù)。

MEDIUMTEXT

存放最大長度為 16,777,215 個(gè)字符的字符串。

MEDIUMBLOB

用于 BLOBs (Binary Large OBjects)。存放最多 16,777,215 字節(jié)的數(shù)據(jù)。

LONGTEXT

存放最大長度為 4,294,967,295 個(gè)字符的字符串。

LONGBLOB

用于 BLOBs (Binary Large OBjects)。存放最多 4,294,967,295 字節(jié)的數(shù)據(jù)。

ENUM(x,y,z,etc.)

允許你輸入可能值的列表??梢栽?ENUM 列表中列出最大 65535 個(gè)值。如果列表中不存在插入的值,則插入空值。

注釋:這些值是按照你輸入的順序存儲的。

可以按照此格式輸入可能的值:ENUM('X','Y','Z')

SET

與 ENUM 類似,SET 最多只能包含 64 個(gè)列表項(xiàng),不過 SET 可存儲一個(gè)以上的值。

Number 類型:

數(shù)據(jù)類型

描述

TINYINT(size)

-128 到 127 常規(guī)。0 到 255 無符號*。在括號中規(guī)定最大位數(shù)。

SMALLINT(size)

-32768 到 32767 常規(guī)。0 到 65535 無符號*。在括號中規(guī)定最大位數(shù)。

MEDIUMINT(size)

-8388608 到 8388607 普通。0 to 16777215 無符號*。在括號中規(guī)定最大位數(shù)。

INT(size)

-2147483648 到 2147483647 常規(guī)。0 到 4294967295 無符號*。在括號中規(guī)定最大位數(shù)。

BIGINT(size)

-9223372036854775808 到 9223372036854775807 常規(guī)。0 到 18446744073709551615 無符號*。在括號中規(guī)定最大位數(shù)。

FLOAT(size,d)

帶有浮動(dòng)小數(shù)點(diǎn)的小數(shù)字。在括號中規(guī)定最大位數(shù)。在 d 參數(shù)中規(guī)定小數(shù)點(diǎn)右側(cè)的最大位數(shù)。

DOUBLE(size,d)

帶有浮動(dòng)小數(shù)點(diǎn)的大數(shù)字。在括號中規(guī)定最大位數(shù)。在 d 參數(shù)中規(guī)定小數(shù)點(diǎn)右側(cè)的最大位數(shù)。

DECIMAL(size,d)

作為字符串存儲的 DOUBLE 類型,允許固定的小數(shù)點(diǎn)。

* 這些整數(shù)類型擁有額外的選項(xiàng) UNSIGNED。通常,整數(shù)可以是負(fù)數(shù)或正數(shù)。如果添加 UNSIGNED 屬性,那么范圍將從 0 開始,而不是某個(gè)負(fù)數(shù)。

Date 類型:

數(shù)據(jù)類型

描述

DATE()

日期。格式:YYYY-MM-DD

注釋:支持的范圍是從 '1000-01-01' 到 '9999-12-31'

DATETIME()

*日期和時(shí)間的組合。格式:YYYY-MM-DD HH:MM:SS

注釋:支持的范圍是從 '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'

TIMESTAMP()

*時(shí)間戳。TIMESTAMP 值使用 Unix 紀(jì)元('1970-01-01 00:00:00' UTC) 至今的描述來存儲。格式:YYYY-MM-DD HH:MM:SS

注釋:支持的范圍是從 '1970-01-01 00:00:01' UTC 到 '2038-01-09 03:14:07' UTC

TIME()

時(shí)間。格式:HH:MM:SS 注釋:支持的范圍是從 '-838:59:59' 到 '838:59:59'

YEAR()

2 位或 4 位格式的年。

注釋:4 位格式所允許的值:1901 到 2155。2 位格式所允許的值:70 到 69,表示從 1970 到 2069。

* 即便 DATETIME 和 TIMESTAMP 返回相同的格式,它們的工作方式很不同。在 INSERT 或 UPDATE 查詢中,TIMESTAMP 自動(dòng)把自身設(shè)置為當(dāng)前的日期和時(shí)間。TIMESTAMP 也接受不同的格式,比如 YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD 或 YYMMDD。

SQL Server 數(shù)據(jù)類型

Character 字符串:

數(shù)據(jù)類型

描述

存儲

char(n)

固定長度的字符串。最多 8,000 個(gè)字符。

n

varchar(n)

可變長度的字符串。最多 8,000 個(gè)字符。

 

varchar(max)

可變長度的字符串。最多 1,073,741,824 個(gè)字符。

 

text

可變長度的字符串。最多 2GB 字符數(shù)據(jù)。

 

Unicode 字符串:

數(shù)據(jù)類型

描述

存儲

nchar(n)

固定長度的 Unicode 數(shù)據(jù)。最多 4,000 個(gè)字符。

 

nvarchar(n)

可變長度的 Unicode 數(shù)據(jù)。最多 4,000 個(gè)字符。

 

nvarchar(max)

可變長度的 Unicode 數(shù)據(jù)。最多 536,870,912 個(gè)字符。

 

ntext

可變長度的 Unicode 數(shù)據(jù)。最多 2GB 字符數(shù)據(jù)。

 

Binary 類型:

數(shù)據(jù)類型

描述

存儲

bit

允許 0、1 或 NULL

 

binary(n)

固定長度的二進(jìn)制數(shù)據(jù)。最多 8,000 字節(jié)。

 

varbinary(n)

可變長度的二進(jìn)制數(shù)據(jù)。最多 8,000 字節(jié)。

 

varbinary(max)

可變長度的二進(jìn)制數(shù)據(jù)。最多 2GB 字節(jié)。

 

image

可變長度的二進(jìn)制數(shù)據(jù)。最多 2GB。

 

Number 類型:

數(shù)據(jù)類型

描述

存儲

tinyint

允許從 0 到 255 的所有數(shù)字。

1 字節(jié)

smallint

允許從 -32,768 到 32,767 的所有數(shù)字。

2 字節(jié)

int

允許從 -2,147,483,648 到 2,147,483,647 的所有數(shù)字。

4 字節(jié)

bigint

允許介于 -9,223,372,036,854,775,808 和 9,223,372,036,854,775,807 之間的所有數(shù)字。

8 字節(jié)

decimal(p,s)

固定精度和比例的數(shù)字。允許從 -10^38 +1 到 10^38 -1 之間的數(shù)字。

p 參數(shù)指示可以存儲的最大位數(shù)(小數(shù)點(diǎn)左側(cè)和右側(cè))。p 必須是 1 到 38 之間的值。默認(rèn)是 18。

s 參數(shù)指示小數(shù)點(diǎn)右側(cè)存儲的最大位數(shù)。s 必須是 0 到 p 之間的值。默認(rèn)是 0。

5-17 字節(jié)

numeric(p,s)

固定精度和比例的數(shù)字。允許從 -10^38 +1 到 10^38 -1 之間的數(shù)字。

p 參數(shù)指示可以存儲的最大位數(shù)(小數(shù)點(diǎn)左側(cè)和右側(cè))。p 必須是 1 到 38 之間的值。默認(rèn)是 18。

s 參數(shù)指示小數(shù)點(diǎn)右側(cè)存儲的最大位數(shù)。s 必須是 0 到 p 之間的值。默認(rèn)是 0。

5-17 字節(jié)

smallmoney

介于 -214,748.3648 和 214,748.3647 之間的貨幣數(shù)據(jù)。

4 字節(jié)

money

介于 -922,337,203,685,477.5808 和 922,337,203,685,477.5807 之間的貨幣數(shù)據(jù)。

8 字節(jié)

float(n)

從 -1.79E + 308 到 1.79E + 308 的浮動(dòng)精度數(shù)字?jǐn)?shù)據(jù)。 參數(shù) n 指示該字段保存 4 字節(jié)還是 8 字節(jié)。float(24) 保存 4 字節(jié),而 float(53) 保存 8 字節(jié)。n 的默認(rèn)值是 53。

4 或 8 字節(jié)

real

從 -3.40E + 38 到 3.40E + 38 的浮動(dòng)精度數(shù)字?jǐn)?shù)據(jù)。

4 字節(jié)

Date 類型:

數(shù)據(jù)類型

描述

存儲

datetime

從 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度為 3.33 毫秒。

8 bytes

datetime2

從 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度為 100 納秒。

6-8 bytes

smalldatetime

從 1900 年 1 月 1 日 到 2079 年 6 月 6 日,精度為 1 分鐘。

4 bytes

date

僅存儲日期。從 0001 年 1 月 1 日 到 9999 年 12 月 31 日。

3 bytes

time

僅存儲時(shí)間。精度為 100 納秒。

3-5 bytes

datetimeoffset

與 datetime2 相同,外加時(shí)區(qū)偏移。

8-10 bytes

timestamp

存儲唯一的數(shù)字,每當(dāng)創(chuàng)建或修改某行時(shí),該數(shù)字會(huì)更新。timestamp 基于內(nèi)部時(shí)鐘,不對應(yīng)真實(shí)時(shí)間。每個(gè)表只能有一個(gè) timestamp 變量。

 

其他數(shù)據(jù)類型:

數(shù)據(jù)類型

描述

sql_variant

存儲最多 8,000 字節(jié)不同數(shù)據(jù)類型的數(shù)據(jù),除了 text、ntext 以及 timestamp。

uniqueidentifier

存儲全局標(biāo)識符 (GUID)。

xml

存儲 XML 格式化數(shù)據(jù)。最多 2GB。

cursor

存儲對用于數(shù)據(jù)庫操作的指針的引用。

table

存儲結(jié)果集,供稍后處理。

 

關(guān)于SQL連接、數(shù)據(jù)的類

參見 http://baike.baidu.com/view/159519.htm?fr=aladdin

DataSet

DataSet是ADO.NET的中心概念??梢园袲ataSet當(dāng)成內(nèi)存中的數(shù)據(jù)庫,DataSet是不依賴于數(shù)據(jù)庫的獨(dú)立數(shù)據(jù)集合。所謂獨(dú)立,就是說,即使斷開數(shù)據(jù)鏈路,或者關(guān)閉數(shù)據(jù)庫,DataSet依然是可用的,DataSet在內(nèi)部是用XML來描述數(shù)據(jù)的,由于XML是一種與平臺無關(guān)、與語言無關(guān)的數(shù)據(jù)描述語言,而且可以描述復(fù)雜關(guān)系的數(shù)據(jù),比如父子關(guān)系的數(shù)據(jù),所以DataSet實(shí)際上可以容納具有復(fù)雜關(guān)系的數(shù)據(jù),而且不再依賴于數(shù)據(jù)庫鏈路。

在實(shí)際應(yīng)用中,DataSet使用方法一般有三種:

(1) 把數(shù)據(jù)庫中的數(shù)據(jù)通過DataAdapter對象填充DataSet。

(2) 通過DataAdapter對象操作DataSet實(shí)現(xiàn)更新數(shù)據(jù)庫。

(3) 把XML數(shù)據(jù)流或文本加載到DataSet。

DataAdapter

DataSet對象表示數(shù)據(jù)源中數(shù)據(jù)的本地副本,它是Microsoft NET Framework的一個(gè)主要?jiǎng)?chuàng)新。DataSet對象本身可用來引用數(shù)據(jù)源,然而為了擔(dān)當(dāng)真正的數(shù)據(jù)管理工具,DataSet必須能夠與數(shù)據(jù)源交互。為了實(shí)現(xiàn)該功能,.NET提供了DataAdapter類。

DataAdapter表示一組 SQL 命令和一個(gè)數(shù)據(jù)庫連接,它們用于填充 DataSet和更新數(shù)據(jù)源。

操作

使用帶SQL Server .NET數(shù)據(jù)提供程序的DataSet的步驟如下:

(1)創(chuàng)建SqlConnection對象,連接到SQL Server數(shù)據(jù)庫。

(2)創(chuàng)建SqlDataAdapter對象。該對象包含能夠指向4個(gè)SqlCommand對象的屬性,這些對象指定SQL語句在數(shù)據(jù)庫中進(jìn)行SELECT、INSERT、DELETE和UPDATE等數(shù)據(jù)操作。

(3)創(chuàng)建包含一個(gè)或多個(gè)表的DataSet對象。

(4)使用SqlDataAdapter對象,通過調(diào)用Fill方法來填充DataSet表。SqlDataAdapter隱式執(zhí)行包含SELECT語句的SqlCommand對象。

(5)修改DataSet中的數(shù)據(jù)。可以通過編程方式來執(zhí)行修改,或者將DataSet綁定到用戶界面控件(例如DataGrid),然后在控件中更改數(shù)據(jù)。

(6)在準(zhǔn)備將數(shù)據(jù)更改返回?cái)?shù)據(jù)庫時(shí),可以使用SqlDataAdapter并調(diào)用Update方法。SqlDataAdapter對象隱式使用其SqlCommand對象對數(shù)據(jù)庫執(zhí)行INSERT、DELETE和UPDATE語句。

操作代碼

SqlConnection sqlCon = new SqlConnection(ConnectionStr);

 

string readCmdStr = "SELECT " + columnName + " FROM " + tableName;

SqlDataAdapter Adapter = new SqlDataAdapter(readCmdStr, sqlCon);

 

DataSet BooksDataSet = new DataSet();

Adapter.Fill(BooksDataSet);

 

sheet.DataSource = BooksDataSet.Tables[0];

sheet.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;

 

sheet.Columns[0].Visible = false;

sheet.Columns[1].HeaderText = "書名";

sheet.Columns[2].HeaderText = "作者";

sheet.Columns[3].HeaderText = "編號";

sheet.Columns[4].HeaderText = "類型";

sheet.Columns[5].HeaderText = "實(shí)際位置";

 

sqlCon.Close();

 

DataReader

DataReader對象只允許以只讀、順向的方式查看其中所存儲的數(shù)據(jù),提供一個(gè)非常有效率的數(shù)據(jù)查看模式,同時(shí)DataReader對象還是一種非常節(jié)省資源的數(shù)據(jù)對象。

DataReader對象可通過Command對象的ExecuteReader方法從數(shù)據(jù)源中檢索數(shù)據(jù)來創(chuàng)建。

 

示例(百度百科)

//連接數(shù)據(jù)庫

SqlConnection conn = new SqlConnection();

conn.ConnectionString = "Data Source=(local);Integrated Security=SSPI;Initial Catalog=db_showHouse";

//打開連接

conn.Open();

SqlCommand cmd = new SqlCommand("select User_names from tb_User", conn);

SqlDataReader drNew = cmd.ExecuteReader();

if (drNew.HasRows)

{

while (drNew.Read())

{

MessageBox.Show(drNew[0].ToString());

}

}

drNew.Close();                               

 

我的代碼:

SqlConnection sqlCon = new SqlConnection(ConnectionStr);

 

string checkCmdStr = "SELECT * FROM " + tableName;

SqlCommand checkCmd = new SqlCommand(checkCmdStr,sqlCon);

SqlDataReader reader = checkCmd.ExecuteReader();

bool isLoginSucceeded = false;

while (reader.Read())

{

    if (Id == Convert .ToString( reader.GetValue(0) )&& Password == Convert.ToString( reader.GetValue(1)))

    {

        isLoginSucceeded = true;

        break;

    }

}

reader.Close();

sqlCon.Close();

 

if (isLoginSucceeded)

{

    MessageBox.Show("登錄成功");

    return true;

}

else

{

    MessageBox.Show("登錄失敗,請檢查用戶名或密碼");

    return false;

}

 

SqlCommand

http://baike.baidu.com/view/3574729.htm?fr=aladdin

 

SqlCommand cmd = new SqlCommand("insert into mynews value ('插入一條新數(shù)據(jù)')", con);  

  Command對象的構(gòu)造函數(shù)的參數(shù)有兩個(gè),一個(gè)是需要執(zhí)行的SQL語句,另一個(gè)是數(shù)據(jù)庫連接對象。創(chuàng)建Command對象后,就可以執(zhí)行SQL命令,執(zhí)行后完成并關(guān)閉數(shù)據(jù)連接,示例代碼如下所示。    

cmd.ExecuteNonQuery(); //執(zhí)行SQL命令  

con.Close(); //關(guān)閉連接

 

我的代碼:

SqlConnection sqlCon = new SqlConnection(ConnectionStr);

 

//只有在SQL語句, ‘’前加上大寫 N,才能使?jié)h字正確添加。表示Unicode形式。數(shù)字,英文可以不加。

string insertStr = "INSERT INTO Books (bookName, bookAuthor, bookNumber, bookType, bookLocation) VALUES (N'" + bookName + "',N'" + bookAuthor + "',N'" + bookNumber + "',N'" + bookType + "',N'" + bookLocation + "')";

SqlCommand insertCmd = new SqlCommand(insertStr, sqlCon);

int LineInfluence = insertCmd.ExecuteNonQuery(); //執(zhí)行并返回影響行數(shù)

if (LineInfluence == 1)

{

    MessageBox.Show("添加成功");

    SQLSelect(sheet);

}

else

{

    MessageBox.Show("添加失敗");

}

 

SqlCommand和SqlDataAdapter的區(qū)別

SqlCommand對應(yīng)DateReader

SqlDataAdapter對應(yīng)DataSet

SqlCommand的執(zhí)行效率比較高,但不靈活,功能也有限

SqlDataAdapter的效率要低點(diǎn),它是連接的,可隨時(shí)更新數(shù)據(jù),功能強(qiáng)大。

很多編程用其中一種就可以了。

SqlCommand是C#中與Sql數(shù)據(jù)庫打交道的對象,幾乎所有的Sql數(shù)據(jù)庫操作都需要使用該對象來實(shí)現(xiàn),但其功能有限,只是簡單的實(shí)現(xiàn)了與Sql數(shù)據(jù)庫的接口而已;

SqlDataAdapter是一個(gè)功能強(qiáng)大的SqL數(shù)據(jù)適配器,也用于操作Sql數(shù)據(jù)庫,但它的操作都要通過SqlCommand來實(shí)現(xiàn)(有一個(gè)屬性對象的類型就是SqlCommand),也就是說,可以把SqlDataAdapter看作是一個(gè)把一些特殊功能封裝了、增強(qiáng)了的SqlCommand!

adapter是和dataset打交道的,command不能直接與dataset打交道,要通過adapter. adapter的定義是基于command的,當(dāng)然也可以之間在定義adapter的時(shí)候?qū)懭雜ql語句和connection對象 如<BR>dim ada as new sqlclient.sqladapter(select * from stu,conn1)<BR><BR>也可以這么寫 dim com1 as new sqlclient.sqlcommand(select * from stu,conn1)<BR>

 dim ada as new sqlclient.sqladapter(com1)<BR>

想要把數(shù)據(jù)顯示出來就不得不用到adapter來給dataset傳值,而command不能直接傳值給dataset 可以這樣理解: DataSet用來裝表的集合,里面可以裝從SqlDataAdapter中返回的一系列的DataTable 如果返回的有多張表,那么我們可以通過索引的方式來找到想要的表:DataTable dt = ds.Tables[0];或DataTable dt = ds.Tables["products"]; DataSet可以直接做為數(shù)據(jù)控件的數(shù)據(jù)源,也可以從中獲取表或表的視圖來做為數(shù)據(jù)源.如: this.DataList1.DataSource = dt; this.DataList2.DataSource = dt.Tables[0]; this.Datalist3.DataSource = dt.Tables[0].DefaultView; 這三句的效果都是一樣的. SqlDataAdapter是針對于SQL數(shù)據(jù)庫的一個(gè)數(shù)據(jù)適配器,對應(yīng)的還有OledbDataAdapter等等,它起著牽線搭橋的作用,我們可以用它來創(chuàng)建或是執(zhí)行一個(gè)數(shù)據(jù)庫操作命令,并將返回的結(jié)果集填充到DataSet中去.

 

WinForm控件縮寫

控件名稱

縮寫

Buttom按鈕

Btn

CheckBox復(fù)選框

Chk

ColumnHeader視圖列表頭

Col

ComboBox組合框

Cbo

ContextMenu快捷菜單

Ctm

DataGrid數(shù)據(jù)網(wǎng)格控件

Dg

DataGridView數(shù)據(jù)網(wǎng)格視圖控件

Dgv

DteTimePicker時(shí)間輸入框

Dtp

DomainUpDown數(shù)值框

Dud

Form窗體

Frm

GroupBox 組合框

Grp

HscrollBar水平滾動(dòng)條

Hsb

ImageList圖標(biāo)列表

Img

Label文本標(biāo)簽

Lbl

LinkLabel列表框

Lbl

ListBox列表框

Lst

ListView視圖列表

Lvw

Menu菜單

Menu

MenuItem菜單項(xiàng)

Menu

NumericUpDown數(shù)值框

Nud

Panel面板

Pnl

PictureBox圖片框

Pic

ProgressBar進(jìn)度條

Prg

RadioButton單選框按鈕

Rdo

Spliter拆分條

Spl

StatusBar狀態(tài)欄

Stu

StatusBarPanel狀態(tài)欄區(qū)域

Stupnl

StatusStrip狀態(tài)欄

Stu

TabControl分頁控件

Tab

TabPage分頁標(biāo)簽頁面

Page

TextBox文本框

Txt

Timer定時(shí)器

Tmr

ToolBar工具條

Tbr

ToolStrip工具欄

Tsp

TooStripButton工具欄按鈕

tspBtn

ToolStripComboBox工具欄下拉組合框

tspCbo

ToolStripDropDownMenu工具欄菜單項(xiàng)目

tspMenu

ToolStripLable工具欄靜態(tài)文本

tspLbl

ToolStripProgressBar工具欄進(jìn)度條

tspPrg

ToolStripTextBox工具欄文本框

Tsptxt

TreeView樹狀視圖列表

Tvw

VscrollBar垂直滾動(dòng)條

Vsb

WebBrowSer瀏覽器控件

Wb

 

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多