【问题标题】:mysql .net connector not working with a .net 4.0 project and connector 6.4.3 with sprocsmysql .net 连接器不适用于 .net 4.0 项目和带有 sprocs 的连接器 6.4.3
【发布时间】:2011-08-20 23:53:44
【问题描述】:

我不得不在这里重建一台机器,并认为我只是在此过程中重做我的网站。我决定使用 mvc 3 但仍然在后端使用 mysql。

我基本上复制并粘贴了所有用于 sql 连接的旧代码,以从 mysql 存储过程返回结果,但它根本不起作用。然后我尝试创建一个简单的插入存储过程,它也不起作用。如果我在 MySqlCommand 上使用内联 sql,它可以正常工作(选择和插入)。我在想,他们在 .net 4.0 上改变了 CommandType.StoredProcedure 上的一些东西……但我不能肯定地说。

当我在对实际存储过程的命令调用上设置断点时,它不会显示任何内容,也不会实际执行任何操作。我已经从 CLI 调用了存储过程,它们正在正常工作。回到我刚才所说的,我猜测.net 4 不再使用“调用”命令了。有人遇到这个问题吗?如果是这样,您有解决方案吗?无论如何将 System.Data 2.0 dll 导入 .net 4.0 项目以验证我的想法?

这是我的数据库层上的一些代码:

public static BuyCollectionModel GrabBuyData(GridSettings gridSettings)
        {
            int totalRows = 0;
            BuyCollectionModel buys = new BuyCollectionModel();
            using (MySqlConnection myConnection = new MySqlConnection(AppConfig.Connection))            {

                //string sql = "SELECT 100 as totalrows, c.* FROM cBuys as c";
                //MySqlCommand myCommand = new MySqlCommand(sql, myConnection);

                MySqlCommand myCommand = new MySqlCommand("usp_GetBuys", myConnection);
                myCommand.CommandType = CommandType.StoredProcedure;
                myCommand.Parameters.AddWithValue("@startrowvar", gridSettings.PageIndex);
                myCommand.Parameters.AddWithValue("@endrowvar", gridSettings.PageSize);
                myCommand.Parameters.AddWithValue("@sortcolvar", gridSettings.SortColumn);
                myCommand.Parameters.AddWithValue("@sortordervar", gridSettings.SortOrder);
                myConnection.Open();
                using (MySqlDataReader myReader = myCommand.ExecuteReader())
                {
                    while (myReader.Read())
                    {
                        buys.Add(FillBuys(myReader, out totalRows));
                    }
                }
                myConnection.Close();
            }
            buys.TotalCount = totalRows;
            return buys;
        }

如上所述,我还尝试创建一个简单的插入存储过程,它可以在 CLI 中正常工作,但是当我使用 ExecuteNonQuery() 从代码中调用它时,它什么也不做......

【问题讨论】:

  • 你得到什么错误信息?
  • 我有一个建议,你为什么不使用某种 ORM?在当今有这么多优秀的 ORM 解决方案时,直接处理命令对象似乎很愚蠢。我会建议 NHibernate。
  • 如果需要仅是 MS 框架,则使用 E​​ntityFramework。
  • 您确定传入的参数完全符合您的预期吗? Dio 你收到任何错误信息了吗?
  • using (MySqlDataReader myReader = myCommand.ExecuteReader()) { while (myReader.Read()) { buys.Add(FillBuys(myReader, out totalRows)); } } 替换为 DataTable tmp = new DataTable(); tmp.Load(myCommand.ExecuteReader());tmp.Load(...) 调用后的断点,看看你是否能得到你的结果。如果你这样做,我会看看你的 FillBuys 方法

标签: mysql asp.net-mvc stored-procedures


【解决方案1】:

尝试恢复到旧版本的连接器。对我有用的是 6.3.4。此外,请确保您在服务器上使用与开发工作站上完全相同的版本。

【讨论】:

    【解决方案2】:

    有没有办法将 System.Data 2.0 dll 导入 .net 4.0 项目.....

    如果您正在运行 Visual Studio,则单击 Project-> Add Reference -> Browse 并在此处找到您要添加到项目的 dll。

    【讨论】:

      猜你喜欢
      • 2017-05-20
      • 2018-09-12
      • 2011-06-19
      • 1970-01-01
      • 1970-01-01
      • 2011-04-21
      • 1970-01-01
      • 2014-08-17
      • 1970-01-01
      相关资源
      最近更新 更多