Member 14120185 Ответов: 2

Мне нужно решить эту проблему в C# ? инициализатор типа для 'mysql.data.mysqlclient.replication.replicationmanager' вызвал исключение.


когда я пытаюсь запустить свой проект в VS2017 показать эту проблему, я думаю, что проблема заключается в моем коде вставки, извините, но я не пишу хорошо по-английски, я тяну строку подключения json, потому что web.config больше нет, я не думаю, что это проблема, потому что цепочка приносит его нормальным и все параметры равны, Оставьте мой код, спасибо.

 public class personaDAO
{
        public static int Add(mPersona obj)
        {
            int Res = 0;
            string query = "INSERT INTO `persona` (`nombre`,`edad`) values(?nombre,?edad);";
            Dictionary<string, object> Parameters = new Dictionary<string, object>();
            Parameters.Add("?nombre", obj.Nombre);
            Parameters.Add("?edad", obj.Edad);
            try
            {
                //string cadena = connection.ConnectionString;
                Res = SQL_Queries.Query_Execute(query, connection.ConnectionString, Parameters);
            }
            catch (Exception ex) { Console.Write(ex.Message); }
            return Res;
        }
    }
}


Что я уже пробовал:

ya intente cambiar las dll que tiene el proyecto, igual intente cambiando la cadena de conexión muchas veces.
Google Translate:
уже попробуйте изменить dll, которая есть в проекте, просто попробуйте изменить строку подключения много раз.

0x01AA

Может быть вы нам расскажете:
а) каков текст исключения
б.) каков тип SQL_Queries

Member 14120185

это исключение "MySql.Data.MySqlClient.Replication.ReplicationManager выдал исключение" и el тип sql_queries, это тот, который
компания его разработала, я же учусь в университете

Member 14120185

исключение завершено-это "инициализатор типа для 'MySql.Data.MySqlClient.Replication.ReplicationManager' выдал исключение."

Richard Deeming

Регистрация InnerException, который будет содержать фактические детали ошибки.

Member 14120185

Я работаю на mvc c # я не могу или пытаюсь изменить "исключение", для "InnerException", и я ничего не получаю. Visual не распознает исключение InnerException.
public static int Add(mPersona obj)
{
int Res = 0;
string query = "вставить в persona (nombre, edad) значения('?nombre','?edad');";
Словарь в<строка, объект и gt; Параметры = новый словарь в<строка, объект и GT;();
Parameters.Add("?nombre", obj.Номбре);
Параметры.Добавить("?эдад", кадриров.Эдад);
пробовать
{
//string cadena = соединение.Параметр connectionString;
Рес = SQL_Queries.Query_Execute(запрос, соединение.ConnectionString, Параметры);
}
//не работайте с innerException
catch (InnerException ex) { консоль.Написать(напр.сообщение); }
вернуться РЭС;
}

Member 14120185

disculpa mi ignorancia ya vi a que te referias encontre otro error, en el innerexception "не удалось загрузить файл или сборку" системы.Конфигурация.ConfigurationManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. El sistema no puede encontrar el archivo especificado."

Richard Deeming

Похоже, вам не хватает ссылки на NuGet:
NuGet Gallery | System.Конфигурация.Диспетчер конфигураций[^]

2 Ответов

Рейтинг:
1

RmcbainTheThird

Я не использую MySQL, но немного погуглив, похоже, что у вас есть две проблемы.
1. Вам нужно использовать @ not ? чтобы описать ваши параметры в запросе
2 ваши параметры определяются как объект словаря, и они должны иметь тип cmd.Parameters


Member 14120185

podrías dejar ejemplos de esto, por favor, no entendí donde irían los @ y lo de los parámetros menos xD, este es el primer proyecto en donde me sale este error, como quitaron el web.config pues me encentre en un problema hasta que llegue aquí.

RmcbainTheThird

хорошо, вот пример из одного из моих проектов. Я собираюсь предположить, что MySQL и sqlserver имеют схожие макеты
public bool UpdateInfoCenter(InfoCenterParent icData)
{
bool retVal = true;
строка sqlStr = "UPDATE [dbo].[Инфоцентрпарент]"
+ " SET[ListOrder] = @ListOrder"
+ ",[Отображаемый Текст] = @Отображаемый Текст"
+ ",[Описание] = @Описание"
+ ",[ImageFile] = @ImageFile"
+ ",[ChildDisplayOrder] = @ChildDisplayOrder"
+ ",[LastUpdatedBy] = @LastUpdatedBy"
+ " Где ID = @icID";
List<sqlparameter> parameters = новый список<sqlparameter>
{
новый объект sqlparameter {Имя_параметра = "@мкид", значения sqldbtype = значения sqldbtype.Тип int значение = icData.Идентификатор},
новый объект sqlparameter {Имя_параметра = "@ListOrder", значения sqldbtype = значения sqldbtype.Тип int значение = icData.ListOrder},
новый объект sqlparameter {Имя_параметра = "@отображаемый текст", значения sqldbtype = значения sqldbtype.Тип varchar,значение = icData.Отображаемый текст},
новый объект sqlparameter {Имя_параметра = "@описание", значения sqldbtype = значения sqldbtype.Тип varchar,значение = icData.Описание},
новый объект sqlparameter {Имя_параметра = "@ImageFile", значения sqldbtype = значения sqldbtype.Тип varchar,значение = icData.ImageFile},
новый объект sqlparameter {Имя_параметра = "@ChildDisplayOrder",значения sqldbtype = значения sqldbtype.Тип varchar,значение = icData.ChildDisplayOrder},
новый объект sqlparameter {Имя_параметра = "@LastUpdatedBy", значения sqldbtype = значения sqldbtype.Тип varchar,значение = icData.LastUpdatedBy}
};
пробовать
{
код = истина;
Доступа к данным.Функции executesql(_connStr, sqlStr, параметры);
}
поймать (исключение бывший)
{
код = ложь;
Фреймворклоггер.Ошибка("не удалось upadte инфоцентр родитель", нуль, экс);
}
вернуть код;
}
это способ доступа к данным.Функции executesql:

публичный статический недействительными функции executesql(connStr строку, строку sqlStr, список<объект sqlparameter&ГТ; параметры = нуль)
{
пробовать
{
//использования (новый самозванец("ZS9ADAU", "корпорация", pword))
{

используя (sqlconnection с соед = новый объект sqlconnection(connStr))
{
Коннектикут.Открыть();
SqlCommand cmd = новая команда sqlcommand(sqlStr, conn);
if (parameters != null)
{
cmd.параметры.AddRange(параметры.Метод toArray());
}
УМК.Метод executenonquery();
}
}
}
поймать (исключение бывший)
{
Фреймворклоггер.Ошибка("не удалось выполнить sql staement ", null, ex);
бросать ;
}
}

Рейтинг:
1

Member 14003117

Я вставляю здесь для основной операции вставки с использованием базы данных mysql

public static string AddAusSururb()
        {
            string connstr = @"server=" + GetAppSetting(AppSettings.serverName) + ";database=" + GetAppSetting(AppSettings.databaseName) + ";userid=" + GetAppSetting(AppSettings.userID) + ";password=" + GetAppSetting(AppSettings.dbPassword) + ";CHARSET=" + GetAppSetting(AppSettings.AcceptCharset) + ";convert zero datetime=" + GetAppSetting(AppSettings.convertDatetime) + "";
            MySqlConnection conn = null;
            MySqlDataReader rdr = null;
            string status = string.Empty;
            try
            {
                string stm = "SELECT Id FROM aussuburb ORDER BY Id DESC LIMIT 1;";
                var sql = "INSERT INTO aussuburb(Id, Postcode, Suburb, State)VALUES(@ID,@Postcode,@Suburb,@State);";
                conn = new MySqlConnection(connstr);
                conn.Open();
                MySqlCommand cmd = new MySqlCommand();
                cmd.Connection = conn;
                cmd.CommandText = stm;
                int LastID = Convert.ToInt32(cmd.ExecuteScalar());
                cmd.CommandText = sql;
                cmd.Prepare();
                cmd.Parameters.AddWithValue("@ID", LastID + 1);
                cmd.Parameters.AddWithValue("@Postcode", "TEST");
                cmd.Parameters.AddWithValue("@Suburb", "TEST");
                cmd.Parameters.AddWithValue("@State", "TEST");
                cmd.ExecuteNonQuery();
                status = "success";
            }
            catch (MySqlException ex)
            {
                status = "failed" + ex.ToString();
            }
            finally
            {
                if (rdr != null) { rdr.Close(); }
                if (conn != null) { conn.Close(); }
            }
            return status;
        }