c# sqlite 求教 批量插入

bs897945043 2012-03-27 09:23:24
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Data;
using System.Data.Common;
using System.Data.SQLite;

namespace ConsoleApplication2
{
class Program
{

static void Main(string[] args)
{
System.Data.SQLite.SQLiteConnection.CreateFile("datasource");
string datasource = "D:/test.db"; System.Data.SQLite.SQLiteConnection.CreateFile(datasource);

string connectionString = @"Server=localhost;Database=Northwind;Trusted_Connection=true";

System.Data.SQLite.SQLiteConnectionStringBuilder connstr = new System.Data.SQLite.SQLiteConnectionStringBuilder();

connstr.DataSource = datasource;


using (System.Data.SQLite.SQLiteConnection conn = new System.Data.SQLite.SQLiteConnection(connectionString))
{

conn.ConnectionString = connstr.ToString();
conn.Open();
System.Data.SQLite.SQLiteCommand cmd = new System.Data.SQLite.SQLiteCommand();

string sql = "CREATE TABLE test(devid int,data_time int,data_value int)";
cmd.Connection = conn;

cmd.CommandText = sql;
cmd.ExecuteNonQuery();

System.Data.SQLite.SQLiteDataAdapter sd = new System.Data.SQLite.SQLiteDataAdapter();
sd.SelectCommand = new System.Data.SQLite.SQLiteCommand("select devid,data_time,data_value from Test", conn);
sd.InsertCommand = new System.Data.SQLite.SQLiteCommand("insert into Test (devid,data_time,data_value) "
+ " values (@devid,@data_time,@data_value);", conn);

sd.InsertCommand.UpdatedRowSource = UpdateRowSource.None;
DataSet dataset = new DataSet();
sd.Fill(dataset);

for (int i = 0; i < 100000; i++)
{
Random r = new Random(1000);
object[] row = { i, r.Next(1, 1000), r.Next(1, 1000) };
dataset.Tables[0].Rows.Add(row);
try
{
if (i % 300 == 0)
{
sd.Update(dataset.Tables[0]);
dataset.Tables[0].Clear();
}
}
catch (Exception )
{ }
}
sd.Update(dataset.Tables[0]);
dataset.Tables[0].Clear();
sd.Dispose();
dataset.Dispose();
conn.Close();


}

}
}
}
就这个,错误语句:sd.Update(dataset.Tables[0]);原因SQLite error;Insufficient parameters supplied to the command 新手,详细点
不要用参数,目的是可以快速插入大量数据到表中,有一些没读懂瞎写的,看在我就接触两个星期的份上,不要喷
...全文
424 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
孟子E章 2012-03-27
  • 打赏
  • 举报
回复
你设置了参数
sd.InsertCommand = new System.Data.SQLite.SQLiteCommand("insert into Test (devid,data_time,data_value) "
+ " values (@devid,@data_time,@data_value);", conn);

但没有给他赋值吧 @devid等值呢
枫崖 2012-03-27
  • 打赏
  • 举报
回复
改用sqlcommand去实现更新应该就不会出错了,如果需要做一次性更新可以使用事务sqltransaction

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧