近日有需要写点C#程序,有用到Dataset数据集和SQLite数据库,由于我从来就不擅长记各种编程语言的语法,所以在查阅一堆资料后,留下以下内容备忘: 一、SQLite操作,直接贴代码,很简单
2016-10-09 13:48
603 查看
近日有需要写点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.SQLiteConnectionStringBu ilder
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操作,直接贴代码,很简单:
//创建一个数据库文件
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.SQLiteConnectionStringBu ilder
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);
相关文章推荐
- 近日有需要写点C#程序,有用到Dataset数据集和SQLite数据库,由于我从来就不擅长记各种编程语言的语法,所以在查阅一堆资料后,留下以下内容备忘:
- 在看官方的例子时候由一个grid实例,在每一行之前有个加号,展开可以显示内容,在实际应用中还是非常有用的,照搬例子的代码,发现老是提示对象不存在,查阅资料后发现是没有加载插件,这里和大家分享下Ext.grid.RowExpander插件的使用,
- 前几天用VC++,获取SQL中的内容并保存,由于不是很熟悉,走了很多弯路,现在总结哈,希望能给需要的人一些帮助。 直接贴代码。
- C#操作Dataset数据集与SQLite数据库
- C#操作Dataset数据集与SQLite数据库
- 由于我的BoBo日志需要天气内容,所以在这里留个脚印。
- SQLServerToSQLite 程序代码的分析翻译及学习(二、根据数据库描述对象创建SQLite数据库)
- 综述:本专栏将介绍以下内容(专栏:Java代码操作word、excel、pdf等文件)
- C#操作Dataset数据集与SQLite数据库
- SQL0668N 由于表 "db2inst1.test" 上的原因代码 "3",所以不允许操作(解因为LOAD引起的LOAD暂挂状态锁)
- 开源:我的Android新闻客户端,速度快、体积小、支持离线阅读、操作简便、内容展现形式丰富多样、信息量大、功能全面 等(要代码的留下邮箱)
- [Sqlite]-->Java使用jdbc连接Sqlite数据库进行各种数据操作的详细过程
- 突然想要做个新闻内容的分页,网上查了下资料,找到了一个可以用的类(代码需要自己研究下,我已经试验成功了)
- SQL0668N 由于表 "db2inst1.test" 上的原因代码 "3",所以不允许操作(解因为LOAD引起的LOAD暂挂状态锁)
- C#操作Dataset数据集与SQLite数据库
- 开源:我的Android新闻客户端,速度快、体积小、支持离线阅读、操作简便、内容展现形式丰富多样、信息量大、功能全面 等(要代码的留下邮箱)
- double由于是双精度,所以比较大小不能直接用>,<或者=,需要使用BigDecimal,具体看例子
- iOS 中 当程序进入后台 但是程序员希望在程序进入后台的时候还可以运行一段代码时候可以做以下的操作
- 由于最近网站内容需要更新的还是满多的,于是想开发一个采集系统。收集了一下资料。
- C#操作Dataset数据集与SQLite数据库