• Sqlite在C#中的应用(转)


    在 .NET 里面使用 SQLite, 我这里使用的wrapper是 System.Data.SQLite,它只需要一个dll,接口符合ADO.Net 2.0的定义,性能也不错,NHibernate用的也是它,目前支持ADO.NET 3.5了,支持集成在 VS2005 和 VS2008里面,而且支持wince,是个亮点

    因为符合ADO.NET的规范,所以使用方式,基本和 SqlClient, OleDb等原生的一致

    using System.Data; 
    using System.Data.SQLite; 
    //...

    using (SQLiteConnection cn = new SQLiteConnection( 
        "Data Source=Test.db3;Pooling=true;FailIfMissing=false") 
        )

    //Pooling设置为true时,SQL连接将从连接池获得,如果没有则新建并添加到连接池中,默认是true。
    //FailIfMissing默认为false,如果数据库文件不存在,会自动创建一个新的,若设置为true,将不会创建,而是抛出异常信息。



        //在打开数据库时,会判断数据库是否存在,如果不存在,则在当前目录下创建一个 
        cn.Open();

        using (SQLiteCommand cmd = new SQLiteCommand()) 
        { 
            cmd.Connection = cn;

            //建立表,如果表已经存在,则报错 
            cmd.CommandText = "CREATE TABLE [test] (id int, name nvarchar(20))"; 
            cmd.ExecuteNonQuery();

            //插入测试数据 
            for (int i = 2; i < 5; i++) 
            { 
                cmd.CommandText = string.Format("INSERT INTO [test] VALUES ({0}, '杜思波技术讨论区域')", i); 
                cmd.ExecuteNonQuery(); 
            }

            for (int i = 5; i < 10; i++) 
            { 
                cmd.CommandText = string.Format("INSERT INTO [test] VALUES ({0}, 'English Test')", i); 
                cmd.ExecuteNonQuery(); 
            }

            //读取数据 
            cmd.CommandText = "SELECT * FROM [test]"; 
            using (SQLiteDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)) 
            { 
                while (dr.Read()) 
                { 
                    Console.WriteLine("第{0} 条:{1}", dr.GetValue(0), dr.GetString(1)); 
                } 
            } 
        } 
    }

    在C#中使用SQLite


    1、通过Add References引用SQLite ADO .NET安装目录的bin目录下的System.Data.SQLite.DLL。

    2、创建数据库文件:因为始终是个0字节文件,应该利用IO也可以(?!)。

    System.Data.SQLite.SQLiteConnection.CreateFile(datasource);

    3、连接数据库

    System.Data.SQLite.SQLiteConnection conn = new System.Data.SQLite.SQLiteConnection(connectionString);

    connectionString中包含了数据库的一些配置信息,比如数据库文件,数据库打开的密码等,可以利用System.Data.SQLite.SQLiteConnectionStringBuilder来辅助创建connectionString

    4、创建表、读取数据等和Access或MS SQL没多大区别了

     
                //创建一个数据库文件
                string datasource="h:/test.db";
                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('ekinglong','mypassword')";
                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("\n")
                    .Append(
    "password:").Append(reader.GetString(1));
                }

                MessageBox.Show(sb.ToString());

  • 相关阅读:
    IE6,7,8在boostrap中兼容h5和css3
    Bootstrap表格类名及对应图形
    兼容低于IE9不支持html5标签的元素的方法
    transition与animation的区别
    position与offset的区别
    天坑之mysql乱码问题以及mysql重启出现1067的错误解决
    如何远程连接Windows server上的MySQL服务
    mysql如何让自增id从1开始设置方法
    mybatis association嵌套association的两级嵌套问题
    @Param注解在dao层的使用
  • 原文地址:https://www.cnblogs.com/Daywei/p/2009725.html
Copyright © 2020-2023  润新知