標籤:
ADO.NET中5大對象的概述:
1---Connection對象:串連資料庫。
(1)使用sa 登入
conn = new SqlConnection("Data Source=NEWLAND-PC;Initial Catalog=Srr1100U;User ID=sa;pwd=123456;"); conn.Open();
(2)使用windows本地登入
conn = new SqlConnection("Data Source=NEWLAND-PC;Initial Catalog=Image;Integrated Security=True;"); conn.Open();
2---Command對象:執行T-SQL語句。
(1)ExecuteNonQuery()方法,執行增刪改命令。返回受影響的行數!一
if (comm.ExecuteNonQuery() > 0) { MessageBox.Show("儲存成功!"); }
(2)ExecuteReader()方法,返回一個DataReader對象。一般用於string類型
GetConn(); string select = "select COUNT( distinct Data) as num from Srr1100U"; comm = new SqlCommand(select,conn); SqlDataReader MyData = comm.ExecuteReader(); MyData.Read(); this.txtHuman.Text = "人數:" + MyData["num"].ToString();
(3)ExecuteScalar()方法,返回首行首列。可以用於byte[]數組:
GetConn(); string select = "select Image from CameraImage where ImageName=‘" + DataId + "‘"; comm = new SqlCommand(select, conn); byte[] Mybyte = (byte[])comm.ExecuteScalar();
(4)SqlParameter[]參數,是DataSet的映射,可用來一次性更新大量的資料。
標準寫法:
string select = "insert Message(CardData,Name,Money,Tel) values (@CardData,@Name,@Money,@Tel)"; SqlParameter[] MySqlParameter = new SqlParameter[] { new SqlParameter("@CardData",MyCardData), new SqlParameter("@Name",DataName), new SqlParameter("@Money",DataMoney), new SqlParameter("@Tel",DataTel) }; comm = new SqlCommand(select, conn); if (MySqlParameter != null && MySqlParameter.Length > 0) { foreach (SqlParameter p in MySqlParameter) { comm.Parameters.Add(p); } } if (comm.ExecuteNonQuery() > 0) { MessageBox.Show("寫入成功"); }
簡化寫法:
string select = "insert Message(CardData,Name,Money,Tel) values (@CardData,@Name,@Money,@Tel)"; comm = new SqlCommand(select, conn); comm.Parameters.Add(new SqlParameter("@CardData", SqlDbType.NVarChar)); comm.Parameters.Add(new SqlParameter("@Name", SqlDbType.NVarChar)); comm.Parameters.Add(new SqlParameter("@Money", SqlDbType.NVarChar)); comm.Parameters.Add(new SqlParameter("@Tel", SqlDbType.NVarChar)); comm.Parameters[0].Value = MyCardData; comm.Parameters[1].Value = DataName; comm.Parameters[2].Value = DataMoney; comm.Parameters[3].Value = DataTel; if (comm.ExecuteNonQuery() > 0) { MessageBox.Show("寫入成功"); }
3---DataAdapter對象:資料配接器,從資料庫中檢索資料,再填充到本機資料集中。同時,我們可以利用DataAdapter,再將資料反向從DataSet中更新回資料庫。
(1) DataAdapter的Fill方法,用於使用DataAdapter的SelectCommand的結果來填充DataSet。
GetConn();
string select = "select * from CameraImage where ImageName=‘" + address + "‘";
MySqlDataAdapter = new SqlDataAdapter(select, conn);
MyDataSet = new DataSet();
MySqlDataAdapter.Fill(MyDataSet);
MemoryStream MyMemoryStream = new MemoryStream((byte[])MyDataSet.Tables[0].Rows[0][2]);
4---DataReader對象:是一個只向前的資料流。用於從資料來源中檢索唯讀資料集,並且必須有串連時才可以用。
CommandBehavior.CloseConnection屬性,關閉時同時關閉conn串連
GetConn(); string Myselect = "select COUNT(CardData) as num from dbo.Message"; comm = new SqlCommand(Myselect, conn); SqlDataReader MySqlDataReader = comm.ExecuteReader(CommandBehavior.CloseConnection); if (MySqlDataReader .Read()) { MessageBox.Show(read2["num"].ToString()); }
read.Close();
5---DataSet對象:是ADO.NET的核心,相當於本機資料庫,它與資料庫無關的,它和遠端資料庫串連的橋樑就是.NET資料提供者。它是由多個表構成,每個表都是一個DataTable對象。
GetConn(); string select = "select * from CameraImage where ImageName=‘" + address + "‘"; MySqlDataAdapter = new SqlDataAdapter(select, conn); MyDataSet = new DataSet(); MySqlDataAdapter.Fill(MyDataSet); MemoryStream MyMemoryStream = new MemoryStream((byte[])MyDataSet.Tables[0].Rows[0][2]); //Tables表的標號,rows[行][列]
SQL(2)---C#應用