我遇到一个奇怪的问题,在网络服务器上创建并填充SQLite数据库后,下载后它完全为空。 这是我在做什么的摘要。
if (!System.IO.File.Exists(sqlitePath))
SQLiteConnection.CreateFile(sqlitePath);
else
{
File.Delete(sqlitePath);
SQLiteConnection.CreateFile(sqlitePath);
}
这是从文本文件加载的SQL语句:
CREATE TABLE "tblDriver" (
`Driver_KeyID` INTEGER NOT NULL,
`FirstName` TEXT NOT NULL,
`LastName` TEXT NOT NULL
PRIMARY KEY(`Driver_KeyID`)
)
并通过此方法执行
public void ExecuteSQLiteCommand(List<string> queries, string sqlitePath)
{
using (var conn = new SQLiteConnection(string.Format(@"Data Source={0};Version=3;", sqlitePath)))
{
try
{
conn.Open();
using (SQLiteTransaction transaction = conn.BeginTransaction())
{
foreach (var qry in queries)
{
SQLiteCommand cmd = new SQLiteCommand(qry, conn);
cmd.ExecuteNonQuery();
}
transaction.Commit();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
}
然后我用
填充数据库string driverInsertSQL = "INSERT INTO `tblDriver` (`Driver_KeyID`, `FirstName`, `LastName`) VALUES ";
var drivervalues = (from d in drivers.AsEnumerable()
select string.Format("({0}, '{1}', '{2}')",
int.Parse(d["KeyID"].ToString()),
d["FirstName"].ToString(),
d["LastName"].ToString()
)
);
foreach (var item in drivervalues)
{
driverList.Add(string.Format("{0}{1}", driverInsertSQL, item));
}
ExecuteSQLiteCommand(driverList, sqlitePath);
然后我下载文件。当我处于DEBUG状态时,数据库中将填充我的所有数据,但是当我处于RELEASE状态时,甚至没有表。 在具有完全相同的代码的控制台应用程序中,它将以DEBUG或RELEASE填充数据库。
即使我添加了SQLiteTransaction
段之后,似乎也没有在RELEASE中提交数据。
有什么想法吗?
答案 0 :(得分:1)
我发现了问题。
/ bin /目录中没有更新SQLite.Interop.dll
。通过nuget更新后,我仍然有较旧的版本。