我对C#有点新,对SQLite来说是全新的。对于这个项目来说,SQLite可能有些过分,但我想学习它,所以无论如何我都在使用它。我正在做一个不和谐机器人。问题是每当我执行我的唯一命令时它就会终止。我已经设法找到问题的根源,并在SQLite中找到一个命令,将数据插入一行。
m_dbConnection.Open();
string sql = $"INSERT INTO `Cases` ( plaintiffid, accusedid, channelid ) values ( {plaintiff.Id.ToString()}, {accused.Id.ToString()}, {caseChannel.Id.ToString()} )";
SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection);
command.ExecuteNonQuery();
m_dbConnection.Close();
每次启动程序时,它都会运行:
public static SQLiteConnection m_dbConnection { get; private set; }
public static string CasePath { get; } = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"/DiscourtBot/Cases.sqlite";
public static void Start()
{
if (!File.Exists("Cases.sqlite"))
{
SQLiteConnection.CreateFile("Cases.sqlite");
m_dbConnection = new SQLiteConnection("Data Source=Cases.sqlite;Version=3;");
m_dbConnection.Open();
string sql = "CREATE TABLE `Cases` ( plaintiffid INTEGER, accusedid INTEGER, channelid INTEGER UNIQUE )";
SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection);
command.ExecuteNonQuery();
m_dbConnection.Close();
}
else m_dbConnection = new SQLiteConnection("Data Source=Cases.sqlite;Version=3;");
}
不会抛出异常。
我在另一个程序中测试了一些代码,这段代码也导致它终止。
SQLiteConnection.CreateFile("Cases.sqlite");
m_dbConnection = new SQLiteConnection("Data Source=Cases.sqlite;Version=3;");
m_dbConnection.Open();
string sql = "CREATE TABLE `Cases` ( plaintiffid BIGINT, accusedid BIGINT, channelid BIGINT )";
SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection);
command.ExecuteNonQuery();
m_dbConnection.Close();
m_dbConnection.Open();
string sqll = $"INSERT INTO `Cases` ( plaintiffid, accusedid, channelid ) values ( 5, 5, 5 )";
SQLiteCommand commandd = new SQLiteCommand(sqll, m_dbConnection);
commandd.ExecuteNonQuery();
m_dbConnection.Close();
Discord ID通常如下所示:394343217715216384 如果有人能帮助我,我会很感激。
答案 0 :(得分:1)
经过一番混乱后,我发现我使用的API干扰了构造函数。我通过将INSERT INTO代码放在我调用构造函数的相同位置来解决问题。
我仍然不完全确定发生了什么,但现在已经解决了。