# เหตุผลธ์ก็ไม่มีไรมากแค่ขี้เกียจเขียนโค้ดเปิดแล้วก็ปิด connection แค่นั้นเอง
# เท่าที่เห็นเค้าทำผ่าน DataSet อ่ะนะ DataTable ก็น่าจะใช้ได้เหมือนกัน
# ปกติจะชอบเขียนงี้
SqlConnection conn = new SqlConnection(connString);
conn.Open();
SqlCommand cmdStore = new SqlCommand("insert , update, delete query...", conn);
cmdStore.ExecuteNonQuery();
conn.Close();
# แต่ถ้าเป็นประโยค select statement ก็ชอบใช้ adapter อยู่แหละ เพราะ ต้องใช้ร่วมกับ datatable
# อย่างที่บอกด้านบนคือ ถ้าเราใช้ sqladapter เค้าจะทำการเปิดปิดให้เรา อัตโนมัติ ดีแฮะ
# จากตัวอย่างด้านล่างจะไม่เห็น conn.Open() นะ แต่เค้า มี conn.Close() ด้วยแฮะ สงสัยกันเหนียวเลยปิดเอง
using System;
using System.Data;
using System.Data.SqlClient;
class PropagateChanges {
static void Main(){
string connString = "server=(local)\\SQLEXPRESS;database=MyDatabase;Integrated Security=SSPI";
string qry = @"select * from employee ";
string upd = @"update employee set firstname = @firstname where id = @id";
SqlConnection conn = new SqlConnection(connString);
try {
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand(qry, conn);
DataSet ds = new DataSet();
da.Fill(ds, "employee");
DataTable dt = ds.Tables["employee"];
dt.Rows[0]["firstname"] = "W";
foreach (DataRow row in dt.Rows){
Console.WriteLine(
"{0} {1}",
row["firstname"].ToString().PadRight(15),
row["lastname"].ToString().PadLeft(25));
}
// Update employees
SqlCommand cmd = new SqlCommand(upd, conn);
cmd.Parameters.Add("@firstname",SqlDbType.NVarChar,15, "firstname");
SqlParameter parm = cmd.Parameters.Add("@id",SqlDbType.Int,4,"id");
parm.SourceVersion = DataRowVersion.Original;
da.UpdateCommand = cmd;
da.Update(ds, "employee");
} catch(Exception e) {
Console.WriteLine("Error: " + e);
} finally {
conn.Close();
}
}
}
Refer:
No comments:
Post a Comment