0

このエラーが発生し続けます。OleDb は名前付きパラメーターをサポートしていないことを読んだので、それらを に変更しました(?, ?)

しかし、同じエラーが発生し続けます

System.Data.OleDb.OleDbException: INSERT INTO ステートメントの構文エラーです。System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling (OleDbHResult hr) で System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult (tagDBPARAMS dbParams、Object& executeResult) で System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) で System.Data. System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior 動作、String メソッド) で OleDb.OleDbCommand.ExecuteCommand(CommandBehavior 動作、Object& executeResult)、System.Data.OleDb.OleDbCommand.ExecuteNonQuery() で Registration.ImageButton1_Click(オブジェクト送信者、ImageClickEventArgs) e) c:\Users\Nirre\Desktop\Cti Project\Book Club TRY 2\Registration.aspx.cs:line 51

.cs クラスのコードは次のとおりです。

 protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
    if (IsPostBack)
    {
        OleDbConnection conn = new OleDbConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
        conn.Open();
        string insCmd = @"INSERT COUNT(*) INTO Registration(UserName, [Password], EmailAddress, FullName, Country, PasswordRecovery)
                     VALUES (?, ?, ?, ?, ?, ?)";
        OleDbCommand insertUser = new OleDbCommand(insCmd, conn);
        insertUser.Parameters.AddWithValue("@UserName", txtUserName.Text);
        insertUser.Parameters.AddWithValue("@Password", txtPassoword.Text);
        insertUser.Parameters.AddWithValue("@EmailAddress", txtEmail.Text);
        insertUser.Parameters.AddWithValue("@FullName", txtFullName);
        insertUser.Parameters.AddWithValue("@Country", DdlCountry.SelectedItem.ToString());
        insertUser.Parameters.AddWithValue("@PasswordRecovery", txtAnswer.Text);

        try
        {
            insertUser.ExecuteNonQuery();
            conn.Close();
            Response.Redirect("Login.aspx");
        }
        catch (Exception er)
        {
            Response.Write(er);
            lblError.Visible = true;
            lblError.Text = "An error has ocured pleas try again...!";
        }
        finally
        {
            // Code
        }
    }
} 
4

2 に答える 2

1
string insCmd = @"INSERT COUNT(*) INTO Registration(UserName, [Password], EmailAddress, FullName, Country, PasswordRecovery)
                     VALUES (?, ?, ?, ?, ?, ?)";

する必要があります

string insCmd = @"INSERT INTO Registration(UserName, [Password], EmailAddress, FullName, Country, PasswordRecovery)
                     VALUES (@UserName, @Password, @EmailAddress, @FullName, @Country, @PasswordRecovery)";

COUNT で何をしたいのかわかりません。影響を受ける行の数を返したい場合は、戻りパラメーターを追加して @@ROWCOUNT を割り当てます

編集: Reporting Services の外部で疑問符をパラメーター プレースホルダーとして使用したことがないため、上記のように名前付きパラメーターに置き換えてみてください。

于 2012-06-18T14:04:17.073 に答える
1

INSERT COUNT(*)は有効な SQL ステートメントではありません。削除するだけCOUNT(*)で、残りのコードは正しいように見えます。

参考文献はこちら

于 2012-06-18T14:03:52.173 に答える