Sqlite插入覆盖记录

时间:2014-12-02 00:56:01

标签: c# sqlite

我正在尝试创建一个.NET应用程序,它将信息存储在SQLite文件中。我遇到的问题是执行SQL命令后,只有一条记录可见,就像当前行被覆盖一样。

创建表:

bool pathExist = Directory.Exists(appdataPath + "OnCallDB.sqlite");

if (!pathExist)
{
    SQLiteConnection.CreateFile(appdataPath + "OnCallDB.sqlite");
    SQLiteConnection dbNewConnection = new SQLiteConnection("Data Source=" + appdataPath + "OnCallDB.sqlite;Version=3;");
    dbNewConnection.Open();
    string sqlTableCreation = "CREATE TABLE Calls (Id Integer PRIMARY KEY, name varchar(30), ticket varchar(20), phone varchar(20), day varchar(20), start_time varchar(20), end_time varchar(20), raw_time varchar(20), weighted_time varchar(20), date DATETIME, notes varchar(255))";
    SQLiteCommand command = new SQLiteCommand(sqlTableCreation, dbNewConnection);
    command.ExecuteNonQuery();
    dbNewConnection.Close();
}

插入声明:

SQLiteCommand insertCommand = new SQLiteCommand("INSERT INTO Calls ([name], [ticket], [phone], [day], [start_time], [end_time], [raw_time], [weighted_time], [date], [notes])"+
    "VALUES(@name, @ticket, @phone, @day, @start_time, @end_time, @raw_time, @weighted_time, @date, @notes)",connection);

insertCommand.Parameters.AddWithValue("@name", name);
insertCommand.Parameters.AddWithValue("@ticket", ticket);
insertCommand.Parameters.AddWithValue("@phone", phone);
insertCommand.Parameters.AddWithValue("@day", day);
insertCommand.Parameters.AddWithValue("@start_time", start_time);
insertCommand.Parameters.AddWithValue("@end_time", end_time);
insertCommand.Parameters.AddWithValue("@raw_time", raw_time);
insertCommand.Parameters.AddWithValue("@weighted_time", weighted_time);
insertCommand.Parameters.AddWithValue("@date", date);
insertCommand.Parameters.AddWithValue("@notes", notes);

try
{
    connection.Open();
    insertCommand.ExecuteNonQuery();
    connection.Close();
}
catch(Exception ex)
{
    throw new Exception(ex.Message);
}

我已将命令手动运行到SQL文件并插入新行。当我运行上面的SQLite命令时,它将替换该行。据我所知。我查看了文件创建日期和时间,看来文件只是被修改而不是替换。

1 个答案:

答案 0 :(得分:1)

问题不在于SQL语句。问题在于如何创建文件