C#在Release中的ASP.NET中创建SQLite数据库导致数据库为空

时间:2019-03-14 00:29:13

标签: c# asp.net sqlite

我遇到一个奇怪的问题,在网络服务器上创建并填充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中提交数据。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我发现了问题。 / bin /目录中没有更新SQLite.Interop.dll。通过nuget更新后,我仍然有较旧的版本。