• 初识SqlLite ---.net连接数据库


      Sqlite 是一款轻量级的关系型数据库,以小巧和嵌入式闻名。以前只是听说,现在终于忍不住要尝试下.本文的初衷是为.net平台的使用者提供帮助。

    Sqlite有专门为VS2010开发的程序包,大家可以到System.Data.SQLite Download Page 下去下载,注意是:This is the only setup package that is

    capable of installing the design-time components for Visual Studio 2010. 

    安装后,在VS2010中新建数数库链接就会看到有System.Data.SQLite的链接,在这里你可以创建和打开Sqlite数据库:

    在sqlite链接中,你可以为你的sqlite数据库设置密码和其他配置。确定后,会生成一个没有扩展名的数据文件。

    大家一般都了解到,sqlite数据文件是.db或.sqlite或其他扩展结尾,而用VS2010创建的sqlite数据库文件是没有扩展名的,并且其加密能力特别高,

    一般的sqlite程序在没密码的情况下,很难打开。

    用VS2010创建sqlite数据库后,就可以像操作sql server那样操作sqlite,如:建表,查询等都非常方便,感兴趣的可以尝试下,这里就不一一截图说明了。

    在项目,需要添加sqlite引用:System.Data.SQLite.dll和System.Data.SQLite.Linq.dll

    Sqlite数据库清理

    最后,说明下SQLite的一个不好的地方,当数据库中的一个或多个数据表存在大量的插入、更新和删除等操作时,将会有大量的磁盘空间被已删除的数据所占用,

    在没有执行VACUUM命令之前,SQLite并没有将它们归还于操作系统。

    由于该类数据表中的数据存储非常分散,因此在查询时,无法得到更好的批量IO读取效果,从而影响了查询效率。 

    在SQLite中,仅支持清理当前连接中的主数据库,而不能清理其它Attached数据库。VACUUM命令在完成数据清理时采用了和PostgreSQL相同的策略,即创建

    一个和当前数据库文件相同大小的新数据库文件,之后再将该数据库文件中的数据有组织的导入到新文件中,其中已经删除的数据块将不会被导入,在完成导入后,

    收缩新数据库文件的尺寸到适当的大小。可以使用VACUUM的方法对sqlite数据库进行清理:

    SQLiteConnection sqlconn = new SQLiteConnection(@"Data Source=C:cache;Version=3;Password=123");
                    sqlconn.Open();
                    SQLiteCommand sqlCom = sqlconn.CreateCommand();
                    sqlCom.CommandText = "VACUUM";
                    sqlCom.ExecuteNonQuery();

    好了,介绍了很多运行下面代码试试:

     string datasource = "D:/sqlLite/SQLite.NET/bin/Test.db3";
                System.Data.SQLite.SQLiteConnection.CreateFile(datasource);
                //连接数据库
                System.Data.SQLite.SQLiteConnection conn = new System.Data.SQLite.SQLiteConnection();
                System.Data.SQLite.SQLiteConnectionStringBuilder connstr = new System.Data.SQLite.SQLiteConnectionStringBuilder();
                connstr.DataSource = datasource;
                connstr.Password = "admin";//设置密码,SQLite ADO.NET实现了数据库密码保护
                conn.ConnectionString = connstr.ToString();
                conn.Open();
                //创建表
                System.Data.SQLite.SQLiteCommand cmd = new System.Data.SQLite.SQLiteCommand();
                string sql = "CREATE TABLE test(username varchar(20),password varchar(20))";
                cmd.CommandText = sql;
                cmd.Connection = conn;
                cmd.ExecuteNonQuery();
                //插入数据
                sql = "INSERT INTO test VALUES('a','b')";
                cmd.CommandText = sql;
                cmd.ExecuteNonQuery();
                //取出数据
                sql = "SELECT * FROM test";
                cmd.CommandText = sql;
                System.Data.SQLite.SQLiteDataReader reader = cmd.ExecuteReader();
                StringBuilder sb = new StringBuilder();
                while (reader.Read())
                {
                    sb.Append("username:").Append(reader.GetString(0)).Append("
    ")
                    .Append("password:").Append(reader.GetString(1));
                }
                Console.WriteLine(sb.ToString());
                Console.Read();

    点击运行,有可能会报错:

    原因是驱动版本问题,详细可见

    混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该...

    解决方法就是在app.config中加入

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

    因为我用的是控制台,所有要另外添加app.config文件

    好,在运行,成功:结果如下

    我有一个疑问,这个数据库文件我怎么生成,难道一直用这个Test.db3。问题先留着,有知道可以告诉我一下,因为是浅浅的尝试还有很多不知道。慢慢学,慢慢提高,我会一直将我的心得都写出来的

  • 相关阅读:
    手把手教你利用create-nuxt-app脚手架创建NuxtJS应用
    初识NuxtJS
    webpack打包Vue应用程序流程
    用选择器代替表格列的筛选功能
    Element-UI
    Spectral Bounds for Sparse PCA: Exact and Greedy Algorithms[贪婪算法选特征]
    Sparse Principal Component Analysis via Rotation and Truncation
    Generalized Power Method for Sparse Principal Component Analysis
    Sparse Principal Component Analysis via Regularized Low Rank Matrix Approximation(Adjusted Variance)
    Truncated Power Method for Sparse Eigenvalue Problems
  • 原文地址:https://www.cnblogs.com/smiler/p/3169272.html
Copyright © 2020-2023  润新知