我一直在犯一些很糟糕的错误:d
public static List<tableName> GetUserStatus(IUser user)
{
var result = new List<tableName>();
var database = new Database("dibot");
var str = string.Format("SELECT * FROM dibott WHERE userid = '{0}'", user.Id);
var tableName = database.FireCommand(str);
while (tableName.Read())
{
var userId = (string)tableName["userid"];
var userName = (string)tableName["username"];
var currentTokens = (int)tableName["tokens"]; // Here
result.Add(new tableName
{
userid = userId,
username = userName,
tokens = currentTokens
});
}
database.CloseConnection();
return result;
}
在这个命令下
[Command("Status")]
[Alias("status", "s")]
public async Task Status([Remainder] IUser user = null)
{
var embed = new EmbedBuilder()
{
Color = new Color(0, 0, 255)
};
if (user == null)
{
user = Context.User;
}
var result = Database.CheckExistingUser(user); //Here
if (result.Count() <= 0)
{
Database.EnterUser(user);
}
var tableName = Database.GetUserStatus(user);
我什么都试过了请帮帮我。我试过很多东西。没有什么能帮助我寻求帮助,因为我的想法和在互联网上没有任何修复我把//看看哪里是错误。我希望我能很快得到帮助!:)
2条答案
按热度按时间dgsult0t1#
所以问题是:
var currentTokens = (string)tableName["tokens"];
mepcadol2#
因为你是在向
int
我假设它是一个数字列。如果你有
TINYINT
然后使用byte
,如果其未签名,则使用ubyte
如果你有SMALLINT
然后使用short
,或ushort
如果它是未签名的如果你有
MEDIUMINT/INT
然后使用int
或者uint
对于未签名如果你有
BIGINT
然后使用long
或者ulong
对于未签名最好的办法是做一个
tableName["tokens"].GetType()
.如果你不把它投到正确的类型,你会得到它
InvalidCast
例外编辑:
根据你的评论,这是
varchar
列,表示它是一个字符串。如果你想把它变成int,那么你需要或
如果是64位int
但以字符串格式存储数值,然后再对其进行解析,这确实是一个糟糕的设计。