我正在使用C#2010 Express和Sql Compact。我有两列表和一个表单来添加数据以保存到表中。但我不想保存相同的内容。
例如;
Name City
Sefa Istanbul
Sefa New york
Sefa London
Ben New York
......
没问题但是如果用户想要添加另一个
Name City
Sefa Istanbul
或已经有另一个条目,该程序必须停止。
我已将此代码添加到我的项目中,但checkcmd.ExecuteNonQuery()命令始终返回'-1'
SqlCeConnection Baglanti = new SqlCeConnection(@"Data Source=|DataDirectory|\CeoDatabase.sdf;Password=CeoDB;Persist Security Info=True");
Baglanti.Open();
string checkcommand = "SELECT BarAdi, BarSehri FROM Barlar WHERE BarAdi = '"+ Txt_BarAdi.Text +"' AND BarSehri = '"+Txt_BarSehri.Text+"'";
SqlCeCommand checkcmd = new SqlCeCommand(checkcommand, Baglanti);
int kontrol = checkcmd.ExecuteNonQuery();
MessageBox.Show(kontrol.ToString());
return;
if (checkcmd.ExecuteNonQuery() < 1)
{
MessageBox.Show("Bu bilgiler ile kayıtlı bir bar zaten mevcut");
return;
}
else
{
SqlCeCommand Islem = new SqlCeCommand("INSERT INTO Barlar(BarAdi,BarSehri)VALUES('" + Txt_BarAdi.Text + "','" + Txt_BarSehri.Text + "')", Baglanti);
Islem.ExecuteNonQuery();
MessageBox.Show("İşlem başarıyla tamamlandı");
}
Baglanti.Close();
答案 0 :(得分:0)
你可以使用其中一种方式
在数据库中为该列设置Unique密钥。当插入新记录时,将自动检查(首选)
或者在插入新记录时检查该城市是否已存在。
如果要检查是否存在组合。做这样的事情(我假设你有你的数据):
SqlCeConnection cn = new SqlCeConnection("your connection string");
string checkcommand = "SELECT [Name], [City] FROM [Tablename]" +
"WHERE [Name] == @name AND [City] == @city" ;
SqlCeCommand checkcmd= new SqlCeCommand(checkcommand, cn);
checkcmd.Parameters.AddWithValue("@name", txtBoxName.Text);
checkcmd.Parameters.AddWithValue("@city", txtBoxCity.Text);
cn.Open();
//Check if record already exist
if(checkcmd.ExecuteNonQuery() > 0)
{
//It already exist
}
else
{
//It doesn't exist Insert new record
}