#c# #mysql
#c# #mysql
Вопрос:
у меня есть этот код, и он выдает мне эту ошибку, я очень старался решить это, но мне не везет. Этот метод используется для обновления таблицы из mysql путем предоставления инструкции select, имени таблицы и набора данных. Ошибка заключается в том, что «Обновлению не удается найти TableMapping[‘tblapartments’] или DataTable ‘tblapartments'».
public bool UpdateDatabase(string SelectStat, string tablename, DataSet dataset)
{
try
{
MySqlDataAdapter da = new MySqlDataAdapter(SelectStat, _conn);
MySqlCommandBuilder MYCB = new MySqlCommandBuilder(da);
DataSet ds = dataset;
da.MissingSchemaAction = MissingSchemaAction.AddWithKey;
da.Update(ds, tablename);
MySqlConnection.ClearAllPools();
return true;
}
catch (Exception ex)
{
return false;
}
}
это весь метод, используемый для вызова метода.
DataTable dt = (DataTable)dtgApartList.DataSource;
DataSet ds = GlobalVariables.Adap.GetTableCus("SELECT NameNo, MaintenanceFee, AdminFee FROM tblapartments WHERE BuildingID = '" cmbBuildingName.SelectedValue.ToString() "'");
ds.Tables[0].Merge(dt, false);
GlobalVariables.Adap.UpdateDatabase("SELECT NameNo, MaintenanceFee, AdminFee FROM tblapartments WHERE BuildingID = '" cmbBuildingName.SelectedValue.ToString() "'", "tblapartments", ds);
Комментарии:
1. Можете ли вы перечислить код, который вызывает это?
2. Я редактирую, чтобы показать вам, как я вызываю метод
Ответ №1:
Я понял, что я делал неправильно, мне нужно было сопоставить таблицы, вот исправленный код
public bool UpdateDatabase(string SelectStat, string tablename, DataSet dataset)
{
try
{
MySqlDataAdapter da = new MySqlDataAdapter(SelectStat, _conn);
MySqlCommandBuilder MYCB = new MySqlCommandBuilder(da);
DataSet ds = dataset;
da.MissingSchemaAction = MissingSchemaAction.AddWithKey;
//Added this
ITableMapping testing = da.TableMappings.Add(tablename,"Table");
da.Update(ds, tablename);
MySqlConnection.ClearAllPools();
return true;
}
catch (Exception ex)
{
return false;
}
}