【问题标题】:How to compare database entry and form entry如何比较数据库条目和表单条目
【发布时间】:2023-03-13 07:05:01
【问题描述】:

我正在使用 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();

【问题讨论】:

  • 你是如何连接到数据库的?您是使用纯文本框还是使用启用编辑的gridview?有很多方法可以实现您想要的。

标签: c# compare compact-database


【解决方案1】:

您可以通过其中一种方式获得它

  • 为 Database 中的该列设置 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
}

【讨论】:

  • 我将两列都设置为唯一;我可以添加 Sefa - 伊斯坦布尔,但是当我尝试添加 Sefa - 纽约时,你知道它不是通过这种方式完成的......对于第二种方式,我想为每个城市添加多个人,例如 Sefa - 伊斯坦布尔和 Ben - 伊斯坦布尔可以添加到数据库中。
  • 为什么你将两个列都设置为唯一.. 你的用例有 Name 列具有唯一值.. 你只需要 City 列是唯一的
  • 当我将城市设置为唯一时,我无法向该城市添加更多人
  • 好的,我知道了,您不想拥有相同的名称和城市组合...是这样的
  • 也是如此。您可以使用插入触发器来检查此类条目或检查代码中的现有组合,然后插入数据
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 2017-07-03
  • 1970-01-01
  • 2022-06-19
相关资源
最近更新 更多