为什么我收到此错误?
输入字符串的格式不正确。
我正在尝试根据ID从所选列中获取数据。
代码是:
protected void Page_Load(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Connection"].ConnectionString);
SqlCommand cmd = new SqlCommand("SELECT Date,Day,Time,Total FROM RSVP WHERE Id = @dummy", conn);
conn.Open();
cmd.Parameters.Add("@dummy", SqlDbType.Int).Value = Label2.Text;
var dr = cmd.ExecuteReader();
if (dr.HasRows == false)
{
throw new Exception();
}
if (dr.Read())
{
Label8.Text = dr[0].ToString();
Label9.Text = dr[1].ToString();
Label10.Text = dr[2].ToString();
Label11.Text = dr[3].ToString();
}
第
行错误 var dr = cmd.ExecuteReader();
我的id是INT数据类型,它是PK。感谢。
答案 0 :(得分:2)
在您的查询中转义关键字:
"SELECT [Date],[Day],[Time],Total FROM RSVP WHERE Id = @dummy"
将数据转换为int。
cmd.Parameters.Add("@dummy", SqlDbType.Int).Value = Convert.ToInt32(Label2.Text);
答案 1 :(得分:1)
Label2.Text不是整数。
将其转换为整数。
cmd.Parameters.Add("@dummy", SqlDbType.Int).Value = int.Parse(Label2.Text);
答案 2 :(得分:1)
只需按以下方式添加AddWithValue参数中的值:
cmd.Parameters.AddWithValue("@dummy", Label2.Text);
使用implicit conversion
时有AddWithValue
。
答案 3 :(得分:0)
请将您的Sql语句更新为:
SqlCommand cmd = new SqlCommand("SELECT [Date],[Day],[Time],Total FROM RSVP WHERE Id = @dummy", conn);
希望这有助于。
答案 4 :(得分:0)
你确定Label2.Text
有一个有效的整数吗?使用TryParse
检查label2.Text
是否具有有效值。
int number;
bool result = Int32.TryParse(Label2.Text, out number);
如果字符串实际上不包含整数,则使用起来要容易得多 - 它不会抛出异常,因此更容易恢复。