Wednesday, April 1, 2009

Update table using SqlDataAdapter

เขียน update statement ผ่าน SqlAdapter

# เหตุผลธ์ก็ไม่มีไรมากแค่ขี้เกียจเขียนโค้ดเปิดแล้วก็ปิด 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

Popular Posts