Я пишу приложение на C # WPF с VS10 express.
Я должен сказать, что я очень новичок в C # и VS, но я искал много примеров в Google, я действительно пытался решить эту проблему самостоятельно ..
У меня есть локальная база данных (mydatabase.sdf), и при загрузке моего окна я заполняю таблицу этой базы данных некоторыми данными. Одно из полей этой таблицы нуждается в уникальном значении, поэтому я хочу добавить в каждую загрузку одни и те же данные, но я получаю ошибку, отличную от курса.
Я хочу удалить все данные из базы данных, прежде чем пополнять, это кажется очень простым, но у меня не получается ...
Я пытался
dataset.Tables["mytable"].Clear()
, который не работает, похоже, он удаляет только данные из таблицы данных (dataTable), но не из хранилища данных.
также я пытался:
for (int i = 0; i < dataset.Tables["mytable"].Rows.Count; i++)
{
dataset.Tables["mytable"].Rows[i].Delete();
}
this.TableAdapter.Update(this.dataset);
Но при запуске оператор dataset.Tables["mytable"].Rows.Count
возвращает ноль при запуске, но если я добавлю свои данные, я получу "ошибку уникального значения".
Единственный способ удалить его - это удалить его вручную из сетки данных, а затем нажать кнопку Обновить, которая действительно удаляет его из хранилища данных.
Невозможно сделать это поле в базе данных неуникальным по причинам разработки.
Как действительно удалить данные из хранилища данных / базы данных (mydatabase.sdf) при загрузке моей программы ??
EDIT
Вот код, как я заполняю базу данных данными:
public void FillInternet()
{
klantenTableAdapter1.ClearBeforeFill = false;
string MyConString = "SERVER=myserver;" +
"DATABASE=mydb;" +
"UID=myuid;" +
"PASSWORD=mypass;";
MySqlConnection connection = new MySqlConnection(MyConString);
MySqlCommand command = connection.CreateCommand();
MySqlDataReader Reader;
command.CommandText = "SELECT klantnr, voorletters, roepnaam, achternaam, tussenvoegsel, meisjesnaam, straat, huisnr, subhuisnr, postcode, plaats, telthuis, telmobiel, telwerk, fax, email, geboortedatum FROM klanten ORDER BY klantnr";
connection.Open();
Reader = command.ExecuteReader();
try
{
while (Reader.Read())
{
DataRow newLogRow = dataset1.Tables["klanten"].NewRow();
var thisrow = "";
for (int i = 0; i < Reader.FieldCount; i++)
{
thisrow = Reader.GetValue(i).ToString();
newLogRow[Reader.GetName(i)] = thisrow;
}
dataset1.Tables["klanten"].Rows.Add(newLogRow);
this.klantenTableAdapter1.Update(this.dataset1);
}
connection.Close();
}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex.Message,"Fout",MessageBoxButton.OK,MessageBoxImage.Error);
}
dataset1.AcceptChanges();
//Fill from internet
//da.Fill(dataset1.klanten);
//Fill from local database
klantenTableAdapter1.Fill(dataset1.klanten);
this.klantenTableAdapter1.Update(this.dataset1);
this.DataContext = dataset1.klanten.DefaultView;
}