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

     近日有需要写点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);
  • 相关阅读:
    PAT 甲级 1027 Colors in Mars
    PAT 甲级 1026 Table Tennis(模拟)
    PAT 甲级 1025 PAT Ranking
    PAT 甲级 1024 Palindromic Number
    PAT 甲级 1023 Have Fun with Numbers
    PAT 甲级 1021 Deepest Root (并查集,树的遍历)
    Java实现 蓝桥杯VIP 算法训练 无权最长链
    Java实现 蓝桥杯VIP 算法训练 无权最长链
    Java实现 蓝桥杯 算法提高 抽卡游戏
    Java实现 蓝桥杯 算法提高 抽卡游戏
  • 原文地址:https://www.cnblogs.com/annkiny/p/5095172.html
Copyright © 2011-2022 走看看