【发布时间】:2011-06-14 10:31:21
【问题描述】:
我正在使用 VS10 express 在 C# WPF 中编写应用程序。 我不得不说我是 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) 中删除真正的数据??
编辑
这是我如何用数据填充数据库的代码:
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;
}
【问题讨论】:
-
数据是什么?为什么您认为每次启动应用程序时都需要重新填充它?
-
好吧,我是这么说的,但我会在一种备份系统中使用它。因此,所有数据都必须删除,新的备份数据必须放在表中。
-
你能显示所有代码,你如何填充数据,什么时候填充它..我在这里缺少smth:/