[英]How do I check if value already exists in the database when I insert values using C#
[英]How to check value that I am trying to insert in database already exists
我已經隨機生成了存儲在數據庫中的條形碼。 我需要檢查我要插入的條形碼是否已經存在,並且如果存在,我需要生成其他條形碼。
con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\PC\source\repos\WindowsFormsApp26\WindowsFormsApp26\Database1.mdf;Integrated Security=True");
con.Open();
cmd = new SqlCommand("INSERT INTO [Table1](press, date, barcode) VALUES ( '" + ardVrednost + "','" + DateTime.Now.ToString() + "','" + bar + "' )", con);
cmd.ExecuteNonQuery();
試試下面的東西
cmd = new Sqlcommand($@"SELECT COUNT(1) FROM [Table1] WHERE barcode = {bar}",con);
var result = cmd.ExecuteReader();
if(result == "1"){
//do generate new barcode
}
由於您不提供數據庫架構,因此我假設您可能使用條形碼作為唯一鍵。
首先,如果條形碼必須唯一,而不是對數據庫進行唯一約束。
現在首先要回答這個問題,您必須問自己,系統將多久嘗試插入一個已經存在的條形碼。
如果這種情況僅發生幾次,那么執行插入操作並從唯一約束中捕獲異常會更有效。
如果大量發生,則Update
條形碼會更加有效,如果由於不存在而失敗,則將其插入。
因此,如果您知道條形碼在大多數情況下都將存在,那么執行更新在大多數情況下都可以。 因此,您的數據庫調用將保持在最低限度,從而使其效率更高,因為在大多數情況下,您只需要對數據庫進行一次調用
首先初始化列表。
List<string> list = new List<string>();
然后從數據庫中檢索所有條形碼值到列表中。
con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\PC\source\repos\WindowsFormsApp26\WindowsFormsApp26\Database1.mdf;Integrated Security=True");
con.Open();
cmd = new SqlCommand("SELECT press,date,barcode FROM [Table1])", con);
MySqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
list.Add(reader.GetString(2));
}
sqlconn.Close();
最后,只需匹配上面列表中的新條形碼,以查看其是否已存在於數據庫中。
If(list.Contains(barcode))
{
//do not insert the value in the database
}
else
{
//Your Insert query
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.