C# sqlite

sqlite的安装:

http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki

找到对应的.NET版本,下载bundle版。

 项目中添加System.Data.SQLite引用。

创建数据库、创建表、连接数据库、增加数据、查询数据

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Data.SQLite;

namespace WpfApp1
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        SQLiteConnection dbConnection = null;

        public MainWindow()
        {
            InitializeComponent();

            //CreateDatabase();
            ConnectDatabase();
            //CreatTable();
            //InsertData();
            QueryData();
        }

        private void CreateDatabase()
        {
            string fileName = ".\\database\\testDB.db";
            SQLiteConnection.CreateFile(fileName);
        }

        private void ConnectDatabase()
        {
            string databaseFileName = ".\\database\\testDB.db";
            string connectionString = "data source = " + databaseFileName;
            this.dbConnection = new SQLiteConnection(connectionString);
            dbConnection.Open();
        }

        private void CreatTable()
        {
            string[] colNames = new string[] { "ID", "Name", "Age", "Email" };
            string[] colTypes = new string[] { "INTEGER", "TEXT", "INTEGER", "TEXT" };

            string tableName = "table1";

            string queryString = "CREATE TABLE IF NOT EXISTS " + tableName + "( " + colNames[0] + " " + colTypes[0];

            for (int i = 1; i < colNames.Length; i++)
            {
                queryString += ", " + colNames[i] + " " + colTypes[i];
            }
            queryString += "  ) ";
            SQLiteCommand dbCommand = this.dbConnection.CreateCommand();
            dbCommand.CommandText = queryString;
            SQLiteDataReader dataReader = dbCommand.ExecuteReader();
        }

        private void InsertData()
        {
            for (int i = 0; i < 100; i++)
            {
                string id = i.ToString();
                string name = i.ToString();
                string age = (i + 1).ToString();
                string email = (i + 1).ToString();

                string cmd = "INSERT INTO table1" + " (ID, Name, Age, Email) " + "VALUES" + " ('" + id + "', '" + name + "', '" + age + "', '" + email + "')";
                SQLiteCommand dbCommand = this.dbConnection.CreateCommand();
                dbCommand.CommandText = cmd;
                dbCommand.ExecuteNonQuery();
            }
        }

        private void QueryData()
        {
            string startIndex = 5.ToString();
            string endIndex = 100.ToString();
            string cmd = "SELECT * FROM table1 WHERE ID>=" + startIndex + " AND " + "ID<=" + endIndex;
            SQLiteCommand dbCommand = this.dbConnection.CreateCommand();
            dbCommand.CommandText = cmd;
            SQLiteDataReader reader = dbCommand.ExecuteReader();
            while (reader.Read())
            {
                Console.WriteLine(reader["Age"]);
            }
            
        }
    }
}

插入数据时判断表是否存在,若存在直接插入,若不存在则先生成表

public void InsertData()
{
    string date = DateTime.Now.ToString("yyyy_MM_dd");
    string tableName = "Data" + date;

    string[] databaseContent = new string[4];
    databaseContent[0] = "0";
    databaseContent[1] = "1";
    databaseContent[2] = "2";
    databaseContent[3] = "3";

    int res = InsertRun(databaseContent, tableName);

    if (res == 0)
    {
        SQLiteCommand creatTableCommand = this.dbConnection.CreateCommand();

        string[] colNames = new string[] { "ID", "Name", "Age", "Email" };
        string[] colTypes = new string[] { "TEXT", "TEXT", "TEXT", "TEXT" };

        string queryString = "CREATE TABLE IF NOT EXISTS " + tableName + "( " + colNames[0] + " " + colTypes[0];

        for (int i = 1; i < colNames.Length; i++)
        {
            queryString += ", " + colNames[i] + " " + colTypes[i];
        }
        queryString += "  ) ";

        creatTableCommand.CommandText = queryString;
        SQLiteDataReader dataReader = creatTableCommand.ExecuteReader();

        int res2 = InsertRun(databaseContent, tableName);
    }
}

public int InsertRun(string[] databaseContent, string tableName)
{
    string cmd = "INSERT INTO " + tableName + " (ID, Name, Age, Email) " + "VALUES" + " ('";
    for (int i = 0; i < databaseContent.Length - 1; i++)
    {
        cmd += databaseContent[i] + "', '";
    }
    cmd += databaseContent[databaseContent.Length - 1] + "')";

    SQLiteCommand dbCommand = this.dbConnection.CreateCommand();
    dbCommand.CommandText = cmd;
    int res = 0;
    try
    {
        res = dbCommand.ExecuteNonQuery();
    }
    catch(Exception ex)
    {
        Console.WriteLine(ex);
    }

    return res;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值