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

次の方法でAddWithValueを使用してパラメーターに値を追加するだけです。

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

implicit conversionとの作業中にありAddWithValueます。

于 2012-09-14T09:29:55.450 に答える
1

Label2.Text は整数ではありません。

整数に変換します。

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

Label2.Text有効な整数を持っていますか? 有効な値があるTryParseかどうかを確認するために使用します。label2.Text

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

文字列に実際に整数が含まれていない可能性がある場合は、はるかに使いやすくなります。例外がスローされないため、回復が容易になります。

于 2012-09-14T09:26:30.140 に答える
0

Sql ステートメントを次のように更新してください。

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

お役に立てれば。

于 2012-09-14T09:17:26.363 に答える