将nvarchar值转换为数据类型int时转换失败

皮肤

我在代码隐藏中收到转换失败的错误。我的代码如下:

using (SqlCommand cmd = new SqlCommand((tempUsertype == "0" ? "Select * from tbl_students" : "Select * from tbl_students where Id in (Select Id from tbl_students where NgoId=@NgoId)"), conn))
{
    cmd.Parameters.AddWithValue("@NgoId", Convert.ToString(Session["User"]));
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    DataSet ds = new DataSet();
    da.Fill(ds);
    ddlStudent.DataValueField = ds.Tables[0].Columns["Id"].ToString();
    ddlStudent.DataTextField = ds.Tables[0].Columns["first_name"].ToString();
    ddlStudent.DataSource = ds.Tables[0];
    ddlStudent.SelectedIndex = 0;

    if (Session["UserType"] == "1" || Session["UserType"] == "2")
    {
        ddlStudent.Enabled = false;
    }
    else
    {
        ddlStudent.Items.Insert(0, new ListItem() { Text = "--Select NGO--", Value = "0" });
        ddlStudent.Enabled = true;
    }
}

我收到以下错误:

将nvarchar值转换为数据类型int时,转换失败。

在这里必须进行哪些更改?

蒂姆·施密特(Tim Schmelter)

我想这NgoId是一个整数,但您正在分配一个字符串。因此,这可能会解决它:

var p = new SqlParameter("@NgoId", SqlDbType.int).Value = int.Parse(Convert.ToString(Session["User"]));
cmd.Parameters.Add(p);

编辑:由于您已评论该会话存储了用户名,但该NgoId列是一个int列,因此您有三个选择:

  1. 更改会话以存储用户标识int而不是名称
  2. 更改列以存储用户名
  3. 从存储用户名的表中选择用户ID。

我宁愿选择第一个还是最后一个选项。

如果您还喜欢最后一种方法,则可以使用此方法:

string sql = "Select * from tbl_students";
if(tempUsertype != "0")
{
    sql = @"Select s.* 
            from tbl_students s 
            where s.NgoId in (Select u.NgoId 
                              from tbl_User u 
                              where u.username = @Username)";
}
using (var cmd = new SqlCommand(sql, conn))
{
    var p = new SqlParameter("@Username", SqlDbType.varchar);
    p.Value = Convert.ToString(Session["User"]);
    cmd.Parameters.Add(p);
    // ...
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将nvarchar值“ test”转换为数据类型int时转换失败

SQL:将nvarchar值“ XXX”转换为数据类型int时转换失败

将nvarchar值'....'转换为数据类型int时转换失败

将nvarchar值“ Landmark Acq vPay”转换为数据类型int时转换失败

将nvarchar值转换为数据类型int时转换失败

Laravel为什么说“将nvarchar值'[]'转换为数据类型int时转换失败”

“将nvarchar值'113332,113347'转换为数据类型int时转换失败。”

将 varchar/nvarchar 值转换为数据类型 int 时转换失败

将nvarchar值'$ 28,926.25'转换为数据类型int时转换失败

CASE语句中的“将nvarchar值转换为数据类型int时转换失败”

将nvarchar值'6,7'转换为数据类型int时转换失败

将 nvarchar 值“01HP011”转换为数据类型 int 时转换失败

将 nvarchar 值“1,501,907”转换为数据类型 int 时转换失败

转换nvarchar值'7575932'时转换失败。转换为int数据类型

SQL Server转换错误:将nvarchar值“ XXX”转换为数据类型int时转换失败

将 nvarchar 值“ ”转换为数据类型 int 时,SQL Server 数据库错误转换失败

将nvarchar值'29449,29446,29450,29534'转换为数据类型int时转换失败

EF Core ExecuteSqlCommandAsync:将nvarchar值'1,2'转换为数据类型int时转换失败

将nvarchar值“ EnumValue”转换为数据类型int时,Entity Framework Core 3.1枚举转换失败

在nopcommerce 4.3中将nvarchar值'abc'转换为数据类型int时转换失败

执行IDbConnection.Query会给出异常:将nvarchar值“内存转换为数据类型int”时转换失败

org.hibernate.exception.SQLGrammarException:将nvarchar值'ViewWebApp'转换为数据类型int时转换失败

将数据类型NVarchar转换为int时出错

“将 nvarchar 值“--”转换为 int 数据类型时出错。”

将varchar值'@id'转换为数据类型int时转换失败

将“无效”值“Residential”转换为数据类型 int 时转换失败

将varchar值'U'转换为数据类型int时转换失败

将varchar值'xxx'转换为数据类型int时转换失败

将varchar值'where name_id in('转换为数据类型int时,转换失败