ข้ามไปที่เนื้อหาหลัก

เขียนโปรแกรม Visual Studio 2008(.NETCF3.5) กับ Windows Mobile 6 ติดต่อกับ Database MSSQL Server 2008 โดยตรง (ไม่ได้ใช้ SQLCE)


รับ Requirement ให้เขียนโปรแกรมบน Windows Mobile 6 ติดต่อกับ Database MSSQL Server 2008 โดยตรง ตอนแรกก็ลองใช้ SQLCE แต่เท่าที่ดูมันไม่ได้เชื่อมต่อ กับ Database Server แต่มันใช้ Database ในเครื่อง Pocket PC แทน ซึ่งไม่ตรงกับ Requirement นัก

เลยลองเขียนโปรแกรมเชื่อมต่อไปยัง SQL Server ตรง ๆ กับปรากฏว่า import System.data.SqlClient ไม่ได้

หาไปหามา พบว่า SqlClient มันอยู่ในไฟล์ System.Data ใน VS2008 ซึ่งถ้าใช้ .NETCF 3.5 มันไม่มีให้ใช้

ลองถามอากู๋ดูก็พบว่ามีคนเขียนแล้วใช้ได้ เลยสงสัยว่าใช้ได้ยังไง หมดไป 1 วันก็พบว่าเขา Add Reference file "System.data.SqlClient.dll" มาใช้กัน ซึ่งเป็นของ "VS2005" ถ้าเป็น VS2008 มันเอาไปรวมใน System.Data.dll แล้ว หมดสิทธิ์ใช้งานนะจ๊ะ

ครั้นลองเอา System.data.dll ของ .NET framework ตัวเต็มมา Add ใส่แทนที่ ผลปรากฏว่าพังไม่เป็นท่าเลย

หลังจากถอดใจแล้วผลอยหลับไปงีบ ตื่นมาก็อาศํยสิ่งศักดิ์สิทธิ์เสียหน่อย ท่องคาถาให้งานราบรื่น ปรากฏว่า "สิ้งศักดิ์สิทธิ์มีจริง ไม่เชื่ออย่าลบหลู่" ไปเจอ Link (ลิงก์พังแล้ว) นี้   ซึ่งมี Source Code ที่มีไฟล์ "System.data.SqlClient.dll" มาให้ด้วย ทดลองใช้แล้ว Work!!!!!!

Source Code โหลดที่ 4Shared.com   https://github.com/diehard27/DemoSQLClient ครับ

ความคิดเห็น

  1. เข้า Link ที่พี่ให้มาทำไมไม่เจอ Source Code อะไรเลยครับ http://ww38.malleswar.com/viewarticle.aspx?articleid=17

    ตอบลบ
  2. พอดีผมกำลังศึกษาอยู่ครับ แต่ Connect Mysql Server 2008 ไม่ได้ พี่พอจะมี Source Code ให้ผมลองศึกษาได้ไหมครับ หาจากเว็บมาสองวันแล้วยัง Connect Database ไม่ได้เลยครับ
    ช่วยผมหน่อยน๊ะครับ

    ตอบลบ
    คำตอบ
    1. ขอ email หน่อยครับ จะส่ง Source Code ไปให้ (ครบ 1 ปีพอดีเลย หานานหน่อย แต่ Test แล้วยังใช้ได้ แต่ต้องปิด firewall)

      ลบ
    2. aunser32@gmail.com
      ขอบคุณมากครับ

      ลบ
    3. ผมยังรอไฟล์จากพี่อยู่น๊ะครับ

      ลบ
    4. ความคิดเห็นนี้ถูกผู้เขียนลบ

      ลบ
    5. ผมส่งไปให้ตั้งแต่วันที่ 1 มิ.ย. แล้วนะครับ ยังไม่ได้รับอีกเหรอ???
      เพื่อความมั่นใจ ตอนนี้เลยส่งไปอีกรอบแล้ว

      ลบ
    6. ได้แล้วครับ ใช้ C# งงเลยครับ ผมเคยใช้แต่ vb.net

      ลบ
    7. ถ้าตัว Convert to VB ใช้ link นี้ได้ครับ
      http://www.developerfusion.com/tools/convert/csharp-to-vb/

      ผมโตมากับ VB6 แล้วก็เปลี่ยนมาเป็น VB.NET มาสัก 2 ปีก่อนหน้า สุดท้ายที่ตัดสินใจเปลี่ยนเป็น C# เพราะว่า หา Code ตัวอย่างได้เยอะกว่าไม่ต้องมานั่งแปลงเป็น VB น่ะครับ

      ลบ
    8. มัน Error sqlexception ครับ โค๊ดของผมผิด หรือเป็นที่ Server ผมต้องลงโปรแกรมตัวไหนที่เครื่อง Server เพิ่มอีกหรือป่าว ปกติโปรแกรมผมที่เป็น window application สามารถ connect database ได้ครับ ช่วยชี้แนวทางด้วยน๊ะครับ

      ลบ
    9. ตอบไปทาง mail แล้วนะครับ แนวทางประมาณนี้
      - ปิด firewall ที่ pc
      - ping ไปที่ emulator ดูว่าเชื่อมต่อได้ชัวร์หรือเปล่า
      - ดู protocol configuration ของ sql server ว่า เปิดให้ connect ผ่านทางไหนบ้าง

      ที่นึกออกก็ประมาณนี้

      ถ้าไม่ได้จริง ๆ เดี๋ยวมืด ๆ remote เข้าไปดูให้ก็ได้ครับ

      ลบ
    10. โปรเจคผมทำเสร็จแล้วครับ กลับมาขอบคุณพี่อีกครั้งที่คอยให้คำแนะนำมาตลอด ขอบคุณมากๆครับพี่

      ลบ
    11. ยินดีด้วยที่ปิดจ๊อบได้นะครับ

      ลบ
  3. ความคิดเห็นนี้ถูกผู้เขียนลบ

    ตอบลบ
  4. ผมส่ง Code ไปให้ทาง patchara034@gmail แล้วนะครับ แต่รู้สึกว่า mail จะโดนตีกลับ เพราะปัญหา Attach file เดี๋ยวจะลองส่งให้ที่ hotmail.com อีกรอบ

    รายละเอียดเพิ่มเติม
    วิธีทำ ดูที่ http://phnarong.blogspot.com/2012/06/os-win-7-x64-professional-ide-visual.html นะครับ
    link ติดตั้งจากคุณสุรัตน์
    http://www.petenetlive.com/KB/Article/0000241.htm

    ตอบลบ
  5. ขอ Code ด้วยได้มั้ยคะ ติดตรงนี้ นานมาก หาเท่าไรก็ไม่เจอสักที T T
    saing10@gmail.com
    ขอบคุณมาก ๆ เลยคะ มีอะไรที่นู๋อยากปรึกษา นู๋เมลล์ปรึกษาพี่ได้หรือเปล่าคะ

    ตอบลบ
    คำตอบ
    1. ส่ง mail ไปให้แล้วนะครับ
      ยินดีให้คำปรึกษาครับ

      ลบ
  6. ขอ Code ด้วยไหมคับ
    Friend502.to@gmail.com
    ขอบคุณมานะคับ

    ตอบลบ
    คำตอบ
    1. ขอโทษด้วยครับเพิ่งเห็นเมล์เมื่อ 2 วันที่แล้ว (mail notification มันอยู่ในขยะ แก้ให้อยู่ใน inbox ก็ไม่หาย)

      ผมส่ง mail ไปให้สองรอบแล้ว มันตีกลับทั้งสอบรอบ

      กำลังลองส่งรอบที่สามนะครับ

      ลบ
    2. ส่ง mail ไปที่ Friend502.to@gmail.com ไม่ผ่าน 4 ครั้งแล้วครับ ส่งด้วย gmail ก็ไม่ผ่าน ส่งด้วย Hotmail ก็ไม่ผ่าน

      ลบ
    3. ส่ง link เป็น share จาก google drive ให้แล้วนะครับ ลองโหลดดู

      ลบ
  7. รบกวนขอcodeด้วยครับ ของผมติดมันฟ้อฃว่าไม่ได้ลงnetcf3.5 ผมใช้ppc WM5 ครับ
    ต่อกับsql server2005 ช่วยชี้แนะด้วยครับ กำลังดำน้ำเลย sql
    attagontfi@gmail.com

    ตอบลบ
    คำตอบ
    1. ขอโทษจริง ๆ ครับ ผมไม่ได้ mail แจ้งว่ามีคนโพสต์ เลยไม่ได้ตอบกลับ

      ลบ
  8. รบกวนขอ code ด้วยครับ weerachai.va@gmail.com

    ตอบลบ
    คำตอบ
    1. ผม update source code ไว้ที่ท้ายบทความแล้วครับ

      ลบ
  9. รบกวนขอ code ด้วยครับ pae_in@hotmail.com ทำมา2วันละ เชื่อมต่อยังงัย ก็ไม่ได้ครับ win ce กับ sql server 2008

    ตอบลบ
    คำตอบ
    1. ส่งไปแล้วนะครับ

      ลบ
    2. ยังไม่ไเลยครับ ขอเป็น vb ได้ไหมครับ ที่ส่งมา เป็น C# ครับ ขอบคุณครับ

      ลบ
  10. ได้รับเมล์แล้วครับ. พรุ่งนี้ทดสอบ งานจริง Win ce vb.net VS 2008. จะแจ้งผลให้ทราบครับ. ขอบคุณมากๆครับพี่

    ตอบลบ
  11. ได้แล้วครับ พอดี ใช้ การลงใหม่ ของ sql 2008 user+pw ใหม่ แล้ว คอนเน็กใหม่ ได้เลยครับ ขอบคุณที่ให้ code ดีๆ ตัวอย่างและแนวทาง ขอบคุณมากๆครับ

    ตอบลบ
  12. ขอถามอีกหน่อยครับ เวลา รัน emu ออกมาช้ามากครับ หรือ ต้องทำงัยให้ไวกว่านี้ เป็น2-5 นาที

    ตอบลบ
    คำตอบ
    1. ผมใช้เปิด emu ค้างไว้เลยครับ รันแล้วไม่ต้องปิด emu แล้วอัด ram เครื่อง dev เยอะ ๆ หน่อยสัก 6GB

      ลบ
  13. สอบถามนิดหนึ่ง 'Imports System.Drawing.Printing มันไม่รู้จักอะ ติดที่ คำสั่งพิมพ์รายงาน ไม่ได้
    e.Graphics.DrawString("เลขที่ใบแจ้งหนี้ : " & TextBox2.Text, Font1, Brush, CurrentYPosition, 132)
    ตัวอย่างครับ PrintDocument1_PrintPage
    ถ้ามีแนวทาง รบกวนหน่อยครับ

    ตอบลบ
    คำตอบ
    1. หมายถึง ใช้พิมพ์ผ่าน WinMo ใช่ไหมครับ

      WinMo ข้อจำกัดเยอะมาก library ที่เคยเขียนได้บน PC อาจใช้ไม่ได้บน WinMo ตัวอย่างที่ชัดเจนคือ SqlClient.dll นี่แหละ

      เพราะฉะนั้นเวลาจะเขียนต้องหาข้อมูลว่ามันรองรับหรือเปล่า

      ตัวนี้ผมไม่เคยใช้ เลยไม่รู้ครับ

      ลบ
  14. ความคิดเห็นนี้ถูกผู้เขียนลบ

    ตอบลบ
  15. ผมขอ source ด้วยนะครับ ติดปัญหา connect sql run dll system.data.salclient แล้ว หา version ไม่เจอ rubikman.pk29@gmail.com

    ตอบลบ
    คำตอบ
    1. บรรทัดสุดท้ายของบทความมีลิงค์ให้โหลดครับ

      ลบ
  16. ผมรบกวนขอตัวอย่าง soucecode ด้วยคนครับ ขอบคุณเจ้าของกระทู้ครับ burana2008@hotmail.com

    ตอบลบ
    คำตอบ
    1. ขอโทษที่ตอบช้าครับ เมล์ไม่แจ้งเตือนความเห็น ไม่รู้ยังทันหรือเปล่า
      https://github.com/diehard27/DemoSQLClient

      ลบ

แสดงความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

C# Databinding เทคนิคกรอง combobox OrderNo ที่มีการ Invoice แล้ว (How to refresh OrderNo list in combobox binding after invoiced without left outer join method)

เขียนโปรแกรมรับ Order และจ่าย Invoice เงื่อนไขคือ OrderNo จะต้องแสดงเฉพาะ OrderNo ที่ยังไม่ได้ผูกกับ Invoice เท่านั้น วิธีการที่เคยทำได้แก่ 1. ทำ Orders Left Outer Join Invoice เอาเฉพาะ Order ที่ยังไม่มีเลข Invoice ออกมา (ตามตำรา) - ถ้าไม่เขียน sql query ตอนสั่ง sqlselect command ก็ต้องไปใช้ LINQ to Object แล้วเอามา rebinding combobox.datasource ใหม่ เพราะ datasource ที่ผูกไว้กับ combobox มันไม่ refresh เช่น cboOrderNo.datasource.Clear; cboOrderNo.datasource = newList(); 2. เพิ่ม flag field ที่ table Orders ถ้ามีรับ invoice แล้ว ให้ flag = 1 แล้วใช้ dtOrder.defaultview.rowfilter = "flag=1"; ข้อมูลใน combobox จะไม่ต้อง rebinding อันนี้เห็นมาจากระบบอื่น 3. ใช้ Rowfilter = "Child(relation).Order = null" แต่วิธีนี้ใช้ไม่ได้ เพราะ Rowfilter จำกัดให้ใช้ได้เฉพาะ Parent เพราะถ้าเป็น Child แล้วจะ return หลายตัว ตามข้อมูลจาก link นี้ แต่อ้างอิงเป็นกลุ่มเช่น Sumchild(relation).Qty >20 ได้ เห็นแล้วก็นึกถึงไอเดียบรรเจิด ใช้ Rowfilter = Count(Child(relation)) <0 แ...

เทคนิคการสอบใบขับขี่รถยนต์ ท่าจอดรถเทียบฟุตบาทห่างไม่เกิน 25cm ด้วย "Sticker"

วันนี้พาพี่ที่บ้านไปสอบใบขับขี่รถยนต์ครั้งที่ 3 ซึ่งสอบตกท่าจอดรถเทียบฟุตบาท โดยคนขับรถเป็นแล้วจะรู้สึกว่าไม่เห็นจะยากตรงไหน แต่สำหรับคนที่เพิ่งหัดขับรถ ประกอบกับได้จับรถป้ายแดงที่เพิ่งถอยออกมาขับได้ ไม่ถึง 5 ชม. นั้นเป็นเรื่องที่ยากจะทำได้ ผมคนหนึ่งที่ได้ใบขับขี่มานาน แต่พอให้มาขับจอดเทียบฟุตบาทด้วยรถป้ายแดงใหม่เอี่ยมของคนอื่นแล้ว มีอันต้องจอดห่างทุกที ด้วยเวลาในการซ้อมขับที่เหลือไม่ถึง 3 ชม. ก่อนสอบจริง ทำให้ต้องคิดหาเทคนิควิธีต่าง ๆ ที่จะทำได้ใบขับขี่มา (เพราะเหนื่อยกับความพยายามสอบมา 2 ครั้งแล้ว) จนทำให้คิดเทคนิค "Sticker" นี้ขึ้นได้ โดยปกติแล้วถ้าขับรถจอดเทียบฟุตบาทแล้วพยายามมองกระจกข้างให้ล้อหลังชิดเส้นขอบพอดี ผลออกมาจะทำให้ล้อหน้าปีนฟุตบาท ไอ้ครั้นจะให้พี่ที่เพิ่งหัดขับรถมาได้ไม่ถึง 8 ชม. กะขนาดตัวรถให้ได้ (ซึ่งขนาดผมเองยังคงกะลำบาก) ภายในสิบห้านาทีนั้นโอกาสเป็นไปได้ยากมาก ด้วยการทดลองเทคนิคต่าง ๆ หลาย ๆ แบบ ที่พอจะนึกออกจากประสบการณ์และเวลาอันสั้นรวบรัด ก็ทำให้เกิดแนวคิดที่ว่า ทำอย่างไรให้สามารถมองล้อหน้าว่าติดเส้นขอบหรือเปล่า ได้เหมือนกับที่ใช้กระจก...