Угадай ошибку в операторе вставки - PullRequest
2 голосов
/ 11 января 2011

Есть кто-нибудь с орлиными глазами?Я хочу определить местоположение ошибки в следующем операторе вставки.я использовал точку останова для отслеживания кодов во время работы и получаю сообщение об ошибке исключения (рядом с ключевым словом 'Case' был неверный синтаксис).Заставь тебя взглянуть на ...

public partial class OpenCase : System.Web.UI.Page
{
    string adminString;
    protected void Page_Load(object sender, EventArgs e)
    {
        adminString = "CA123";
    }

    protected void openCaseBotton_Click(object sender, EventArgs e)
    {
        //SQL connection string
        SqlDataSource CSMDataSource = new SqlDataSource();
        CSMDataSource.ConnectionString = ConfigurationManager.ConnectionStrings["CMSSQL3ConnectionString"].ToString();

        //SQL Insert command with variables
        CSMDataSource.InsertCommandType = SqlDataSourceCommandType.Text;
        CSMDataSource.InsertCommand = "INSERT INTO Case (CaseID, CaseDesc, DateOpened, CasePriority, AdministratorID) VALUES (@CaseID, @CaseDesc, @DateOpened, @CasePriority, @AdministratorID)";

        //Actual Insertion with values from textboxes into databse fields
        CSMDataSource.InsertParameters.Add("CaseID", caseIDTextBox.Text);
        CSMDataSource.InsertParameters.Add("CaseDesc", caseDescTextBox.Text);
        CSMDataSource.InsertParameters.Add("DateOpened", DateTime.Now.ToString());
        CSMDataSource.InsertParameters.Add("CasePriority", null);
        CSMDataSource.InsertParameters.Add("AdministratorID", adminString.ToString());

        int rowsCommitted = 0;

        //Try catch method to catch exceptions during insert
        try
        {
            rowsCommitted = CSMDataSource.Insert();
            Response.Write(@"<script language='javascript'>alert('The following errors have occurred:');</script>");
        }

        catch (Exception ex)
        {
            //error message displayed when exception occurs


            string script = "<script>alert('" + ex.Message + "');</script>";
            Response.Write("The following Error occurred while entering the records into the database" + " " + ex.ToString() + " ");
            Response.Redirect("~/ErrorPage.aspx", false);
        }
        finally
        {
            CSMDataSource = null;
        }

        //Where to go next if insert was successful or failed
        if (rowsCommitted != 0)
        {
            Response.Redirect("~/CaseAdmin.aspx", false);
        }
        else
        {

            Response.Redirect("~/ErrorPage.aspx", false);
        }

    }

    protected void addExhibitBotton_Click(object sender, EventArgs e)
    {
        Response.Redirect("~/EntryForms/AddExhibit.aspx", false);

    }
}

Видела что-нибудь?может быть, вам нужны очки C # с ошибочным зрением ... LOL

Ответы [ 2 ]

7 голосов
/ 11 января 2011

Рядом с INSERT?хорошо, CASE является зарезервированным словом SQL, поэтому попробуйте просто:

CSMDataSource.InsertCommand = "INSERT INTO [Case] (...

, чтобы сказать, что Case - это имя объекта, а не ключевое слово SQL.

4 голосов
/ 11 января 2011

Я почти уверен, что case на самом деле является ключевым словом SQL.

В зависимости от СУБД, вам, возможно, придется сделать что-то вроде заключить ее в обратные кавычки или другие разделители, чтобы заставить обработчик обработатьэто не ключевое слово, что-то вроде:

CSMDataSource.InsertCommand = "INSERT INTO `Case` (CaseID, ...
...