ADO.NET复习总结(4)--访问SqlServer的类
生活随笔
收集整理的這篇文章主要介紹了
ADO.NET复习总结(4)--访问SqlServer的类
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、連接SqlConnection
2、
3、執行命令SqlCommand
4、數據讀取SqlDataReader
?
?注意:
ExecuteNonQuery() :執行非查詢(增刪改)
ExecuteScalar(): 執行查詢,獲取單個值,返回單行單列
ExecuteReader() :執行查詢,獲取多個值,返回多行多列
示例代碼:
1.插入語句測試 ? ? ?ExecuteNonQuery() 方法
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient;namespace ConsoleApplication1 {class Program{static void Main(string[] args){//1.連接字符串string constr = "Data Source=.;Initial Catalog=dbtest;User Id=sa;Password=123;";//2.創建連接對象using(SqlConnection conn=new SqlConnection (constr)){//3.SQL 語句string sql = "insert into test2 values('戰狼') ";//4.創建SQLcommand對象using(SqlCommand cmd=new SqlCommand (sql,con)){//5.打開連接 conn.Open();//6.執行int r = cmd.ExecuteNonQuery();Console.WriteLine("成功的插入了{0}行。", r);}}Console.ReadKey();}} } View Code2.查詢,獲取多個值 ? ?ExecuteReader()方法,返回類型datareader
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient;namespace _02 {class Program{static void Main(string[] args){//1.連接字符串string constr = "Data Source=.;Initial Catalog=dbtest;User Id=sa;Password=123;";//2.創建連接對象using (SqlConnection conn = new SqlConnection(constr)){//3.SQL 語句string sql = "select * from StudentInfo";//4.創建SQLcommand對象using (SqlCommand cmd = new SqlCommand(sql, conn)){//5.打開連接 conn.Open();//6.執行//通過調用ExecuteReader()方法,將給定的sql語句在服務器中執行。//執行完畢后,服務器就已經查詢出了數據。但是數據是保存在數據庫服務器的內存當中。//并沒有返回給應用程序。知識返回給了應用程序一個reader對象,這個對象就是用來獲取數據的對象。using ( SqlDataReader reader = cmd.ExecuteReader()){//接下來就要通過reader對象一條一條獲取數據//1、在獲取數據之前,先判斷一下本次執行查詢之后,是否查詢到了數據if (reader.HasRows)//屬性HasRows判斷是否結果集中有行 {//2.有數據,那么接下來就要一條一條獲取數據‘//每次獲取數據之前,都要先調用reader.Read()方法,向后移動一條數據,如果成功移到了某條數據上,則返回true,否則為FALSEwhile(reader.Read()){//獲取當前reader指向的數據(一行多列)//reader.FieldCount,可以查詢當前查詢語句查詢出列的個數。for (int i = 0; i < reader.FieldCount; i++){Console.Write(reader[i] + " | ");}Console.WriteLine();}}else{Console.WriteLine("沒有任何數據");}}}}Console.ReadKey();}} } View Code using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient;namespace _02 {class Program{static void Main(string[] args){//1.連接字符串string constr = "Data Source=.;Initial Catalog=dbtest;User Id=sa;Password=123;";//2.創建連接對象using (SqlConnection conn = new SqlConnection(constr)){//3.SQL 語句string sql = "select * from StudentInfo";//4.創建SQLcommand對象using (SqlCommand cmd = new SqlCommand(sql, conn)){//5.打開連接 conn.Open();//6.執行//通過調用ExecuteReader()方法,將給定的sql語句在服務器中執行。//執行完畢后,服務器就已經查詢出了數據。但是數據是保存在數據庫服務器的內存當中。//并沒有返回給應用程序。知識返回給了應用程序一個reader對象,這個對象就是用來獲取數據的對象。using ( SqlDataReader reader = cmd.ExecuteReader()){//接下來就要通過reader對象一條一條獲取數據//1、在獲取數據之前,先判斷一下本次執行查詢之后,是否查詢到了數據if (reader.HasRows)//屬性HasRows判斷是否結果集中有行 {//2.有數據,那么接下來就要一條一條獲取數據‘//每次獲取數據之前,都要先調用reader.Read()方法,向后移動一條數據,如果成功移到了某條數據上,則返回true,否則為FALSEwhile(reader.Read()){//獲取當前reader指向的數據(一行多列)//reader.FieldCount,可以查詢當前查詢語句查詢出列的個數。for (int i = 0; i < reader.FieldCount; i++){//但是通過reader【】索引器,可以使用列名獲取列的值// Console.Write(reader[i] + " | "); Console.Write(reader["sid"] );//根據列名稱獲取列的索引//reader.Getordinal();//GetValue()只能通過列索引來獲取列的值Console.Write(reader.GetValue(i) + " | ");}Console.WriteLine();}}else{Console.WriteLine("沒有任何數據");}}}}Console.ReadKey();}} } View Code注意:
當遇到數據庫中的null值的時候,通過Reader.GetValue()或者reader()索引器來獲取列的值,
拿到的是DBNull.Value,不是C#的Null,而DBNull.Value的ToString()方法返回的空字符串,所以最終沒有報錯。
?
//大多數用下面這種方法//通過下面這種方式讀取到的數據直接就是對應的類型,不是object類型,使用起來更方便。reader.Getxxxxx()//使用強類型讀取列中的數據?2、SqlDataReader
?
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient;namespace _02 {class Program{static void Main(string[] args){#region 版本1////1.連接字符串//string constr = "Data Source=.;Initial Catalog=dbtest;User Id=sa;Password=123;";////2.創建連接對象//using (SqlConnection conn = new SqlConnection(constr))//{// //3.SQL 語句// string sql = "select * from StudentInfo";// //4.創建SQLcommand對象// using (SqlCommand cmd = new SqlCommand(sql, conn))// {// //5.打開連接// conn.Open();// //6.執行// //通過調用ExecuteReader()方法,將給定的sql語句在服務器中執行。// //執行完畢后,服務器就已經查詢出了數據。但是數據是保存在數據庫服務器的內存當中。// //并沒有返回給應用程序。知識返回給了應用程序一個reader對象,這個對象就是用來獲取數據的對象。// using (SqlDataReader reader = cmd.ExecuteReader())// {// //接下來就要通過reader對象一條一條獲取數據// //1、在獲取數據之前,先判斷一下本次執行查詢之后,是否查詢到了數據// if (reader.HasRows)//屬性HasRows判斷是否結果集中有行// {// //2.有數據,那么接下來就要一條一條獲取數據‘// //每次獲取數據之前,都要先調用reader.Read()方法,向后移動一條數據,如果成功移到了某條數據上,則返回true,否則為FALSE// while (reader.Read())// {// //獲取當前reader指向的數據(一行多列)// //reader.FieldCount,可以查詢當前查詢語句查詢出列的個數。// for (int i = 0; i < reader.FieldCount; i++)// {// //但是通過reader【】索引器,可以使用列名獲取列的值// // Console.Write(reader[i] + " | ");// Console.Write(reader["sid"]);// //根據列名稱獲取列的索引// //reader.Getordinal();// //GetValue()只能通過列索引來獲取列的值// // Console.Write(reader.GetValue(i) + " | ");// //大多數用下面這種方法// //通過下面這種方式讀取到的數據直接就是對應的類型,不是object類型,使用起來更方便。// // reader.Getxxxxx()//使用強類型讀取列中的數據// }// Console.WriteLine();// }// }// else// {// Console.WriteLine("沒有任何數據");// }// }// }//}#endregion#region 版本2string constr = "Data Source=.;Initial Catalog=dbtest;User Id=sa;Password=123;";using (SqlConnection conn = new SqlConnection(constr)){string sql = "select * from StudentInfo";using (SqlCommand cmd = new SqlCommand(sql, conn)){conn.Open();using (SqlDataReader reader = cmd.ExecuteReader()){if (reader.HasRows){//注意通過reader.GetXxxx()方式來獲取表中的數據,如果數據為null,那么久報異常了,此時需要手動寫代碼來判斷數據是否為nullwhile (reader.Read()){//sId, sName, sGender, sBirthday, sPhone, sEMail, cid//打印每一列的值Console.Write(reader.GetInt32(0) + "\t||\t");Console.Write(reader.GetString(1) + "\t||\t");Console.Write(reader.GetBoolean(2) + "\t||\t");Console.Write(reader.GetDateTime(3) + "\t||\t");Console.Write(reader.IsDBNull(4)?"NULL":reader.GetString(4)+ "\t||\t");//Console.Write(reader.GetString(4) + "\t||\t");Console.Write(reader.GetString(5) + "\t||\t");Console.Write(reader.GetSqlInt32(6) + "\t||\t");}}}}#endregionConsole.ReadKey();}}} } View Code?
轉載于:https://www.cnblogs.com/mhq-martin/p/8087683.html
總結
以上是生活随笔為你收集整理的ADO.NET复习总结(4)--访问SqlServer的类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 守护线程与非守护线程的区别
- 下一篇: 股价相对于转股价溢价的时候,可转债就是折