【ADO.NET基础知识】SqlConnection、command、DataSet 、DataTable、dataAdapter
1.使用Connection連接數(shù)據(jù)庫的步驟:
(1).添加命名空間 System.Data.SqlClient(注意:初學者經(jīng)常會忘記)
(2)定義連接字符串。連接SQL Server 數(shù)據(jù)庫時:
server=服務器名;database=數(shù)據(jù)庫名;uid=用戶名;pwd=密碼;例如:要連接本機上的StudentManagement數(shù)據(jù)庫,用戶名為sa,密碼為111
string connString="server=.;database=StudentManagement;uid=sa;pwd=111;"
(3).創(chuàng)建Connection對象:
SqlConnection connStr=new SqlConnection(connSting);
(4).打開數(shù)據(jù)庫:
conn.Open();
(5).對數(shù)據(jù)庫操作完畢后關閉數(shù)據(jù)庫連接
conn.Close();
2.Command對象:
(1).command對象可以用來對數(shù)據(jù)庫發(fā)出具體的操作指令,例如對數(shù)據(jù)庫的查詢、增加、修改、刪除
(2).創(chuàng)建Command對象,并設置它的屬性:
SqlCommand command =new SqlCommand();
command.Connection=connection;
command.CommandText=sqlQuery(sqlQuery為查詢語句);
(3).Command對象的主要方法:
ExecuteNonQuery:執(zhí)行后不返回任何行,對于update、insert、delete語句,返回影響的行數(shù)對于其他類型的語句,返回值為-1
ExecuteReader:執(zhí)行查詢語句,返回DataReader對象
ExecuteScalar:執(zhí)行查詢,并返回查詢結果的第一行第一列,忽略其他列或行
ExecuteXmlreader:將CommandText發(fā)送到Connection并生成一個XmlReader
3.DataReader對象:
(1).DataReader對象可以從數(shù)據(jù)庫中一只讀、只進的方式查詢數(shù)據(jù),每次的操作只有一個記錄保存在內(nèi)存中
(2).DataReader對象的主要方法:
Read:讀取下一條數(shù)據(jù)
Close:關閉DataReader對象
(3).使用DataReader提取數(shù)據(jù)的步驟:
(a).建立與數(shù)據(jù)庫的連接并打開
(b).創(chuàng)建一個Command對象
(c).從Command對象中創(chuàng)建DataReader對象
(d).使用DataReader讀取并顯示
可以使用一個循環(huán)利用Read方法便利數(shù)據(jù)庫中行的信息,如果要獲取該行中某列的值,只需要使用"["和"]"運算符就可以了
(e).分別關閉DataReader對象和數(shù)據(jù)庫的連接
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.SqlClient;namespace ado.netDemo {class Program{static void Main(string[] args){//定義連接字符串string connStr = @"server=SUNNY\SQLEXPRESS;database=TestDB;UID=sa;PWD=123456";//連接數(shù)據(jù)庫SqlConnection conn = new SqlConnection(connStr);//SQL語句string sql = "select * from tb_Students";//string sql = "insert into tb_Students(SID, Name, Password, Sex, Age, Address, Phone, QQ) Values('20117750120','小鳥電動車','123','男',21,'HONGKONG','18736000000','1147016165')";//string sql = "update tb_Students set SID='20117750119' where SID='20117750120'";//string sql = "delete from tb_Students where SID='20117750101'";//執(zhí)行SQL語句SqlCommand cmd = new SqlCommand(sql,conn);conn.Open();SqlDataReader reader = cmd.ExecuteReader();while (reader.Read())//read()一直讀取下一個數(shù)據(jù) {Console.WriteLine(string.Format("{0}\t{1}\t{2}\t{3}", reader[0],reader[1], reader[2], reader[3]));}reader.Close();//查詢數(shù)據(jù)#region//ExecuteScalar執(zhí)行sql查詢語句的第一行第一列,忽略其他行其他列。//object result = cmd.ExecuteScalar();//Console.WriteLine("共查詢到有:{0}行數(shù)據(jù)", result.ToString());#endregion//增加數(shù)據(jù)#region//int result = cmd.ExecuteNonQuery();//if (result < 1)//{// Console.WriteLine("數(shù)據(jù)插入失敗,請檢查填寫信息,重新操作");//}//else//{// Console.WriteLine("數(shù)據(jù)插入成功!");//}#endregion//修改數(shù)據(jù)#region//int result = cmd.ExecuteNonQuery();//if (result < 1)//{// Console.WriteLine("數(shù)據(jù)修改失敗,請檢查填寫信息,重新操作");//}//else//{// Console.WriteLine("數(shù)據(jù)修改成功!");//}#endregion//刪除數(shù)據(jù)#region//int result = cmd.ExecuteNonQuery();//if (result < 1)//{// Console.WriteLine("數(shù)據(jù)刪除失敗,請檢查填寫信息,重新操作");// Console.WriteLine("{0}行收到影響", result);//}//else//{// Console.WriteLine("數(shù)據(jù)刪除成功!");// Console.WriteLine("{0}行收到影響", result);//}#endregionconn.Close();Console.ReadKey();}} }?
(二)ADO.NET數(shù)據(jù)庫訪問技術:
通過這幾天的學習,下面來把有關數(shù)據(jù)適配器和數(shù)據(jù)集方面的知識點總結一下:
一.DataSet 和DataTable:
數(shù)據(jù)集在ADO.net中的對象是DataSet,DataSet由一個或多個DataTable組成
1.DataTable:
(1).DataTable是表格數(shù)據(jù)塊在內(nèi)存中的表示,DataTable對象由DataColumns集合以及DataRows集合組成。對數(shù)據(jù)庫檢索后,被取回的數(shù)據(jù)就存放在DataTable對象中
(2).DataTable對象的主要的屬性:
CaseSensitive:表中的字符串是否區(qū)分大小寫
Columns:返回屬于這個表的列集合
DataSet:獲得這個表的行集合
TableName:獲得或設置表的名稱
HasChanges:判斷數(shù)據(jù)集是否更改了
(3).dataTable對象的主要方法:
Clear:清除DataTable內(nèi)所有的行數(shù)
NewRow:增加一行
2、DataSet:數(shù)據(jù)裝置
(1).DataSet的主要屬性:
Table:可以訪問DataSet中表的集合
(2).DataSet對象的主要方法
Clear:完全清除DataSet的數(shù)據(jù)
Clone:創(chuàng)建與原DataSet具有相同結構和相同行的DataSet
Copy:創(chuàng)建具有相同結構的新DataSet,但不包含任何行
(3).填充DataSet數(shù)據(jù)集:使用數(shù)據(jù)適配器DataAdapter,DataAdapter對象的Fill()方法可以給DataSet填充數(shù)據(jù),例如
(Fill(參數(shù)1,參數(shù)2 )第一個參數(shù)指定要填充的DataSet,第二個參數(shù)是dataSet中要加載數(shù)據(jù)的Datatable名稱)
(4).使用dataAdapter對象填充DataSet數(shù)據(jù)庫的步驟:
(a).建立數(shù)據(jù)庫的連接,并打開蓋連接
string connString="、、、";
SqlConnection mySqlConnection=new SqlConnection(connString);
mySqlConnection.Open();
(b).定義要執(zhí)行的SQl語句
string sqlQuery="、、、、";
(c).創(chuàng)建數(shù)據(jù)集DataSet對象
DataSet ds=new DataSet();
(d) .創(chuàng)建數(shù)據(jù)適配器DataAdapter
sqlDataAdapter da=new sqlDataAdapter(sqlQuery,mySqlConnection);
(e).使用DataAdapter對象的Fill()方法填充數(shù)據(jù)集
a.Fill(ds,"Table");//DataSet可以被看作是一個虛擬的表或表的集合,這里被填充的表的名稱在Fill方法中命名為Table
(f).關閉數(shù)據(jù)庫連接
mySqlConnection.Close();
注意:close與Dispose的區(qū)別:Close關閉以后還能打開;Dispose是直接銷毀,不能再次使用
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.UI; 6 using System.Web.UI.WebControls; 7 using System.Data.SqlClient; 8 using System.Configuration; 9 using System.Data; 10 11 namespace ado.netDemo1 12 { 13 public partial class Test1 : System.Web.UI.Page 14 { 15 protected void Page_Load(object sender, EventArgs e) 16 { 17 //string connStr = ConfigurationManager.ConnectionStrings["connStr"].ToString(); 18 //SqlConnection conn = new SqlConnection(connStr); 19 //conn.Open(); 20 //string sql = "select * from tb_Students"; 21 //SqlDataAdapter adapter = new SqlDataAdapter(sql, conn); 22 //DataSet dataset = new DataSet(); 23 //adapter.Fill(dataset); 24 //conn.Close(); 25 //GridView1.DataSource = dataset.Tables[0].ToString(); 26 //GridView1.DataBind(); 27 28 29 GridView1.DataSource = getResult(); 30 this.GridView1.DataBind(); 31 } 32 33 //將數(shù)據(jù)庫信息田中到DataSet的DataTable中 34 public DataSet getResult() 35 { 36 string connStr = ConfigurationManager.ConnectionStrings["connStr"].ToString(); 37 SqlConnection conn = new SqlConnection(connStr); 38 conn.Open(); 39 string sql = "select * from tb_Students"; 40 //創(chuàng)建數(shù)據(jù)適配器 41 SqlDataAdapter adapter = new SqlDataAdapter(sql, conn); 42 //創(chuàng)建數(shù)據(jù)集對象 43 DataSet dataset = new DataSet(); 44 //使用適配器對象Fill()方法填充DataSet數(shù)據(jù)集 45 adapter.Fill(dataset); 46 conn.Close(); 47 return dataset; 48 } 49 } 50 }?
(3)訪問DataSet數(shù)據(jù)集:
(1).訪問DataTable:當訪問的數(shù)據(jù)被存放到數(shù)據(jù)集中后,可以用兩種方式訪問DataTable:按表名訪問和按索引(索引從0開始)訪問
(2).訪問行和列
總結:希望通過小編寫的 ADO.NET數(shù)據(jù)庫訪問技術的兩種方法可以幫助各位網(wǎng)友們在做網(wǎng)站開發(fā)的時候,數(shù)據(jù)庫連接時可以得到更好的解答。
?
轉(zhuǎn)載于:https://www.cnblogs.com/888888CN/p/7115276.html
總結
以上是生活随笔為你收集整理的【ADO.NET基础知识】SqlConnection、command、DataSet 、DataTable、dataAdapter的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: git如何解决冲突(代码托管在codin
- 下一篇: cocoapods的安装(这真是一个神奇