• 在asp.net web 程序中使用Sqlite数据库


    本文介绍了如何在asp.net web 程序中使用Sqlite嵌入式数据库,sqlite数据库可以作为文件放在站点的APP_DATA目录下,适合小网站使用,使用它不需要买sql server空间,而且据说它的性能很不错。

    Sqlite是嵌入数据库,类似与MS Sql Server Compact,之所以不用Sql server compact是因为它既不支持SELECT TOP也不支持ROW_NUMBER()还不支持LIMIT,也就是我没有办法用它分页了,取数据的时候必须根据条件取,不能在给定条件下取n条。

    1. 安装Sqlite数据库,sqlite数据库非常方便,他的安装只有一个exe文件,可以下载

    下载可执行文件之后使用命令“sqlite3 dbname”执行就可以创建数据库。

    或者为了开发方便下载Sqlite Developer软件,使用软件创建也有方便。下载链接

    2. 安装dot net下的Sqlite数据库驱动,其实就是一个dll,System.Data.SQLite,他是一个开源项目,可以到SourceForge上下载

    3. 在VS中建立一个Web Application,并引用2中的dll

    4. 在default.aspx的cs文件中实现访问Sqlite的代码,代码和注释如下:

    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Data.SQLite;

    namespace SqliteWebApp
    {
        
    public partial class _Default : System.Web.UI.Page
        
    {
            
    protected void Page_Load(object sender, EventArgs e)
            
    {
                
    //这个文件是预先生成的数据库文件
                string sqliteFilePath = Server.MapPath("~/App_Data/firstsqlite.db");
                DataSet ds 
    = new DataSet();
                
    //声明一个Sqlite数据库的链接
                using (SQLiteConnection conn = new SQLiteConnection("Data Source=" + sqliteFilePath))
                
    {
                    
    //创建sqlite命令
                    using (SQLiteCommand comm = conn.CreateCommand())
                    
    {
                        
    //打开数据库链接
                        conn.Open();
                        
    //插入数据
                        comm.CommandText = "INSERT INTO [t] VALUES(10,'Hello 9')";
                        comm.ExecuteNonQuery();

                        
    //更新数据
                        comm.CommandText = "UPDATE [t] SET name = 'Hello 10' WHERE id = 10";
                        comm.ExecuteNonQuery();

                        
    //使用参数插入数据
                        comm.CommandText = "INSERT INTO [t] VALUES(@id,@name)";
                        comm.Parameters.AddRange(
                            
    new SQLiteParameter[]{
                            CreateSqliteParameter(
    "@id",DbType.Int32,4,11),
                            CreateSqliteParameter(
    "@name",DbType.String,10,"Hello 11")
                            }
    );
                        comm.ExecuteNonQuery();

                        comm.Parameters.Clear();
                        
    //select数据分页用limit就行,很方便
                        comm.CommandText = "Select * From MAIN.[t]";
                        
    using (SQLiteDataAdapter adapter = new SQLiteDataAdapter(comm))
                        
    {
                            adapter.Fill(ds);
                        }

                    }

                }


                gv1.DataSource 
    = ds;
                gv1.DataBind();
            }


            
    /// <summary>
            
    /// 放回一个SQLiteParameter
            
    /// </summary>
            
    /// <param name="name">参数名字</param>
            
    /// <param name="type">参数类型</param>
            
    /// <param name="size">参数大小</param>
            
    /// <param name="value">参数值</param>
            
    /// <returns>SQLiteParameter的值</returns>

            static private SQLiteParameter CreateSqliteParameter(string name,DbType type,int size,object value)
            
    {
                SQLiteParameter parm 
    = new SQLiteParameter(name,type, size);
                parm.Value 
    = value;
                
    return parm;
            }

        }

    }

    最后希望的MS Sql Server Compact可以做一些改进,让我们可以舒服的使用。

  • 相关阅读:
    node 父子进程传递对象
    js 按照字母进行分组
    native react 代码智能提示
    VScode 使用emmet
    c# webapi swagger
    c# 前台和后台线程
    Java——字节和字符的区别
    Java——类的访问修饰符
    Java——面向对象
    Java——内存中的数组
  • 原文地址:https://www.cnblogs.com/naoguazi/p/1769834.html
Copyright © 2020-2023  润新知