【发布时间】:2017-05-05 00:11:13
【问题描述】:
我正在使用 Xamarin 中的 MySQL 库连接到我的数据库。我正在调用ExecuteScalar() 命令来检查我的数据库中是否存在用户。
我将 ExecuteScalar() 的返回值转换为 Int32 并存储在名为 userCount 的 Int32 变量中,但当我尝试调用 (int32)checkUser.ExecuteScalar(); 时,Visual Studio 会抛出 cast is not valid 错误
这就是documentation中建议的做法,所以我很困惑。这是我的代码:
using MySql.Data.MySqlClient;
using System.Data;
MySqlCommand checkUser = new MySqlCommand("SELECT COUNT(*) FROM <MyCoolDatabase> WHERE Userid = '" + username + "'", connection);
Int32 userCount = (Int32)checkUser.ExecuteScalar(); //error is here
if(userCount >0)
{
//do stuff
}
【问题讨论】:
-
您是否调试并看到
ExecuteScalar返回的类型? -
听起来它返回了一个空值,这就是演员失败的原因
-
你确定你没有返回 null 吗?顺便说一下,文档在这个链接dev.mysql.com/doc/connector-net/en/…
-
感谢您的建议,如果我现在返回 null,我将进行测试
-
Int32 userCount = (int)(long)checkUser.ExecuteScalar();MySql下的Count返回一个Int64。