ADO.NET基礎_ADO.NET基本概念
作者:田超凡
版權所有,轉載請註明原作者,仿冒侵權必究法律責任
1.如何使用T-SQL語句進行增刪改查操作?聚合函數有哪些?分別有什麼作用?
T-SQL插入數據:
一次插入一行:
INSERT INTO table_name(column1_name,column2_name..)
VALUES (value1,value2...)
一次插入多行:
已存在表中數據插入已存在表中:
INSERT INTO table_name(column1_name,column2_name..)
SELECT (column1_name,column2_name..)
FROM table_name
已存在表中的數據插入到新表中(自動創建新表):
SELECT column1_name,column2_name..
INTO table_name
FROM table_name
聯合插入多行數據(手動輸入)
INSERT INTO table_name(column1_name,column2_name..)
SELECT value1,value2 UNION
SELECT...最後一行結尾不加UNION
T-SQL刪除數據
DELETE FROM table_name
WHERE..
刪除表中所有數據
DELETE FROM table_name=TRUNCATE TABLE table_names
T-SQL修改數據
UPDATE table_name SET column1_name=value1,column2_name=value2
WHERE...
T-SQL查詢數據
SELECT * FROM table_name
SELECT column1_name,column2_name...
FROM table_name
WHERE...
聚合函數:基於某個列進行計算,返回計算後的值
SUM()求和
AVG()平均數
MAX()最大值
MIN()最小值
COUNT()計數
2.C#語言中的基礎語法是什麼?
命名空間:namespace
類:class
程序的入口:Main()方法
變量:一個變量用來存儲一個數據,在內存中劃出一塊存儲空間,變量的值可以隨着程序運行過程根據需要進行修改
常量:const常量是指程序運行過程中保持不變的值,常量必須聲明並賦值後才能使用,不能強制修改常量的值
3.C#語言中的邏輯控制語句有哪些?
選擇結構:
if_else/if-else if/多重if/嵌套if/switch-case
循環結構:
while/do-while/for/foreach
跳轉語句:
break/continue/return
4.類和對象的關係是什麼?什麼是封裝?訪問修飾符有哪些,分別有什麼作用?
類是對象的抽象,對象是類的實例。new一個對象的過程可以理解爲類的實例化的過程。對象可以封裝類的屬性和方法,實現信息隱藏。
封裝就是將屬性和方法保存在一起,可以有選擇性的隱藏或顯示類的屬性和方法,提高程序的安全性。
訪問修飾符:
public 可以在其他任何類中使用
private 只能在當前類中使用
protected 只能在同一個包中,繼承鏈中使用
internal 只能在同一個項目中使用
5.方法的返回值有哪幾種情況?方法的參數有哪幾種情況?字段、屬性、方法的區別是什麼?什麼是值傳遞和引用傳遞,二者有什麼區別?
方法的返回值:可以有返回值(必須在方法主體中使用return返回值),也可以沒有返回值(方法要聲明爲void)
方法的參數:無參方法和帶參方法,如果是帶參方法,則實參的數量、類型、順序都要和形參保持一致,
字段:描述類具有的特徵
屬性:封裝字段,保證信息的安全性
方法:描述類具有的功能
值傳遞:參數不使用ref修飾,調用方法後不會保留參數的更新值
引用傳遞:參數使用ref修飾,會保留參數的更新值
5.數據庫表的基本結構是什麼?
字段、數據類型、約束、主外鍵、默認值、標識列
6.C#語言中String類常用處理字符串的方法有哪些?""和string.Empty的區別是什麼?
比較字符串的值是否相等:Equals()
獲取字符串長度:Length
比較字符串:Compare(str1,str2)
獲取指定字符串在目標字符串中的索引:
indexOf()首次出現的索引
lastIndexOf()最後一次出現的索引
提取字符串:Substring(int startIndex,int length)
分割字符串:Split()
連接字符串:Join()
消除兩端空格:Trim()
轉換爲大寫/小寫:ToUpper()/ToLower()
""會爲字符串對象分配一個長度爲0的存儲空間
string.Empty表示空字符串,不會爲字符串分配存儲空間
7.如何使用T-SQL語句創建數據庫、表、進行表結構操作?(DML數據操作語言)
T-SQL創建數據庫:
CREATE DATABASE 數據庫名
ON PRIMARY
(
NAME='',
FILENAME='',
SIZE=,
MAXSIZE=,
FILEGROWTH=
)
LOG ON
(
NAME='',
FILENAME=''
SIZE=,
MAXSIZE=,
FILEGROWTH=
)
GO
T-SQL創建表
CREATE TABLE 表名
(
列名 數據類型 列的特徵(包括是否爲空IS NULL/是否有默認值DEFAULT/是否是標識列IDENTITY/是否是主鍵PRIMARY KEY)
)
GO
T-SQL操作表結構:
添加約束
ALTER TABLE 表名
ADD CONSTRAINT 約束名 約束類型 約束內容
插入列:
ALTER TABLE 表名
ADD 列名 數據類型
修改列的數據類型:
ALTER TABLE 表名
ALTER COLUMN 列名 數據類型
刪除列:
ALTER TABLE 表名
DROP COLUMN 列名
8.什麼是主鍵和外鍵?數據表之間的主外鍵關係怎麼建立?
對於已建立主外鍵關係的表能夠起到什麼效果?
主鍵用來唯一標識表中每一行,強制實體完整性,一個表只能有一個主鍵,當需要將兩列或兩列以上的列設置爲一個主鍵時,則該主鍵也叫複合主鍵。
外鍵用來建立引用關係,確保從表中的某個數據項在主表中必須存在,強制引用完整性,一個表可以有多個外鍵
建立主外鍵關係的方式:
①在設計器中添加關係:選擇主鍵表、主鍵列以及對應的外鍵表、外鍵列
②使用ALTER TABLE 語句
ALTER TABLE 表名
ADD FOREIGN KEY (外鍵)
REFERENCES 主表(主鍵)
對於已建立主外鍵關係的表而言:在操作表中數據時會有限制:
必須先插入主表中的數據,再插入從表中的數據
修改主表中的數據後也要同時修改從表中的數據,不能孤立從表中的記錄
刪除主表前先刪除主表
總的來說,在建立了主外鍵關係的表中,外鍵表中外鍵列中的數據必須存在於已經與它建立了主外鍵關係的主表中的主鍵列中
※學習本章知識,你需要掌握的知識點有:
1.什麼是ADO.NET?ADO.NET的兩大核心組件是什麼?什麼是斷開連接機制?
2.什麼是.NET FrameWork數據提供程序?什麼是DataSet數據集?二者分別有什麼作用?
3.不同數據庫的數據提供程序分別位於.NET框架中的哪些命名空間中?.NET FrameWork數據提供程序四大核心對象是什麼?分別有什麼作用?他們在SQL Server數據提供程序中的類名是什麼?在SQL Server數據提供程序中,Connection和Command對象的屬性和方法有哪些?
4.什麼是編譯錯誤?什麼是運行錯誤?什麼是異常?
5.處理異常的關鍵字是哪些?分別有什麼作用,捕獲異常流程是怎樣的?
6.使用Connection對象和Command對象的語句流程和基本語法順序是怎樣的?連接數據庫的連接字符串是什麼?連接字符串的每一部分分別有什麼作用?
7.使用Connection對象建立和數據庫的連接以及使用Command對象對數據庫中數據進行操作時的注意事項有哪些?
※學習完本章之後,可以對照下面我的自我總結看看有沒有掌握本章的知識點:
1.
ADO.NET位於Microsoft .NET Framework(.NET框架)中,是.NET框架中的框架類庫FCL中的重要組成部分之一,ADO.NET的主要作用是訪問和操作數據庫,使數據庫和應用程序進行交互,從而可以通過應用程序更加靈活方便地對數據庫中的數據進行處理,提高數據庫的重用性,同時也給用戶帶來了很好的用戶體驗,使用戶在操作數據庫時更方便、更快捷,並且由於和應用程序結合在了一起,通過應用程序的組件渲染以及其他的特效使得ADO.NET可以在處理數據庫中的數據同時藉助應用程序這一強有力的支持得到了廣大互聯網乃至其他各個行業用戶的一致好評。
ADO.NET是.NET Framework中一組允許應用程序和數據庫實現交互的類。.NET Framework中的兩大核心組件是:.NET Framework數據提供程序和DataSet數據集。使用ADO .NET在操作數據庫中的數據主要有兩種處理機制:連接機制和斷開連接機制。連接機制體現在可以通過C#編程語言建立和數據庫的連接,然後對數據庫中的數據進行高效的訪問和操作,從而不需要每次都手動進入數據庫管理系統中通過查詢窗口對數據庫中的數據進行操作,提高了工作效率。斷開連接機制主要體現在.NET Framework中的核心對象DataAdapter數據適配器和ADO .NET的另一大組件DataSet數據集,使用DataAdapter可以建立數據庫和數據集之間的關係,通過Fill()方法將數據庫中的數據填充到數據集中,如果應用程序更新了數據集中的數據,則可以再通過Update()方法將數據集中的數據同步提交到數據庫。
2.
.NET Framework數據提供程序通過核心對象可以對數據庫中的數據進行快速的增刪改查操作,主要適用於操作數據。
數據集是獨立於任何數據庫存在的,可以斷開和數據庫的連接並操作數據。從而不需要每次都要打開和數據庫的連接。數據集其實就是將數據庫中的數據臨時存儲到本地,在需要對數據庫中的數據進行操作時,直接對數據集中的數據進行操作,然後通過數據適配器提供的方法將數據集中的數據和數據庫中的數據同步。
3.
不同數據提供程序的命名空間:
SQL Server數據提供程序 System.Data.SqlClient;
OLEDB 數據提供程序 System.Data.OleDb;
ODBC數據提供程序 System.Data.Odbc;
Oracle 數據提供程序 System.Data.OracleClient;
EntityClient 實體數據模型 System.Data.EntityClient;
.NET Framework數據提供程序的四大核心對象是:
Connection建立和數據庫的連接
Command執行命令
DataReader 讀取只進且只讀的數據流
DataAdapter 數據適配器,建立數據庫和數據集之間的關係
四大核心對象在SQL Server數據提供程序中的類名分別是
SqlConnection/SqlCommand/SqlDataReader/SqlDataAdapter
SqlConnection建立和數據庫的連接
屬性:
ConnectionString 連接字符串
方法:
void Open()打開連接
void Close()關閉連接
SqlCommand執行命令
屬性:
Connection已經定義好的connection對象
CommandText 需要執行的T-SQL語句
方法:
int ExecuteNonQuery()對數據進行不返回值的操作(比如增、刪、改),返回受影響的行數
SqlDataReader ExecuteReader()或
SqlDataReader ExecuteReader(CommandBehavior behavior)返回DataReader對象,需要先引入System.Data命名空間
Object ExecuteScalar()返回查詢結果中的第一個值,返回值Object引用類型,實際使用使用過程中一般需要將結果進行拆箱(強制轉換)爲其他基本數據類型。
4.
編譯錯誤指的是程序在運行之前(編譯時)發生的錯誤,運行錯誤指的是通過編譯後在運行時發生的錯誤。異常指的是運行錯誤(運行時發生的錯誤)。異常不能絕對避免,但是可以預知。因此在編寫代碼時要將程序運行過程中可能發生的錯誤進行預測,然後進行編碼處理,提高程序的健壯性。
5.處理異常的關鍵字:
try在運行時首先進入try塊執行try塊中的語句,也就是說try塊中的語句應該放入一般情況下不會發生異常或者剛開始進入代碼塊時需要預先執行的語句。
Catch進行異常處理,在執行try塊中的語句時如果發生異常則直接中斷try塊中語句的執行,跳進到catch塊中執行catch塊中的語句。因此catch塊中應該放入當發生程序發生異常時的處理語句。
finally塊中一般放入程序無論是否發生異常都需要在最後執行的語句。
捕獲異常流程:
以下幾種情況的執行流程是針對於一個完整的捕獲異常語句而言的
try
{
}
catch(Exception e)異常類
{
}
finally
{
}
- 程序運行過程中沒有發生異常
try-finally
執行完try塊中的語句後再執行finally塊中的語句
②程序運行過程中發生異常:
- 在try塊中發生異常:
在發生異常的位置中斷try塊中的語句的執行,直接跳進到catch塊中執行catch塊中的異常處理語句,最後再執行finally塊中的語句
(2)在catch塊中發生異常
直接執行catch塊中的異常處理語句。
(3)在finally塊中發生異常
運行時直接報錯,一般不做異常處理。
6.使用Connection對象建立數據庫連接和Command對象執行命令的基本流程順序是:
①在命名空間聲明之前引入SQL Server數據提供程序的命名空間
using System.Data.SqlClient
②定義連接字符串
string sqlConn=”Data Source=.;Initial Catalog=database_name;User ID=sa; Pwd=123456”;
③定義一個SqlConnection對象,參數是連接字符串
SqlConnection connection=new SqlConnection(strConn);
④打開連接
connection.Open();
⑤定義需要執行的T-SQL語句,存儲在一個字符串變量中
string sql=”T-SQL語句”;
⑥定義SqlCommand對象,將需要執行的Sql語句字符串和已經定義好的SqlConnection對象作爲參數傳入。
SqlCommand command=new SqlCommand(sql,connection);
⑦根據不同需求調用command對象的不同方法執行,注意:
需要考慮類型轉換的問題,有些方法的返回值需要進行類型轉換。
⑧關閉連接
connection.Close();
建議插入異常處理代碼完善整個執行流程,從而提高程序的健壯性。
連接字符串的組成:
Data Source=需要連接的數據庫所在的服務器的名稱,一般爲.或local或127.0.0.1
Initial Catalog=需要連接的數據庫的名稱
User ID=數據庫的用戶名
Pwd=用戶名對應的密碼(如密碼爲空,則可以省略該項)
完整的連接字符串例子:
“Data Source=.;Initial Catalog=MySchool;User ID=sa;Pwd=123456”
7.
(1)需要訪問和操作數據庫,一定要先引入相應數據提供程序的命名空間,SQL Server命名空間是System.Data.SqlClient;
(2)。定義連接字符串,注意連接字符串的各個組成部分,不要寫錯單詞和標點符號,也不要寫錯需要連接的對象的名稱(如數據庫名),還要確保定義的用戶名和密碼是正確的,能夠正常訪問和操作數據庫
(3)一定要注意SqlConnection對象在定義時必須將連接字符串作爲參數傳入。SqlCommand對象在定義時必須將需要執行的SQL語句字符串和已經定義好的SqlConnection對象作爲參數傳入,並且第一個參數是需要執行的SQL語句字符串,第二個參數是已經定義好的SqlConnection對象
(4)在定義SQL語句時,要注意當需要傳入字符串型數據和數據庫中的數據進行比對時,字符串型數據要加單引號,列名和表名一般建議使用[]中括號括起來,方便排錯,保持代碼的清晰和規範,提高代碼可讀性。查詢語句要符合SQL語言規範
(5)在使用Command對象執行命令之前一定要打開數據庫的連接,在執行完對數據的操作流程之後,必須關閉數據庫的連接,提高性能。
(6)數據的類型要準確,必要時進行數據類型轉換。
(7)對象在使用之前必須實例化,不能爲空對象。