從C#中鏈接到SQL Server數據庫,再經過C#編程實現SQL數據庫的增刪改查。sql
ado.net提供了豐富的數據庫操做,這些操做能夠分爲三個步驟:數據庫
1.打開鏈接通道:編程
#region 打開鏈接通道 /// <summary> ///1.鏈接通道的鏈接字符串 ///2.鏈接通道對象 ///3.打開通道 ///4.關閉通道 /// </summary> public static void OpenConnection() { //1.鏈接通道的鏈接字符串 string conStr = "server=192.168.1.100;database=JNU;uid=sa;pwd=123456aa;";//指定哪臺服務器 //2.鏈接通道對象 SqlConnection conn = new SqlConnection(conStr); //3.打開通道 conn.Open(); //4.關閉通道 conn.Close(); Console.WriteLine("鏈接對象新建操做成功"); } #endregion
2.增長記錄數組
#region 增長記錄 /// <summary> /// 增長記錄 /// </summary> public static void AddRecord() { int res = -1;//準備比接受新增受影響的行數 string conStr = "server=192.168.1.100;database=JNU;uid=sa;pwd=123456aa;"; //1.新建鏈接通道 SqlConnection conn = new SqlConnection(); //2.手動指定鏈接字符串 conn.ConnectionString = conStr; //3.準備新增的sql命令 string sqlStr = "insert into TEST(NAME) values('SHUAI')"; //4.新建命令對象,而且告訴他走那條路(conn),作什麼事('sqlStr')單引號必定要加 SqlCommand cmd = new SqlCommand(sqlStr, conn); //5.打開鏈接通道 conn.Open(); //6.調用方法去數據庫執行sql語句 res = cmd.ExecuteNonQuery();//此方法負責增刪改,返回受影響的行數(int),開始進入數據庫進行操做 //7.關閉鏈接通道 conn.Close(); if (res > 0) { Console.WriteLine("新增成功"); } else { Console.WriteLine("新增失敗"); } } #endregion
3.刪除記錄和更改記錄(軟刪除)與新增記錄的代碼相同,只有SQL語句不同,其SQL語句爲服務器
//3.準備刪除的sql命令 string sqlStr = "delete from TEST where ID=8"; //3.準備修改的sql命令 string sqlStr = "update TEST set NAME='qiang' where ID=7";
4.查詢單個值時,使用的是命令對象SqlCommand進行查詢ui
#region 查詢單個值 /// <summary> /// 查詢單個值 /// </summary> public static void QuerySingle() { SqlConnection conn = new SqlConnection(conStr); // string sqlStr = "select count(*) from TEST"; string sqlStr = "select * from TEST"; SqlCommand cmd = new SqlCommand(sqlStr, conn); conn.Open(); //調用此方法,得到查詢語句在數據庫執行後獲得的結果集的第一個單元格的值,返回類型爲object object obj = cmd.ExecuteScalar(); conn.Close(); Console.WriteLine(obj.ToString()); } #endregion
5.讀取器查詢多行數據,逐行讀取,經過下標訪問數據,還能夠經過列名和get方法訪問數據spa
#region 讀取器查詢多行數據,逐行讀取,經過get方法訪問數據 /// <summary> /// 查詢多行數據——DataReader,逐行讀取 /// </summary> public static void QueryListByGet() { SqlConnection conn = new SqlConnection(conStr); string sqlStr = "select * from TEST"; SqlCommand cmd = new SqlCommand(sqlStr, conn); conn.Open(); //調用此方法,得到一個讀取器對象,SqlDataReader不能實例化 SqlDataReader dr = cmd.ExecuteReader(); //if (dr.HasRows)//判斷有無數據 //{ // Console.WriteLine("有數據"); //} //else //{ // Console.WriteLine("無數據"); //} if (dr.HasRows) { //每調用一次read,讀取一行數據 while (dr.Read())//read方法,若是讀到下一行數據,則返回true,並且dr自己就等於哪一行數據 { //讀取第一列的數據 //Console.WriteLine(dr[0].ToString());//經過下標訪問數據,數組下標從0開始 //Console.WriteLine(dr["ID"].ToString());//經過列名訪問數據,以結果集的列名做爲標誌,能夠避免as爲別名後的查詢錯誤 Console.WriteLine(dr.GetString(1));//經過get訪問數據,數組下標從0開始,只能用於char類型的變量,不能獲取int類型的數據 Console.WriteLine(dr.GetInt32(0));//只能獲取int類型 Console.WriteLine(dr.GetValue(0).ToString());//以object的方式拿出數據 dr.GetOrdinal("ID");//傳入列名,得到列的下標 } } else Console.WriteLine("無數據"); //先關閉讀取器,再關閉鏈接通道 dr.Close(); conn.Close(); } #endregion
6.適配器查詢多行數據.net
#region 適配器查詢多行數據 /// <summary> /// 使用適配器讀取數據,不須要代碼手動打開、關閉鏈接通道 /// </summary> public static void QueryListByAdapter() { SqlConnection conn = new SqlConnection(conStr); string sqlStr = "select * from TEST"; //建立適配器對象(SqlDataAdapter),告訴他作什麼事(sqlStr),走哪條路(conn) SqlDataAdapter sqlda = new SqlDataAdapter(sqlStr, conn); //建立數據集對象(程序端的臨時數據庫) DataSet ds = new DataSet(); //調用fill方法,添加數據到數據集。(先去數據庫查詢結果集,並把結果集返回賦值給數據集) sqlda.Fill(ds);//開始進入數據庫進行操做 DataTable dt = ds.Tables[0];//得到數據集中的第一張表(數據集能夠存放多張表) for (int i = 0; i < dt.Rows.Count; i++)//循環該表中的每一行,dt.Rows爲獲取該數據表的行集合 { DataRow dr = dt.Rows[i];//dr對象獲取表中的當前行 Console.WriteLine(dr[0].ToString());//經過索引的方式讀某一列的值 Console.WriteLine(dr["ID".ToString()]);//經過列名的方式讀列 } } #endregion
2018.08.12code