zoukankan      html  css  js  c++  java
  • 在C#中使用SQLite

    SQLite 是一个嵌入式的关系数据库系统,使用十分广泛。在一些数据量不大的应用程序中,如果使用SQLite可以极大的减少部署时的工作量。 要在C#中使用SQLite也很简单,只要找一个C#的wrapper就可以了,例如,我使用的就是来自

    http://sqlite.phxsoftware.com/  的一个dll,System.Data.SQLite. 下载下来的文件是SQLite-1.0.65.0-setup.exe。只要安装一下就可以使用了,非常方便。该程序符合ADO.NET的规范,并且支持Visual Studio的可视化表设计器。

    打开Visual Studio 2008,新建一个Console Application,为此项目添加System.Data.SQLite的引用。添加一个数据库连接,此时可以发现,新建连接中有了一个SQLite Database Connection,选择此类型的数据连接,并且新建一个文件,

    test.db3. 接下来在新数据库中添加一张表,如下:

    tt

    下面开始为此表建立一个Data Access类,以展示在C#中如何使用SQLite,可以想象,和操作其他数据库是几乎一样的,感谢ADO.NET的功劳。

    首先是一个实体类 Book.cs:

    public class Book
        {
            private int id;
            private string bookName;
            private decimal price;

            public int ID
            {
                get { return id; }
                set { id = value; }
            }
            public string BookName
            {
                get { return bookName; }
                set { bookName = value; }
            }
            public decimal Price
            {
                get { return price; }
                set { price = value; }
            }
        }

    编写DAL类:

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Data.SQLite;

    namespace ConsoleApplication1
    {
        public class BookDAL
        {
            public static bool Create(Book book)
            {
                try
                {
                    using (SQLiteConnection conn = new SQLiteConnection("Data Source=e:\\test.db3"))
                    {
                        conn.Open();
                        SQLiteCommand cmd = conn.CreateCommand();
                        cmd.CommandText = "insert into Book values(@ID,@BookName,@Price);";
                        cmd.Parameters.Add(new SQLiteParameter("ID", book.ID));
                        cmd.Parameters.Add(new SQLiteParameter("BookName", book.BookName));
                        cmd.Parameters.Add(new SQLiteParameter("Price", book.Price));
                        int i = cmd.ExecuteNonQuery();
                        return i == 1;
                    }
                }
                catch (Exception)
                {
                    //Do any logging operation here if necessary
                    return false;
                }
            }

            public static bool Update(Book book)
            {
                try
                {
                    using (SQLiteConnection conn = new SQLiteConnection("Data Source=e:\\test.db3"))
                    {
                        conn.Open();
                        SQLiteCommand cmd = conn.CreateCommand();
                        cmd.CommandText = "update Book set BookName=@BookName,Price=@Price where ID=@ID;";
                        cmd.Parameters.Add(new SQLiteParameter("ID", book.ID));
                        cmd.Parameters.Add(new SQLiteParameter("BookName", book.BookName));
                        cmd.Parameters.Add(new SQLiteParameter("Price", book.Price));
                        int i = cmd.ExecuteNonQuery();
                        return i == 1;
                    }
                }
                catch (Exception)
                {
                    //Do any logging operation here if necessary
                    return false;
                }
            }

            public static bool Delete(int ID)
            {
                try
                {
                    using (SQLiteConnection conn = new SQLiteConnection("Data Source=e:\\test.db3"))
                    {
                        conn.Open();
                        SQLiteCommand cmd = conn.CreateCommand();
                        cmd.CommandText = "delete from Book where ID=@ID;";
                        cmd.Parameters.Add(new SQLiteParameter("ID", ID));        
                        int i = cmd.ExecuteNonQuery();
                        return i == 1;
                    }
                }
                catch (Exception)
                {
                    //Do any logging operation here if necessary
                    return false;
                }
            }

            public static Book GetbyID(int ID)
            {
                try
                {
                    using (SQLiteConnection conn = new SQLiteConnection("Data Source=e:\\test.db3"))
                    {
                        conn.Open();
                        SQLiteCommand cmd = conn.CreateCommand();
                        cmd.CommandText = "select * from Book where ID=@ID;";
                        cmd.Parameters.Add(new SQLiteParameter("ID", ID));
                        SQLiteDataReader dr = cmd.ExecuteReader();
                        if (dr.Read())
                        {
                            Book book = new Book();
                            book.ID = dr.GetInt32(0);
                            book.BookName = dr.GetString(1);
                            book.Price = dr.GetDecimal(2);
                            return book;
                        }
                        else
                            return null;
                    }
                }
                catch (Exception)
                {
                    //Do any logging operation here if necessary
                    return null;
                }
            }
        }
    }

    编写测试主程序:

    using System;

    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                Book book = new Book();
                book.ID = 1;
                book.BookName = "Book A";
                book.Price = 10.0m;
                BookDAL.Create(book);

                book.ID = 2;
                book.BookName = "第二本书";
                book.Price = 13.0m;
                BookDAL.Create(book);

                book = BookDAL.GetbyID(2);
                Console.WriteLine(book.ID + " " + book.BookName + " " + book.Price);

                book.Price = 11.1m;
                BookDAL.Update(book);

                book = BookDAL.GetbyID(2);
                Console.WriteLine(book.ID + " " + book.BookName + " " + book.Price);
                book = BookDAL.GetbyID(1);
                Console.WriteLine(book.ID + " " + book.BookName + " " + book.Price);

            }
        }
    }

    最终结果:

    2 第二本书 13
    2 第二本书 11.1
    1 Book A 10

  • 相关阅读:
    打开安装 好的Microsoft Dynamics CRM 4.0 报错误为 Caller does not have enough privilege to set CallerOriginToken to the specified value 的解决办法
    基于 Windows Server 2008 的计算机对 Microsoft Dynamics CRM 4.0 的支持
    Microsoft Dynamics CRM 4.0 如何添加自定义按钮
    Microsoft Dynamics CRM 4.0 Plugin 取值,赋值,查询
    C# 中的 enum(枚举) 类型使用例子
    vue事件的绑定
    表单验证2
    node中模块
    node模块的引入
    node中的读文件
  • 原文地址:https://www.cnblogs.com/zhangtao/p/1735088.html
Copyright © 2011-2022 走看看