![](/img/trans.png)
[英]Conversion failed when converting the nvarchar value 'Part 1' to data type int
[英]Conversion failed when converting the nvarchar value 'A' to data type int
将nvarchar
值'A'转换为数据类型int
时,转换失败。
private void linksdetail(string id)
{
SqlConnection con = new SqlConnection(con_string);
con.Open();
SqlCommand cmd = new SqlCommand(" select a.solution_title,b.solution_sub_id,b.solutions_id,a.url from cms_solution_viewnew a, cms_solution_viewnew b where a.row_id = b.solution_sub_id and b.solutions_id='" + id + "'", con);
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
HyperLink1.Text = dr["solution_title"].ToString();
HyperLink1.NavigateUrl = dr["url"].ToString();
}
dr.Close();
con.Close();
}
如何解决,请帮帮我。
solutions_id列数据类型为整数类型,id值为9
错误消息很容易解释。 您尝试将字符序列分配给int
类型的列。 根据示例值,您无需在数字列中使用单引号。 你可以改变你的
b.solutions_id = '" + id + "'"
至
b.solutions_id = " + id
但最好使用参数化查询 。 这类字符串连接对SQL注入攻击开放。 也可以使用using
语句自动处理SqlConnection
, SqlCommand
和SqlDataReader
而不是手动调用Close
方法。
using(var con = new SqlConnection(con_string))
using(var cmd = con.CreateCommand())
{
cmd.CommandText = "select a.solution_title,b.solution_sub_id,b.solutions_id,a.url from cms_solution_viewnew a, cms_solution_viewnew b where a.row_id = b.solution_sub_id and b.solutions_id = @id";
cmd.Parameters.Add("@id", SqlDbType.Int).Value = id;
con.Open();
using(var dr = cmd.ExecuteReader())
{
// Do your stuff
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.