我正在尝试从userDataTbl
用户名(在我的 MySQL 数据库中)调用的用户表中获取用户 ID 。但是,当我运行下面的代码时,它一直返回 -1,结果参数一直为 -1,就好像它没有找到用户一样。
我还使用了下面的方法来检查表中是否已经存在用户名 - 然后我只是检查结果是否大于 0 以返回它存在,否则它不存在,但它没有即使我在表中输入了确实存在的名称,也不会在那里工作,结果仍然是 -1。我试过调试,但它没有告诉我太多,因为它并没有真正向我显示计算机在查询中做了什么,所以我会知道它有什么问题。这是代码:
//returns a user id according to a name
public int theId(string name)
{
SqlCommand command2 = new SqlCommand("Select userId from dbo.userDataTbl where userName=@username", this.connection);
command2.Parameters.AddWithValue("@username", name);
int result = command2.ExecuteNonQuery();
if (result > 0)
{
SqlDataReader reader = command2.ExecuteReader();
reader.Read(); // we have only 1 row
try
{
string foundId = String.Format("{0}", reader["userId"]);
int id = Convert.ToInt32(foundId);
return id;
}
catch
{
return 0;
}
}
else
{
return -1;
}
}
我将非常感谢任何帮助,这对我来说真的很重要。
基于MSDN:
对于 UPDATE、INSERT 和 DELETE 语句,返回值是受命令影响的行数。当插入或更新的表上存在触发器时,返回值包括受插入或更新操作影响的行数以及受触发器影响的行数。对于所有其他类型的语句,返回值为 -1。如果发生回滚,则返回值也是 -1。
如果您想获取受SELECT
命令影响的行数并将其保存到 int 变量中,您可以使用Count
and ExecuteScalar
:
"SELECT COUNT(userId)..."
var result = (int)command2.ExecuteScalar();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句