我目前正在为Twitch编写机器人,我们希望将设置存储在数据库中。
数据库本身是预先创建的,因此请求的所有列都在那里。
不知何故,当使用reader对象时,它会立即抛出IndexOutOfRangeException。我不知道导致此错误的原因。
public static void GetConfigFromDb()
{
try
{
SQLiteConnection conn = new SQLiteConnection("Data Source=OakSettings.sqlite;");
conn.Open();
string sql = "SELECT * FROM oak_settings";
SQLiteCommand command = new SQLiteCommand(sql, conn);
SQLiteDataReader reader = command.ExecuteReader();
while (reader.Read())
{
//StreamerOAuthKey = (string)reader["StreamerOAuthToken"];
//BotOAuthKey = (string)reader["BotOAuthToken"];
//StreamerUsername = (string)reader["StreamerTwitchUsername"];
//BotUsername = (string)reader["BotTwitchUsername"];
StreamerOAuthKey = reader.GetString(reader.GetOrdinal("StreamerOAuthToken"));
BotOAuthKey = reader.GetString(reader.GetOrdinal("BotOAuthToken"));
StreamerUsername = reader.GetString(reader.GetOrdinal("StreamerTwitchUsername"));
BotUsername = reader.GetString(reader.GetOrdinal("BotTwitchUsername"));
}
conn.Close();
}
catch (Exception ex)
{
System.Windows.MessageBox.Show(ex.ToString());
}
}
调用此方法的唯一方法是启动应用程序。被评论的部分是我以前做过的方式,但后来我改变了它,希望这会导致错误。
导致错误的原因是什么?