c# - 使用 asp.net c# MySQL INSERT INTO Query 中的神秘错误

标签 c# mysql asp.net

我试图在我的 MySQL 查询中查找错误已经太长时间了。我想做的就是将几个值插入到我的数据库中。只要我不包含 "longText" 的值,查询就可以正常工作,而且我现在绝对知道是什么导致了这个简单查询的问题。

这是 MySQL 异常消息:

MySql.Data.MySqlClient.MySqlException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'longText) VALUES ('191', '529', '', '1', 'index', CURRENT_TIMESTAMP, ' at line 1

Zeile 548:        cmd.Connection = con;
Zeile 549:        cmd.CommandText = "INSERT INTO confirmationfreetext (confirmationId, customer, shortText, sorting, addedBy, entryDate, longText) VALUES (@confirmationId, @customer, @shortText, @sorting, @addedBy, CURRENT_TIMESTAMP, @longText)";
Zeile 550:        cmd.ExecuteNonQuery();
Zeile 551:        con.Close();

[MySqlException (0x80004005): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'longText) VALUES ('191', '529', '', '1', 'index', CURRENT_TIMESTAMP, ' at line 1]
   MySql.Data.MySqlClient.MySqlStream.ReadPacket() +275
   MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int32& insertedId) +116
   MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedRows, Int32& insertedId) +54
   MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId) +132
   MySql.Data.MySqlClient.MySqlDataReader.NextResult() +707
   MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior) +1620
   MySql.Data.MySqlClient.MySqlCommand.ExecuteReader() +37
   MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery() +58
   editConfirmation.saveFreeTextButton_Click(Object sender, EventArgs e) in e:\aspnet_projects\ammon\editConfirmation.aspx.cs:550
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9614758
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +103
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1724

这是相关的asp.net c#代码:

        //connect to database
        MySqlConnection con = new MySqlConnection();
        con.ConnectionString = Helper.CONNECTION_STRING;
        MySqlCommand cmd = null;

        //add freetext to db
        con.Open();
        cmd = new MySqlCommand();
        cmd.Parameters.AddWithValue("@confirmationId", Session["currentConfirmationId"].ToString());
        cmd.Parameters.AddWithValue("@customer", Session["currentCustomerId"].ToString());
        cmd.Parameters.AddWithValue("@shortText", shortText.Text);
        cmd.Parameters.AddWithValue("@longText", longText.Text);
        cmd.Parameters.AddWithValue("@sorting", "1");
        cmd.Parameters.AddWithValue("@addedBy", Session["authenticatedUser"].ToString());
        cmd.Parameters.AddWithValue("@entryDate", "CURRENT_TIMESTAMP");
        cmd.Connection = con;
        cmd.CommandText = "INSERT INTO confirmationfreetext (confirmationId, customer, shortText, sorting, addedBy, entryDate, longText) VALUES (@confirmationId, @customer, @shortText, @sorting, @addedBy, CURRENT_TIMESTAMP, @longText)";
        cmd.ExecuteNonQuery();
        con.Close();

我可以将值更改为

cmd.Parameters.AddWithValue("@longText", 'blablabla');

或者无论我想要什么,我总是得到同样的错误。如果我手动将值写入 MySQL 查询,也会遇到相同的错误。

这是相关的 MySQL 表:

CREATE  TABLE `ammon`.`confirmationfreetext` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `confirmationId` INT NULL ,
  `customer` INT(11) NULL ,
  `shortText` VARCHAR(255) NULL ,
  `longText` VARCHAR(255) NULL ,
  `sorting` INT NULL ,
  `entryDate` TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00' ,
  `addedBy` VARCHAR(128) NULL ,
  PRIMARY KEY (`id`) );

我希望任何人都可以对这个错误说些什么。提前谢谢。

最佳答案

请尝试以下代码:

//connect to database
    MySqlConnection con = new MySqlConnection();
    con.ConnectionString = Helper.CONNECTION_STRING;
    MySqlCommand cmd = null;

    //add freetext to db
    con.Open();
    cmd = new MySqlCommand();
    cmd.Parameters.AddWithValue("?confirmationId", Session["currentConfirmationId"].ToString());
    cmd.Parameters.AddWithValue("?customer", Session["currentCustomerId"].ToString());
    cmd.Parameters.AddWithValue("?shortText", shortText.Text);
    cmd.Parameters.AddWithValue("?longText", longText.Text);
    cmd.Parameters.AddWithValue("?sorting", "1");
    cmd.Parameters.AddWithValue("?addedBy", Session["authenticatedUser"].ToString());
    cmd.Parameters.AddWithValue("?entryDate", "CURRENT_TIMESTAMP");
    cmd.Connection = con;
    cmd.CommandText = "INSERT INTO confirmationfreetext (confirmationId, customer, shortText, sorting, addedBy, entryDate, longText) VALUES (?confirmationId, ?customer, ?shortText, ?sorting, ?addedBy, CURRENT_TIMESTAMP, ?longText)";
    cmd.ExecuteNonQuery();
    con.Close();

关于c# - 使用 asp.net c# MySQL INSERT INTO Query 中的神秘错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19955500/

相关文章:

mysql - 在 Nitrous.io 错误上安装 MySQL

php - 通过 PHP 创建 MySQL 数据库导出

c# - 应用程序池错误

c# - EventTrigger 在循环中的意外结果

php - 存储图形数据的最有效方法

c# - Http 响应返回的流不可作为响应查找。长度抛出 "unsupported"

c# - NPOI Excel 数字格式未显示在 asp.net 的 Excel 工作表中

c# - WinRTXamlToolkit.Controls.DataVisualization.Charting 不适用于 .appx bundle

c# - 如果您只是在之后立即调用 End,为什么还要调用 WaitOne? End 不阻塞吗?

c# - 如何检测区分外部 wm_close 与 form.close() 内部触发