ADO.NET笔记
一、ADO.NET (Access Data Object, 數據訪問對象)
.NET操作數據庫的一組類
1. DataSet (數據集)
2. .NET數據提供程序 (Data Provider)
2.1. Connection
2.2. Command
2.3. DataReader
2.4. DataAdapter
二、Connection (連接對象)
1. 創建:
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "連接字符串";
// 或:
SqlConnection conn = new SqlConnection(連接字符串);
2. 打開連接:
conn.Open();
可能產生的異常:
2.1. 連接失敗:地址不對,服務沒開,沒目標數據庫
2.2. xx 登錄失敗:賬號不對、權限不足
2.3. 不支持關鍵字 xxx:連接字符串錯誤
3. 連接字符串:
3.1. 地址、數據庫、賬號、密碼
3.2. Data Source=服務器地址; Initial Catalog=數據庫名; User Id=賬號; Password=密碼
3.3. server=服務器地址; database=數據庫名; uid=賬號; pwd=密碼
4. 連接實例:
string connStr = "server=.;database=MySchool;uid=sa;pwd=sa";
SqlConnection conn = new SqlConnection(connStr);
conn.Open();
conn.Close();
三、Command (命令執行對象)
1. 創建語法:
SqlCommand comm = new SqlCommand();
comm.CommandText = "SQL語句"; // 要執行什么SQL?
comm.Connection = conn; // 在哪執行?
// 或簡寫為:
SqlCommand comm = new SqlCommand(sql, conn);
2. 執行
2.1. ExecuteScalar()
2.2. ExecuteReader()
2.3. ExecuteNonQuery()
3. comm.ExecuteScalar():
3.1. Command開始執行目標的SQL語句,并獲取數據庫返回的結果
3.2. 只獲取結果中的首行首列
3.3. 適用情況:
3.3.1. 聚合函數:count、sum、max、min、avg
3.3.2. 根據條件查詢某一列的值
四、示例:查詢所有學生數量
// 1. 創建連接并打開
string connStr = "server=.;database=MySchool;uid=sa;pwd=sa";
SqlConnection conn = new SqlConnection(connStr);
conn.Open();
// 2. 創建執行對象
string sql = "select count(1) from Student";
SqlCommand comm = new SqlCommand(sql, conn);
// 3. 執行并返回結果
int count = (int)comm.ExecuteScalar();
// 或:
int count = Convert.ToInt32(comm.ExecuteScalar());
// 4. 關閉連接
conn.Close();
五、示例:根據年級編號查詢年級名稱
public string SelectGradeNameById(int gradeId)
{
string name = null;
// SQL語句
string sql = string.Format("SELECT GradeName FROM Grade WHERE GradeId={0}", gradeId);
SqlConnection conn = new SqlConnection(connStr); // 1. 創建連接
SqlCommand comm = new SqlCommand(sql, conn); // 2. 創建執行對象
conn.Open(); // 3. 打開連接
name = comm.ExecuteScalar().ToString(); // 4. 執行并獲取結果
conn.Close(); // 5. 關閉連接
return name;
}
六、示例:根據學生編號查詢學生姓名
public string SelectStudentNameByNo(string studentNo)
{
string name = null;
//SQL語句
string sql = string.Format("SELECT StudentName FROM Student WHERE StudentNo='{0}'", studentNo);
SqlConnection conn = new SqlConnection(connStr); // 1. 創建連接
SqlCommand comm = new SqlCommand(sql, conn); // 2. 創建執行對象
conn.Open(); // 3. 打開連接
name = comm.ExecuteScalar().ToString(); // 4. 執行并獲取結果
conn.Close(); // 5. 關閉連接
return name;
}
七、SQL執行常見錯誤
1. 不支持關鍵 xxx
2. xxx 附近有語法錯誤
SQL語句錯了
3. 列名 xxx 無效
SQL語句錯了
4. Command需要一個已經打開的Connection
連接未打開
八、示例:管理員登錄 (根據賬號和密碼,查詢人數)
public int AdminLogin(string username, string password)
{
int count = -1;
// SQL語句
string sql = " SELECT COUNT(1) FROM Admin WHERE Username='{0}' AND Password='{1}' ";
sql = string.Format(sql, username, password);
SqlConnection conn = new SqlConnection(connStr); // 1. 創建連接
SqlCommand comm = new SqlCommand(sql, conn); // 2. 創建執行對象
conn.Open(); // 3. 打開連接
count = Convert.ToInt32(comm.ExecuteScalar()); // 4. 執行并獲取結果
conn.Close(); // 5. 關閉連接
return count;
}
轉載于:https://www.cnblogs.com/lecj2498/p/8185517.html
總結
- 上一篇: 面试题参考
- 下一篇: asp.net ajax控件工具集 Au