• 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);
  • 相关阅读:
    天网管理系统
    NSCTF web200
    程序逻辑问题
    Once More
    Guess Next Session
    上传绕过
    加了料的报错注入
    C++ GET UTF-8网页编码转换
    Android学习笔记函数
    C++ 模拟虚拟键盘按键表
  • 原文地址:https://www.cnblogs.com/annkiny/p/5095172.html
Copyright © 2020-2023  润新知