Я загрузил 83 строки из моего CSV-файла, но когда я пытаюсь обновить базу данных SQLite, я получаю 0 строк ... Я не могу понять, что я делаю неправильно.
Программа выводит:
Num rows loaded is 83
Num rows updated is 0
Исходный код:
public void InsertData(String csvFileName, String tableName)
{
String dir = Path.GetDirectoryName(csvFileName);
String name = Path.GetFileName(csvFileName);
using (OleDbConnection conn =
new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
dir + @";Extended Properties=""Text;HDR=Yes;FMT=Delimited"""))
{
conn.Open();
using (OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM " + name, conn))
{
QuoteDataSet ds = new QuoteDataSet();
adapter.Fill(ds, tableName);
Console.WriteLine("Num rows loaded is " + ds.Tags.Rows.Count);
InsertData(ds, tableName);
}
}
}
public void InsertData(QuoteDataSet data, String tableName)
{
using (SQLiteConnection conn = new SQLiteConnection(_connectionString))
{
using (SQLiteDataAdapter sqliteAdapter = new SQLiteDataAdapter("SELECT * FROM " + tableName, conn))
{
using (new SQLiteCommandBuilder(sqliteAdapter))
{
conn.Open();
Console.WriteLine("Num rows updated is " + sqliteAdapter.Update(data, tableName));
}
}
}
}
Любые подсказки, почему он не обновляет правильное количество строк?
Обновление:
Я пытался установить команду перед вызовом update, и у меня все еще возникает та же проблема ... код теперь:
sqliteAdapter.InsertCommand = cmndBldr.GetInsertCommand();
Console.WriteLine("Num rows updated is " + sqliteAdapter.Update(data, tableName));
Когда я отлаживаю его, текст команды: _commandText = "INSERT INTO [Tags] ([tagId], [tagName], [description], [colName], [dataType], [realTime]) VALUES (@param1, @param2, @param3, @param4, @param5, @param6)"
Вот пример, показывающий состояние набора данных в формате xml: http://pastie.org/936882