【问题标题】:Unable to cast object of type 'MySql.Data.MySqlClient.MySqlException' to type 'System.IConvertible'.'无法将“MySql.Data.MySqlClient.MySqlException”类型的对象转换为“System.IConvertible”类型。
【发布时间】:2020-12-17 21:23:45
【问题描述】:

我找不到错误,我已经为这个问题工作了几个星期,我希望你能帮助我解决它。

这是我的访问数据库的类

namespace Monsterafood
{
    public class clsDataAccess : ClsWebConfig
    {

        public static DataTable ExecuteSelectCommand(DbCommand command)
        {
            DataTable table;
            try
            {
                command.Connection.Open();
                DbDataReader reader = command.ExecuteReader();
                table = new DataTable();
                table.Load(reader);
                reader.Close();
            }
            catch (Exception)
            {
                //clsUtilities.LogError(ex);
                throw;
            }
            finally
            {
                command.Connection.Close();
            }
            return table;
        }

        public static DbCommand CreateCommand()
        {
            string dataProviderName = ClsWebConfig.DbProviderName;
            string connectionString = ClsWebConfig.DbConnectionString;
            DbProviderFactory factory = DbProviderFactories.GetFactory(dataProviderName);
            DbConnection conn = factory.CreateConnection();
            conn.ConnectionString = connectionString;
            DbCommand comm = conn.CreateCommand();
            return comm;
        }

        public static int ExecuteNonQuery(DbCommand command)
        {
            int affectedRows = -1;
            try
            {
                command.Connection.Open();
                affectedRows = command.ExecuteNonQuery();
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                command.Connection.Close();
            }
            return affectedRows;
        }

        public static string ExecuteScalar(DbCommand command)
        {
            string value = "";
            try
            {
                command.Connection.Open();
                value = command.ExecuteScalar().ToString();
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                command.Connection.Close();
            }
            return value;
        }

    }
}

这是调用类的方法

public static string inserta(string id_add, string nombre, string precio)
        {
            DbCommand comm = clsDataAccess.CreateCommand();
            comm.CommandText= "INSERT INTO temporalcrepa(id_add, nombre, precio) VALUES(" + id_add + ", '" + nombre + "', " + precio + "); ";
            string x= clsDataAccess.ExecuteScalar(comm);
            return x;
        }

我正在使用 c# 和 javascript,我的数据库是 mysql。 非常感谢您帮我解决问题

【问题讨论】:

  • 你的代码容易受到sql注入的影响,请检查prepared stemenst with parameters
  • 如果您尝试解决“无法将类型为 'MySql.Data.MySqlClient.MySqlException' 的对象转换为类型 'System.IConvertible'.'”错误,请粘贴异常详细信息完整的调用堆栈进入您的问题:idownvotedbecau.se/noexceptiondetails

标签: c# mysql asp.net


【解决方案1】:

你正在执行一个调用 executeScalar() 的插入语句,你想调用 ExecuteNonQuery() 而不是 Scalar。

【讨论】:

  • 谢谢你的回答,我第一次使用 ExecuteNonQuery() 但我有同样的错误,所以我尝试使用不同的 public static int inserta(string id_add, string nombre, string precio) { DbCommand comm = clsDataAccess.CreateCommand(); comm.CommandText=“插入到 temporalcrepa(id_add, nombre, precio) VALUES(" + id_add + ", '" + nombre + "', " + precio + "); "; int x = clsDataAccess.ExecuteNonQuery(comm);返回 x; }
  • 在代码中添加一个断点步骤,找出引发异常的位置。 conn打开成功了吗?等
  • 是的,我使用断点来查看问题,并且在这部分中的方法 ExecuteNonQuery 内何时向我展示了错误 affectedRows = command.ExecuteNonQuery();
  • 你能用你当前的代码更新你的帖子并显示错误吗?记录是否被插入?
猜你喜欢
  • 2015-12-17
  • 2012-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多