[转]C# 操作Sqlite

    public class BookDAL
    {
        public static bool CreateBook(Book book)
        {
            try
            {
                SQLiteConnection conn = new SQLiteConnection("Data Source=db/Books.sqlite;");
                conn.Open();
                SQLiteCommand cmd = conn.CreateCommand();
                cmd.CommandText = "INSERT INTO Book(ID, BookName, Price, Rowguid) VALUES(@ID1, @BookName1, @Price1, @Rowguid1)";
                cmd.Parameters.Add(new SQLiteParameter("ID1", book.ID));
                cmd.Parameters.Add(new SQLiteParameter("BookName1", book.BookName));
                cmd.Parameters.Add(new SQLiteParameter("Price1", book.Price));
                cmd.Parameters.Add(new SQLiteParameter("Rowguid1", book.Rowguid));

                int i = cmd.ExecuteNonQuery();
                return i == 1;
            }
            catch (SQLiteException se)
            {
                MessageBox.Show(se.Message + " \n\n" + se.Source + "\n\n" + se.StackTrace + "\n\n" + se.Data);
                return false;
            }
            catch (ArgumentException ae)
            {
                MessageBox.Show(ae.Message + " \n\n" + ae.Source + "\n\n" + ae.StackTrace + "\n\n" + ae.Data);
                return false;
            }
            catch (Exception ex)
            {
                //Do any logging operation here if necessary
                MessageBox.Show(ex.Message + "\n\n" + ex.Source + "\n\n" + ex.StackTrace + "\n\n" + ex.Data);
                return false;
            }            
        }

        public static bool UpdateBookByID(Book book)
        {
            try
            {
                using (SQLiteConnection conn = new SQLiteConnection("Data Source=db/Books.sqlite;"))
                {
                    conn.Open();
                    SQLiteCommand cmd = conn.CreateCommand();
                    cmd.CommandText = "update Book set BookName=@BookName1,Price=@Price1, Rowguid=@Rowguid1 where ID=@ID1;";
                    cmd.Parameters.Add(new SQLiteParameter("ID1", book.ID));
                    cmd.Parameters.Add(new SQLiteParameter("BookName1", book.BookName));
                    cmd.Parameters.Add(new SQLiteParameter("Price1", book.Price));
                    cmd.Parameters.Add(new SQLiteParameter("Rowguid1", book.Rowguid));
                    int i = cmd.ExecuteNonQuery();
                    return i == 1;
                }
            }
            catch (ArgumentException ae)
            {
                MessageBox.Show(ae.Message + " \n\n" + ae.Source + "\n\n" + ae.StackTrace);
                return false;
            }
            catch (Exception ex)
            {
                //Do any logging operation here if necessary
                MessageBox.Show(ex.Message);
                return false;
            }
        }

        public static bool UpdateBookByGuid(Book book)
        {
            try
            {
                using (SQLiteConnection conn = new SQLiteConnection("Data Source=db/Books.sqlite;"))
                {
                    conn.Open();
                    SQLiteCommand cmd = conn.CreateCommand();
                    cmd.CommandText = "update Book set ID=@ID1,BookName=@BookName1,Price=@Price1 where Rowguid=@Rowguid1;";
                    cmd.Parameters.Add(new SQLiteParameter("ID1", book.ID));
                    cmd.Parameters.Add(new SQLiteParameter("BookName1", book.BookName));
                    cmd.Parameters.Add(new SQLiteParameter("Price1", book.Price));
                    cmd.Parameters.Add(new SQLiteParameter("Rowguid1", book.Rowguid));
                    int i = cmd.ExecuteNonQuery();
                    return i == 1;
                }
            }
            catch (ArgumentException ae)
            {
                MessageBox.Show(ae.Message + " \n\n" + ae.Source + "\n\n" + ae.StackTrace);
                return false;
            }
            catch (Exception ex)
            {
                //Do any logging operation here if necessary
                MessageBox.Show(ex.Message);
                return false;
            }
        }

        public static bool DeleteBook(int ID)
        {
            try
            {
                using (SQLiteConnection conn = new SQLiteConnection("Data Source=db/Books.sqlite;"))
                {
                    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 (ArgumentException ae)
            {
                MessageBox.Show(ae.Message + " \n\n" + ae.Source + "\n\n" + ae.StackTrace);
                return false;
            }
            catch (Exception ex)
            {
                //Do any logging operation here if necessary
                MessageBox.Show(ex.Message);
                return false;
            }
        }

        public static Book GetBookByID(int ID)
        {
            try
            {
                using (SQLiteConnection conn = new SQLiteConnection("Data Source=db/Books.sqlite;"))
                {
                    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 (ArgumentException ae)
            {
                MessageBox.Show(ae.Message + " \n\n" + ae.Source + "\n\n" + ae.StackTrace);
                return null;
            }
            catch (Exception ex)
            {
                //Do any logging operation here if necessary
                throw new Exception(ex.Message);
            }
        }

        public static DataTable GetAllBook()
        {
            DataTable dt = new DataTable();
            try
            {
                SQLiteConnection conn = new SQLiteConnection("Data Source=db/Books.sqlite;");
                conn.Open();
                SQLiteCommand cmd = new SQLiteCommand(conn);
                cmd.CommandText = "SELECT * FROM Book";
                cmd.CommandType = CommandType.Text;
                //Console.WriteLine(cmd.CommandText);
                SQLiteDataReader dr = cmd.ExecuteReader();
                if (dr.HasRows)
                {
                    dt.Load(dr);
                }
                else {
                    //throw new NullReferenceException("No Record Available.");
                }

                dr.Close();
                conn.Close();
                                
            }
            catch (ArgumentException ae)
            {
                MessageBox.Show(ae.Message + " \n\n" + ae.Source + "\n\n" + ae.StackTrace + "\n\n" + ae.Data);
            }
            catch (Exception ex)
            {
                //throw new Exception(ex.Message);
                MessageBox.Show(ex.Message + " \n\n" + ex.Source + "\n\n" + ex.StackTrace + "\n\n" + ex.Data);
            }

            return dt;
        }
    }
    

 

posted @ 2015-08-26 16:17  冰雪一舟  阅读(222)  评论(0编辑  收藏  举报