【问题标题】:Error in Mysql in Visual Studio 2010Visual Studio 2010 中的 Mysql 错误
【发布时间】:2014-07-05 07:39:31
【问题描述】:

我在 Visual Studio 2010 C# 项目中遇到此错误。我使用 Mysql 驱动程序版本 6.8.3.0 连接到 mysql 服务器(通过 mysql workbench 6.1 创建)并且成功连接到 mysql 服务器(通过 Visual Studio 创建)但是当我的软件运行时出现错误。我在互联网上搜索发现远程连接问题是问题所在。但是,如果我的连接建立得很好,这不是问题,并且根据错误,它说 sql 查询中存在一些问题。但这是一个简单的选择语句(SELECT * FROM case)。感谢任何解决方案或建议。

using (MySqlDataReader mySqlDataReader = mySqlCommand.ExecuteReader()) 在以下代码部分中。

String connectionString = "server = localhost; user id = XXX; password = XXX;  database = XXXX";

        MySqlConnection connection = new MySqlConnection(connectionString);
        connection.Open();
        String searchString = "SELECT * FROM case" ;
         using (MySqlCommand mySqlCommand = new MySqlCommand(searchString, connection))
            {
                // mySqlCommand.Parameters.AddWithValue("@caseId", textBox1.Text);
                using (MySqlDataReader mySqlDataReader = mySqlCommand.ExecuteReader())
                {
                    String sb;
                    sb = mySqlDataReader.GetInt32(0).ToString();
                    MessageBox.Show(sb);

我得到的错误部分是这样的。

 MySql.Data.MySqlClient.MySqlException was unhandled
 Message=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 'case' at line 1 
 Source=MySql.Data
ErrorCode=-2147467259 Number=1064 StackTrace:
   at MySql.Data.MySqlClient.MySqlStream.ReadPacket()
   at MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int64& insertedId)
   at MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedRows, Int64& insertedId)
   at MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force)
   at MySql.Data.MySqlClient.MySqlDataReader.NextResult()
   at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
   at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader()
   at CaseFinder.Form1.button1_Click(Object sender, EventArgs e) in

【问题讨论】:

  • case是mysql中的关键字
  • Thanx Sajeetharan 我不知道。这可能是发生错误的原因。
  • 那和您的 sql 查询缺少终止分号。 MySql 需要;在每个操作结束时。更改为 String searchString = "SELECT * FROM mycase;"; //将case重命名为mycase更改表名
  • @Ryios 分号在从代码发送的单个 SQL 命令中不是强制性的,相关讨论:Can you form legal statement in MySQL without using semicolon?
  • 很高兴知道,我不知道我曾经发送过一个命令,这就是为什么我认为它是必需的。

标签: c# mysql visual-studio-2010


【解决方案1】:

CASE 是 MySQL 中的关键字。如果您打算从名为“case”的表中进行选择,请尝试使用反引号 (`) 将其包装起来,例如:

String searchString = "SELECT * FROM `case`" ;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-06
    • 1970-01-01
    • 2011-02-28
    • 1970-01-01
    • 2015-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多