本文轉載自:http://www.youarebug.com/forum.php?mod=viewthread&tid=57&page=1&extra=#pid63
using (SqlConnection con = new SqlConnection("Data Source=localhost;Initial Catalog=UserDate;Integrated Security=True")) { 程序語句塊; }
或者:
SqlConnection cnn = new SqlConnection();//創建SqlConnection對象的一個實例 cnn.ConnectionString = "Data Source=localhost;Initial Catalog=UserDate;Integrated Security=True"; cnn.Open();
cmd.CommandText = "INSERT INTO b1(name, company, position, shijian) VALUES(@Name, @Company, @Position, @Datetime)"; cmd.Parameters.Add(new SqlParameter("Name", Name.Text)); cmd.Parameters.Add(new SqlParameter("Company", Company.Text)); cmd.Parameters.Add(new SqlParameter("Position", Position.Text)); cmd.Parameters.Add(new SqlParameter("Datetime", DateTime.Parse(Datetime.Text))); cmd.ExecuteNonQuery();
using(SqlCommand cmd = con.CreateComand()) { cmd.CommandText = “INSERT INTO b1(name, company, position) VALUES(“whh”, “UVGE”, “coder”)”; cmm.ExecuteNonQuery(); }
或者:
using(SqlCommand cmd = con.CreateComand()) { //設置SQL語句 cmm.CommandText = "INSERT INTO b1(name, company, position, shijian) VALUES(@Name, @Company, @Position, @Datetime)"; //創建參數,並定義其數據類型,要和數據庫中對應的字段保持相同 cmm.Parameters.Add("@Name", SqlDbType.NVarChar); cmm.Parameters.Add("@Company", SqlDbType.NVarChar); cmm.Parameters.Add("@Position", SqlDbType.NVarChar); cmm.Parameters.Add("@Datetime", SqlDbType.DateTime); //設置參數的值,這些值來自前段的輸入信息 cmm.Parameters["@Name"].Value = Name.Text; cmm.Parameters["@Company"].Value = Company.Text; cmm.Parameters["@Position"].Value = Position.Text; cmm.Parameters["@Datetime"].Value = Datetime.Text; //執行SQL語句 cmm.ExecuteNonQuery(); }
using(SqlCommand cmd = con.CreateComand()) { Cmd.CommandText = “SELECT語句”; using(SqlDataReader reader = cmd.ExecuteReader()) { While(reader.Read()) { String name = reader.GetString(reader.GetOrdinal(“name”)); //數據處理語句塊; } } }
或者:
using(SqlCommand cmd = con.CreateComand()) { using(SqlDataReader reader = cmd.ExecuteReader()) { While(reader.Read()) { String name = reader.[“name”].ToString(); //數據處理語句塊; } } }
cmd.CommandText = “INSERT INTO T_Users(UserName,PassWord) OUTPUT inserted.Id Values(“admin”, “123456”)”; int id = Convert.ToInt32(cmd.ExecuteScalar());
SqlDataAdapter sqldadp = new SqlDataAdapter("SELECT name, company, position, shijian FROM [UserDate].[dbo].[b1] WHERE shijian > '2010-01-21'", con)
DataSet order_daset = new DataSet();//創建DataSet對象實例 sqldadp.Fill(order_daset);//填充DataSet對象
DataTable dt = new DataTable();//創建數據表對象 dt = order_daset.Tables[0];//填充數據表 Response.Write("<table border='1'><tr><th>姓名</th><th>公司</th><th>職位</th><th>入職時間</th></tr>"); for (int i = 0; i < dt.Rows.Count; i++) { //按照字段,逐行取出數據表中的內容並顯示在頁面上 Response.Write("<tr>"); Response.Write("<td>"+dt.Rows[i]["name"].ToString()+"</td>"); Response.Write("<td>"+dt.Rows[i]["company"].ToString()+"</td>"); Response.Write("<td>"+dt.Rows[i]["position"].ToString()+"</td>"); Response.Write("<td>"+DateTime.Parse(dt.Rows[i]["shijian"].ToString()).ToString("yyyy-MM-dd") + "</td>"); Response.Write("</tr>"); } Response.Write("</table>");
注:上面的代碼主要是數據集的展示功能,需要注意的是填充數據表的語句,是由DataSet對象的Tables屬性的下標為0的數據表填充的,這點是非常重要的。
下面來看看對數據集的修改並且提交數據庫,對數據集的修改,可以通過DataRow以及SqlCommandBuilder對象的實例來實現,SqlCommandBuilder的作用是根據DataAdapter對象自動生成INSERT、UPDATE、DELETE語句,從而使DataAdapter對象更新數據庫內容。具體代碼如下:
//創建DataAdapter對象實例 SqlDataAdapter sqldadp = new SqlDataAdapter("SELECT name, company, position, shijian FROM [UserDate].[dbo].[b1]", con); SqlCommandBuilder scb = new SqlCommandBuilder(sqldadp);//生成插入、刪除、更新語句 DataSet ds = new DataSet();//創建DataSet對象 sqldadp.Fill(ds);//填充DataSet DataRow Myrow = ds.Tables[0].NewRow();//在數據表中創建新的空白記錄對象 //從前台頁面接受要插入的數據 Myrow["name"] = Name.Text; Myrow["company"] = Company.Text; Myrow["position"] = Position.Text; Myrow["shijian"] = Datetime.Text; //將接收到的數據添加到DataTable中 ds.Tables[0].Rows.Add(Myrow); //更新數據庫中的內容 sqldadp.Update(ds); Response.Write("添加成功!<br>");
注:上面的代碼中最關鍵的一個方法是SqlDataAdapter對象的Update()方法,這個方法的作用是將對數據集所作的改變提交給數據庫,這部分代碼與上面的展示代碼所不同的是DataRow對象的實例所接收的是DataTable中的一行,而不是整個DataTable,其代碼為:DataRow Myrow =ds.Tables[0].NewRow(),這句話就是說在原有的DataTable的基礎上創建一個新的空行,而下面的代碼則是為這個空行賦值並提交更新,同樣的,如果是更新數據的話,也是獲得DataTable的某一行后,然后對其中的數據進行賦值修改,然后提交,如果是刪除操作,則是通過DataTable獲取某行后,用DataRow接受,然后再調用DataTable的Rows屬性的Remove方法刪除,具體如下代碼:
DataTable dt = ds.Tables[0]; dt.Rows.Remove(Myrow);
using (SqlConnection con = new SqlConnection("Data Source = localhost; Initial Catalog = UserDate; Integrated Security = True")) { SqlTransaction transql = null;//申明SqlTransaction對象的實例 SqlCommand cmd = new SqlCommand(); try { con.Open();//創建數據庫鏈接 transql = con.BeginTransaction();//開始事務處理 cmd.Connection = con;//設置Command對象的鏈接 cmd.Transaction = transql;//設置Command對象的事務 //設置帶參數的SQL語句 cmd.CommandText = "INSERT INTO b1(name, company, position, shijian) VALUES(@Name, @Company, @Position, @Datetime)"; //為參數賦值(注意參數在數據庫中的數據類型) cmd.Parameters.Add(new SqlParameter("Name", Name.Text)); cmd.Parameters.Add(new SqlParameter("Company", Company.Text)); cmd.Parameters.Add(new SqlParameter("Position", Position.Text)); cmd.Parameters.Add(new SqlParameter("Datetime", DateTime.Parse(Datetime.Text)));//注意數據類型轉換 //執行SQL語句 cmd.ExecuteNonQuery(); //提交事務 transql.Commit(); Response.Write("添加成功!<br>"); } catch { //如果程序拋出異常則做事務回滾 transql.Rollback(); } }
注:在上面的代碼中,特別要注意SqlTransaction的實例接收的是SqlConnection實例的BeginTransaction()的返回值,SqlCommand的實例的Transaction屬性接收的是SqlTransaction的實例,即SqlConnection實例的BeginTransaction()的返回值,而整個事務的過程是由SqlCommand實例來書寫的,也就是說,在SqlCommand實例里面的代碼相對應的事務都由SqlTransaction的實例自動生成,前提是必須要有transql = con.BeginTransaction();cmd.Transaction= transql;這兩句代碼,最后用SqlTransaction的Commit()方法或者Rollback()對事務進行提交或者回滾