zoukankan      html  css  js  c++  java
  • C#操作Dataset数据集与SQLite数据库

    一、SQLite操作,直接贴代码,很简单:

     //创建一个数据库文件
        string datasource=Application.StartupPath + "\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('dotnetthink','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("
    ")
                .Append("password:").Append(reader.GetString(1));
        }
        MessageBox.Show(sb.ToString());

    二、利用Dataset数据集向SQLite数据库插入数据,也直接贴代码:

    DialogResult dlgResult= openFileDialog1.ShowDialog();  // 打开要导入的文件
        if (openFileDialog1.FileName == "" || dlgResult != DialogResult.OK)
            return;
        // 利用StreamReader类读取文本内容
        StreamReader sr=new StreamReader
            (File.OpenRead(openFileDialog1.FileName),System.Text.Encoding.Default);
    
        //连接数据库
        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();
        //大量更新时采用事务的方式,先缓存事务,然后SQLiteDataAdapter.update后批量commit
        SQLiteTransaction ts = conn.BeginTransaction();
        string sql=" select name,number from test limit 1";
        SQLiteDataAdapter dta = new SQLiteDataAdapter(sql,conn);
        SQLiteCommandBuilder scb = new SQLiteCommandBuilder(dta);
        dta.InsertCommand=scb.GetInsertCommand();
        DataSet DS = new DataSet();
        dta.FillSchema(DS,SchemaType.Source, "Temp");    //加载表架构 注意
        dta.Fill(DS,"Temp");    //加载表数据
        DataTable DT = DS.Tables["Temp"];
    
        //插入数据
        while (!sr.EndOfStream)
        {
            string[] strArr = sr.ReadLine().Split(new Char[] { '	' });
            if (strArr[0] !="" && strArr[1] !="")
            {
                DataRow DR = DT.NewRow();
                DR[0]=strArr[0];
                DR[1]=strArr[1];
                DT.Rows.Add(DR);
            }
        }
        int result=dta.Update(DT);    // 如不用BeginTransaction和Commit批量提交事务,性能会很低,350条数据20多秒
        ts.Commit();    // 提交事务
        DS.AcceptChanges();
        // 释放资源
        dta.Dispose();
        DS.Clear();
        conn.Close();
        conn.Dispose();
        sr.Close();
        sr.Dispose();
        MessageBox.Show("成功导入了: " + result.ToString() + " 行数据。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  • 相关阅读:
    uva 557 Burger
    uva 1639 Candy (对数处理精度)
    uva 10288 Coupons (分数模板)
    uva 12230 Crossing Rivers
    [USACO5.4] Telecowmunication
    epoll讲解--转自知乎
    多线程ExecutorService中submit和execute区别
    google Guava包的ListenableFuture解析
    git commit 时出现:please enter the commit message for your changes
    Git常用命令
  • 原文地址:https://www.cnblogs.com/hilolin/p/9098351.html
Copyright © 2011-2022 走看看