【问题标题】:MySQL Connector: parameters not being addedMySQL 连接器:未添加参数
【发布时间】:2009-09-11 16:01:54
【问题描述】:

查看我的 MySQL 查询日志,我发现我的参数没有被添加。这是我的代码:

MySqlConnection conn = new MySqlConnection(ApplicationVariables.ConnectionString());
                MySqlCommand com = new MySqlCommand();

                try
                {
                    conn.Open();
                    com.Connection = conn;
                    com.CommandText = String.Format(@"SELECT COUNT(*) AS totalViews
                                                      FROM pr_postreleaseviewslog AS prvl
                                                      WHERE prvl.dateCreated BETWEEN (@startDate) AND (@endDate) AND prvl.postreleaseID IN ({0})"
                                                      , ids);
                    com.CommandType = CommandType.Text;
                    com.Parameters.Add(new MySqlParameter("@startDate", thisCampaign.Startdate));
                    com.Parameters.Add(new MySqlParameter("@endDate", endDate));

                    numViews = Convert.ToInt32(com.ExecuteScalar());
                }
                catch (Exception ex)
                {
                }
                finally
                {
                    conn.Dispose();
                    com.Dispose();
                }

查看查询日志,我看到了:

SELECT COUNT(*) AS totalViews
                                                      FROM pr_postreleaseviewslog AS prvl
                                                      WHERE prvl.dateCreated BETWEEN (@startDate) AND (@endDate) AND prvl.postreleaseID IN (1,2)

我在无数项目中使用了 MySQL .NET 连接器(实际上我有一个基类负责打开这些连接,并通过事务关闭它们等)。然而,我接手了这个应用程序,我现在就在这里。

感谢您的帮助!

【问题讨论】:

  • 这个问题你解决了吗?

标签: mysql mysql-connector


【解决方案1】:

像这样试试。

mySqlCommand.Parameters.Add("@CustomerID", SqlDbType.NChar, 5);
mySqlCommand.Parameters["@CustomerID"].Value = "T1COM";

【讨论】:

  • 你好。我按照您所说的进行了尝试,但是我使用 MySQLType.DateTime 而不是 MySQLType.Int,因为 startDate 实际上是一个 .NET DateTime 对象。得到这个异常:异常详细信息:MySql.Data.MySqlClient.MySqlException:只能存储 MySqlParameter 对象
  • 也许我想快点 ;-) 试试这个。
  • 看我下面的帖子,这个框中的文字不够。
  • 当我使用mySqlCommand.Parameters.Add("@CustomerID", SqlDbType.VarChar);时,这对我有用
  • 请注意,cmd.Parameters.AddWithValue("?variable", "...value..."); 始终运行良好。
【解决方案2】:

一些 SQL 客户端,尤其是 MySql 使用“?”而不是“@”。

【讨论】:

  • MySQL 允许 ?我相信,@ 从 1.0.7 开始。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-12
  • 2019-06-28
  • 1970-01-01
  • 2014-08-17
  • 2021-08-13
相关资源
最近更新 更多