Just a Ordinary Programmer
C#.NET Query with Parameter
คนเรามันก็เหมือนกิ้งก่า อยู่ที่ไหนก็เปลี่ยนไปตามนั้น (จริง ๆ ก็คือทำเสร็จแล้วลืมนั่นเอง เจอของเก่าเขาทำไว้ไงก็ทำงั้น)
จริง ๆ ผมก็เคยเขียน code แบบนี้มาตั้งนานละ แต่ก็ลืม ๆ ไปเพราะว่าที่ทำงานที่นี่ Programmer ส่วนใหญ่เวลาจะเขียน Query ก็เอา String เชื่อม ๆ ต่อ ๆ กับ Value จนได้ Query มาชุดนึง แล้วก็เอาไป Query
มันก็ทำงานได้ดีอยู่หรอก แต่วันนี้นี่สิ วันที่ผมต้องมาแก้ไขระบบนิดหน่อย แล้วดันตั้ง Query ข้อมูล ที่เป็น DateTime เอาแล้วไง จะ Query ยังไงล่ะ จะทำให้เป็น format ไหน มันก็แล้วแต่เครื่องที่จะเปิดนี่นาว่าเขาจะตั้งไว้เป็นยังไง
หรือจะเขียน Store Procedure เอ แล้วถ้าไม่มีสิทธิ์ล่ะ แล้วถ้าเขียน Store Procedure ไม่เป็นล่ะ (จริง ๆ อันนี้แหล่ะเหตุผลจริง ๆ ของผม)
วุ่นวาย ๆ ปวดหมอง ๆ
ก็เลยแนะนำวิธีนี้ละกัน
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | SqlConnection conn = new SqlConnection(ConnectionString); //เขียน Query แล้วก็ใส่ @ชื่อparam แทน Parameter ที่จะใช้ string sql = "SELECT * FROM MyTable " + "WHERE Name=@name AND RegisDate=@regisdate"; SqlCommand cmd = new SqlCommand(sql, conn); //ก็ Add parameter ก่อน โดย ชื่อก็จะขึ้นต้นด้วย @ //แล้วก็เหมือนกับที่เราเขียนใน sql query ด้านบน แล้วก็ระบุ Type ด้วยนะ cmd.Parameters.Add("@name", SqlDbType.VarChar); cmd.Parameters.Add("@regisdate", SqlDbType.DateTime); //จากนั้นก็กำหนดค่ามันลงไป ตาม Type นั้น ๆ //จะเป็น DateTime หรืออะไรก็ใส่กันไปโต้ง ๆ เลย cmd.Parameters["@name"].Value = 'Krucode'; cmd.Parameters["@regisdate"].Value = DateTime.Now; // อ่ะ ก็เอา Data ไปใช้ SqlDataAdapter mydata = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); mydata.Fill(ds, "CL"); |
มันจะช่วยแก้ปัญหาเรื่อง DateTime ได้ชะงัดนัก
จริง ๆ ผมเชียร์ให้เขียน code แบบนี้นะ ดีกว่าเขียนเชื่อม string แบบ
1 2 | string sql = "SELECT * FROM MyTable " + "WHERE Name='"+Krucode+"' ORDER BY NAME"; |
นะ แก้ลำบาก
สู้ ๆ o.O!
| Print article | This entry was posted by Krucode on October 2, 2009 at 3:47 pm, and is filed under Uncategorized. Follow any responses to this post through RSS 2.0. You can leave a response or trackback from your own site. |