加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

winform中读写SQLite数据库例子

发布时间:2020-12-12 20:22:29 所属栏目:百科 来源:网络整理
导读:App.config ?xml version="1.0"?configuration appSettings !--FailIfMissing=false表示数据库不存在时就会自动创建-- add key="DbSQLite" value="data source=|DataDirectory|DB.db3;Pooling=true;FailIfMissing=false"/ /appSettings/configuration 备注:

App.config

<?xml version="1.0"?>
<configuration>
  <appSettings>
    <!--FailIfMissing=false表示数据库不存在时就会自动创建-->
    <add key="DbSQLite" value="data source=|DataDirectory|DB.db3;Pooling=true;FailIfMissing=false"/>
  </appSettings>
</configuration>

备注:如果开发环境是4.0,而System.Data.Sqlite是比较低的版本,则可能会弹出错误信息“混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集”,解决方法是在上面加上:

<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>

</startup>


数据库读写助手SqliteHelper.cs

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


public class SqliteHelper
{
    public SqliteHelper()
    {
        //
        //TODO: 在此处添加构造函数逻辑
        //
    }

    private static SQLiteConnection GetConnection()
    {
        string connStr = System.Configuration.ConfigurationManager.AppSettings["DbSQLite"].ToString(); 
        SQLiteConnection conn = new SQLiteConnection(connStr);
        conn.Open();
        return conn;
    }

    public static int ExecuteSql(string sql)
    {
        using (SQLiteConnection conn = GetConnection())
        {
            var cmd = new SQLiteCommand(sql,conn);
            return cmd.ExecuteNonQuery();
        }
    }

    public static int ExecuteScalar(string sql)
    {
        using (SQLiteConnection conn = GetConnection())
        {
            var cmd = new SQLiteCommand(sql,conn);
            object o = cmd.ExecuteScalar();
            return int.Parse(o.ToString());
        }
    }
    public static SQLiteDataReader ExecuteReader(string sql)
    {
        SQLiteConnection conn = GetConnection();
        var cmd = new SQLiteCommand(sql,conn);
        SQLiteDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
        return myReader;
    }
    public static DataSet ExecDataSet(string sql)
    {
        using (SQLiteConnection conn = GetConnection())
        {
            var cmd = new SQLiteCommand(sql,conn);
            SQLiteDataAdapter da = new SQLiteDataAdapter(cmd);
            DataSet ds = new DataSet();
            da.Fill(ds);

            return ds;
        }
    }
}

窗体中应用Form1.cs

             //判断表是否存在,不存在则生成
            int result = SqliteHelper.ExecuteScalar("SELECT COUNT(*) FROM sqlite_master where type='table' and name='tb'");
            if (result == 0)
            {
                //创建表
                SqliteHelper.ExecuteSql("create table [tb] (id integer PRIMARY KEY autoincrement,[name] varchar(20),[createDate] datetime default (datetime('now','localtime')))");
            }
            //插入一行数据
            result = SqliteHelper.ExecuteSql("insert into [tb](name) values ('Luck')");
            if(result > 0)
            {
                string msg = "";
                //读取数据
                SQLiteDataReader dr = SqliteHelper.ExecuteReader("select * from [tb]");
                if (dr.Read())
                {
                    msg += dr[0] + "," + dr[1] + "," + dr[2];
                }
                MessageBox.Show(msg);
            }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读