3

为什么我收到此错误?

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

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

4

5 回答 5

2

转义查询中的关键字:

"SELECT [Date],[Day],[Time],Total FROM RSVP WHERE Id = @dummy"

将您的数据转换为 int。

cmd.Parameters.Add("@dummy", SqlDbType.Int).Value = Convert.ToInt32(Label2.Text);
于 2012-09-14T09:17:45.560 回答
1

Label2.Text 不是整数。

将其转换为整数。

cmd.Parameters.Add("@dummy", SqlDbType.Int).Value = int.Parse(Label2.Text);
于 2012-09-14T09:17:02.457 回答
1

只需按以下方式将参数中的值与AddWithValue添加:

  cmd.Parameters.AddWithValue("@dummy",  Label2.Text);

implicit conversion使用AddWithValue.

于 2012-09-14T09:29:55.450 回答
0

请将您的 Sql 语句更新为:

SqlCommand cmd = new SqlCommand("SELECT [Date],[Day],[Time],Total FROM RSVP WHERE Id = @dummy", conn);

希望这可以帮助。

于 2012-09-14T09:17:26.363 回答
0

你确定Label2.Text有一个有效的整数吗?用于TryParse检查是否label2.Text具有有效值。

int number;
bool result = Int32.TryParse(Label2.Text, out number);

如果字符串实际上可能不包含整数,则使用起来会容易得多 - 它不会引发异常,因此更容易从中恢复。

于 2012-09-14T09:26:30.140 回答