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(“\n”)
            .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[] { 
‘\t’ });

        
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);

    原文作者:sqlite
    原文地址: https://www.cnblogs.com/qufly/p/3532243.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞