C# 如何在c中用列表值填充SQlite列#
背景: 这里没有——不管怎样,我正在构建一个c#forms应用程序,它可以解析文本文件中的数据。我已将纺织品数据存储在列表中 问题: 我不知道如何用这些数据填充sqlite表。如何将列表数据传输到sqlite表中的列中 SQlite代码: (以下摘自finisar) 这就是我想要将列表数据传输到sqlite表的地方: sqlite_cmd.CommandText=“插入测试(id,文本)值(1,'测试文本1');” 我不知道具体在哪里,或者如何在这里实现foreach循环语法C# 如何在c中用列表值填充SQlite列#,c#,sqlite,list,C#,Sqlite,List,背景: 这里没有——不管怎样,我正在构建一个c#forms应用程序,它可以解析文本文件中的数据。我已将纺织品数据存储在列表中 问题: 我不知道如何用这些数据填充sqlite表。如何将列表数据传输到sqlite表中的列中 SQlite代码: (以下摘自finisar) 这就是我想要将列表数据传输到sqlite表的地方: sqlite_cmd.CommandText=“插入测试(id,文本)值(1,'测试文本1');” 我不知道具体在哪里,或者如何在这里实现foreach循环语法 感谢您上面的代码,
感谢您上面的代码,您可能会注意到以下部分重复:
sqlite_cmd.CommandText = "INSERT INTO test (id, text) VALUES (..., ...);";
sqlite_cmd.ExecuteNonQuery();
所以,在这里,你必须使用一个循环
根据您阅读文本的方式,必须使用适当的循环
这是一个使用TextReader
的示例:
using (StreamReader reader = File.OpenText("somefile.txt")) {
//Use a transaction: you should do bulk inserts inside transactions
DbTransaction tr = sqlite_conn.BeginTransaction();
//Create a command once.
DbCommand cmd = sqlite_conn.CreateCommand();
//Assign SQL with parameters (?)
cmd.CommandText = "INSERT INTO test (id, text) VALUES (?, ?);"
string line;
int line_num;
//Read all lines from file
for (line_num=0; (line = reader.ReadLine()) != null; ++line_num) {
//For each line, assign correct parameters
cmd.Parameters(0).Value=line_num;
cmd.Parameters(1).Value=line;
//Send command to database
cmd.ExecuteNonQuery();
}
//Commit - only at this point data is written to database
tr.Commit();
}
您应该使用参数并重用相同的命令。您应该在哪里使用foreach???是不是很明显?就像我说的,这里没有,所以不明显。我想我应该使用foreach将列表值不断输入到sql表中。
using (StreamReader reader = File.OpenText("somefile.txt")) {
//Use a transaction: you should do bulk inserts inside transactions
DbTransaction tr = sqlite_conn.BeginTransaction();
//Create a command once.
DbCommand cmd = sqlite_conn.CreateCommand();
//Assign SQL with parameters (?)
cmd.CommandText = "INSERT INTO test (id, text) VALUES (?, ?);"
string line;
int line_num;
//Read all lines from file
for (line_num=0; (line = reader.ReadLine()) != null; ++line_num) {
//For each line, assign correct parameters
cmd.Parameters(0).Value=line_num;
cmd.Parameters(1).Value=line;
//Send command to database
cmd.ExecuteNonQuery();
}
//Commit - only at this point data is written to database
tr.Commit();
}