来自SQL的显示数据时出错

时间:2012-09-14 09:14:41

标签: c# asp.net sql

为什么我收到此错误?

输入字符串的格式不正确。

我正在尝试根据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。感谢。

5 个答案:

答案 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);

如果字符串实际上不包含整数,则使用起来要容易得多 - 它不会抛出异常,因此更容易恢复。