首页 文章

将数据插入OleDb时出现ASP.Net错误

提问于
浏览
0

我一直收到这个错误 . 我读到OleDb不支持命名参数所以我将它们更改为 (?, ?) .

但是继续得到同样的错误

System.Data.OleDb.OleDbException:INSERT INTO语句中的语法错误 . System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams,Object&executeResult)的System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)处于System.Data的System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object&executeResult) . 位于Registration.ImageButton1_Click(System sender,ImageClickEventArgs)的System.Data.OleDb.OleDbCommand.ExecuteNonQuery()处的System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior,String方法)中的OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior,Object&executeResult) e)在c:\ Users \ Nirre \ Desktop \ Cti Project \ Book Club TRY 2 \ Registration.aspx.cs:第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
        }
    }
}

2 回答

  • 1

    INSERT COUNT(*) 不是有效的SQL语句,只需删除 COUNT(*) ,其余代码似乎正确 .

    See here for refs

  • 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做什么 . 如果您想返回受影响的行数,只需添加return参数并为其分配@@ ROWCOUNT

    编辑:我从未在Reporting Services外部使用问号作为参数占位符,因此请尝试使用命名参数替换它们,如上所示 .

相关问题