\

Facebook


วันพุธที่ 4 กันยายน พ.ศ. 2556

[โปรแกรม searchหาชื่อสินค้า] SQLite บน C# เอาไว้อ่านไฟล์ .db ใน WinForm มันง่ายมั่กๆ


วันก่อนผมเขียนเกี่ยวกับการสร้าง app ดึงข้อมูลจากฐานข้อมูล SQL Server 2008 r2 ไปแล้วซึ่งเขียนง่ายไม่ซับซ้อนแล้ว ผมว่ายังมีง่ายกว่านั้น แต่คราวนี้ผมต้องการดึง table จากไฟล์นามสกุล .db ลูกหนึ่งซึ่งค้นพี่ gooไปๆมาๆก็มาลงที่ SQLite {O_O} เอ๊ะนี้มีใช้เฉพาะเว็บไม่ใช่หรือ สรุปผู้พัฒนาเค้าสร้าง libary สำหรับใช้บน Win และ android มาด้วยซึ่งสะดวกเอามากๆ

sqlite เหมาะกับโปรแกรมที่ run แบบ stand alone และที่สำคัญ "ฟรี" โดยสามารถดาว์นโหลดไลบราลี่มาใช้งานได้ โดยการใช้งาน sqlite บน c# ก็ไม่ได้ใช้ code ที่สลับซับซ้อนเพราะ syntax คล้ายๆกับ sqlconnection นั่นแหละ


มาเริ่มกันเลยครับ Download libary .dll ตัวล่าสุดจาก Offical website ของ SQLite เค้าลงมา เลือกให้ถูกด้วยนะครับว่า จะเป็นแบบ 64 bit หรือ 32 bit หรือจะโหลดตัว install มาติดตั้งก็ได้ครับ ง่ายดี

หลังจากนั้น Install เลยครับ แล้ว add reference ให้ project ของเราซะ ตัวที่ต้องใช้งานมี
System.Data.SqlClient;
System.Data.SQLite;

เท่านี้เครื่องเราก็พร้อมใช้งานแล้วครับ ลุยขั้นตอนต่อไปเลย
เรื่อง connect string ศึกษาเพิ่มเติมได้ที่ website นี้ครับ http://www.connectionstrings.com/sqlite/ ซึ่งเค้ารวบรวม connection แบบต่างๆเอาไว้มีออฟชั่นเยอะแยะมากมาย แต่ผมขอเลือกแบบง่ายที่สุดก็เเล้วกัน

*หมายเหตุ เครื่องคอมผม ใช้windows 7 64 bit แต่เจอ error นี้เข้าไปหลังจากพยายามโหลด Libary ชื่อ SQLite.Interop.dll ซึ่งไปค้นหาทางแก้มา ได้ความว่าเราต้อง Prefer เป็น 64bit ถึงจะโหลดได้ >> ซึ่งต้องไป config เพิ่มที่ไฟล์ project (*.csproj) file ซึ่งคลิกขวา edit as EditPlus ได้เลยครับ แล้วเพิ่ม <Prefer32Bit>false</Prefer32Bit> เข้าไป ต่อท้ายใน tag <PropertyGroup>


แต่ถ้าไม่เจอปัญหานี้ก็รอดตัวไปครับ


มาลุยโค๊ดกันเลยครับ >> ลองโค๊ดนี้กับการอ่านไฟล์ .db สักตัวนึง ถ้าใน Console Connect Complete ออกมาก็แสดงว่าเรา Connect ฐานข้อมูลสำเร็จแล้วครับ เพื่อทดลองดึงข้อมูล งั้นก็เอาฐานข้อมูลที่ sqlite แถมมาให้เลยละกัน [code ข้างล่างนี้]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
using System.Text;
 
using System.Threading.Tasks;
 
using System.Data.SQLite;
 
namespace sqlite
 
{
 
    class MainClass
 
    {
 
        public static void Main(string[] args)
 
        {
 
            string dbfile = "C:\\northwindEF.db";
 
            string connStr = "Data Source=" + dbfile + ";Version=3;Synchronous=Off;UTF8Encoding=True;";
 
            SQLiteConnection sqlConn = null;
 
            sqlConn = new SQLiteConnection(connStr);
 
            try
 
            {
 
                sqlConn.Open();
 
                Console.WriteLine("Connect Complete, Please Input Product Name : ");
 
                Console.ReadLine();
 
            }
 
            catch (Exception ex)
 
            {
 
                Console.WriteLine("Error" + ex);
 
                Console.ReadLine();
 
            }
 
        }
 
    }
 
}
<div class="preloader"><div></div><div></div><div></div><div></div><div></div><div></div><div></div></div>



 หลังจากนั่นก็จัด query บ้านๆ ไปเลยครับ โค๊ด sql select ธรรมดาที่เอาไว้ search หาข้อมูลที่เรากรอกลงไปนั้นก็คือคิวรี่ข้างล่างนี้
string query = "SELECT ProductName, QuantityPerUnit FROM Products WHERE ProductName like '" + strInput+"'";

วันนี้ขอโปรแกรมง่ายๆก่อนละกัน คราวหลังถ้ามีเวลายาวๆ จะเขียนตัวอย่างให้ละเอียดมากกว่านี้นะครับ เอาพอเป็นแนวละกัน SQLite เป็นไลบราลี่ฟรีสามารดาว์นโหลดผ่านหน้าเว็บเค้า แล้วยังมีการออกอัพเดตใหม่ๆตลอดเวลา บายครับ

[Complete Code Example] สรุปตัวอย่างโค๊ดที่ใช้ในโปรแกรม C# sqlite Connect
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
using System;
 
using System.Collections.Generic;
 
using System.Linq;
 
using System.Text;
 
using System.Threading.Tasks;
 
using System.Data.SQLite;
 
 
 
namespace sqlite
 
{
 
    class MainClass
 
    {
 
        public static void Main(string[] args)
 
        {
 
            string dbfile = "C:\\northwindEF.db";
 
            string connStr = "Data Source=" + dbfile + ";Version=3;Synchronous=Off;UTF8Encoding=True;";
 
 
 
            SQLiteConnection sqlConn = null;
 
            sqlConn = new SQLiteConnection(connStr);
 
 
 
            try
 
            {
 
                sqlConn.Open();
 
                Console.WriteLine("Connect Complete");
 
                do
 
                {
 
                    Console.WriteLine("\nPlease Input Products Name : ");
 
                    string strInput = Console.ReadLine();
 
 
 
                    string query = "SELECT ProductName, QuantityPerUnit FROM Products WHERE ProductName like '" + strInput+"'";
 
                    SQLiteCommand command = new SQLiteCommand(query, sqlConn);
 
                    SQLiteDataReader reader = command.ExecuteReader();
 
                    if (reader != null)
 
                    {
 
                        while (reader.Read())
 
                        {
 
                            Console.WriteLine("Product Name : " + reader[0] + "\t ProductPrice : " + reader[1]);
 
                        }
 
                    }
 
                    else
 
                    {
 
                        Console.WriteLine("No Product");
 
                    }
 
 
 
                } while (true);
 
 
 
                sqlConn.Close();
 
            }
 
            catch (Exception ex)
 
            {
 
                Console.WriteLine("Error" + ex);
 
                Console.ReadLine();
 
            }
 
        }
 
    }
 
}
<div class="preloader"><div></div><div></div><div></div><div></div><div></div><div></div><div></div></div>

เป็น Console Application นะครับแต่ก็สามารถดัดแปลงให้เสดงเป็น UI สวยๆ ได้แค่เอาข้อมูลไปใสในกริดวิวของ Winform ที่เราเตรียมเอาไว้แสดงผล

1 ความคิดเห็น:

ไม่ระบุชื่อ กล่าวว่า...

ผม ADD Interop ไม่ได้อ่ะครับ แล้วลองแก้ที่บอกแล้วก็ยังไม่ได้ออ่ะครับ พอจะมีวิธีแก้ไหมครับ

May be like this posts

  • เช็คราคาเที่ยวบินจบในคลิกเดียวด้วย Selenium IDE ใช้เวลาแค่ 3 วิ
    22/06/2017 - 0 Comments
    เวลาวางแผนไปเที่ยวต่างจังหวัดหรือต่างประเทศ มันต้องมีอารมณ์ต้องเข้าไปเช็คที่พัก…
  • ว่างจัด! ทำเว็บดึง Facebook Graph API ง่ายๆ
    04/08/2014 - 0 Comments
    ไม่ได้เขียน BLOG มาร่วม 3 เดือนละมั้งครับเนี้ย วันนี้ขออัพเดตหน่อยละกันครับ…
  • Debug PHP Code ด้วย VS Code 2016 ของฟรีและดีงามจาก Microsoft
    23/11/2016 - 0 Comments
    หากคุณเป็นนักพัฒนาภาษา C# หนึ่งในโปรแกรม Editor ที่มีความสามารถสูงในท้องตลาดและคุณต้องไม่พลาดแน่นอนคือ…
  • วิธี Gen Certificate ด้วย OpenSSL
    23/06/2019 - 0 Comments
    เริ่มต้มด้วยไฟล์ ตั้งต้นครับ มักเจอไฟล์นามสกุล .pem ซึ่งภายในจะบรรจุทั้ง RSA Private Key…
  • เจ้าเต่าควบคุม Version : tortoiseSVN
    01/04/2013 - 0 Comments
    โปรแกรมตัวนี้ก็เป็นเครื่องมือที่ใช้ควบคุมเวอร์ชั่นของโปรแกรมที่เราพัฒนา ถ้านึกภาพยังไม่ออกก็ลองนึกถึง…
  • Tip : เล็กๆกับการ Commit SVN
    25/04/2013 - 0 Comments
    Trick เล็กๆน้อยกับการใช้งาน เต่า SVN : จริงๆแล้วการแก้ไข “ไฟล์เดียวกัน”…
  • [SQL] Remove View - SQL SERVER 2008R2 วิวทั้งหลายจงหมดสิ้นไป
    27/03/2014 - 0 Comments
    ชุดคำสั่งสำหรับล้าง view ทั้งหมดที่อยู่ใน folder "View" ด้วย SQL SERVER 2008R2 , เริ่มต้นจาก connect…