首页 > 解决方案 > SQL CE如何防止重复插入

问题描述

SqlCeCommand command = new SqlCeCommand(@"INSERT INTO fpl_table 
                                                    (FLIGHT_ID, BPN_TIME, BPX_TIME, DAY_NB) 
                                                    VALUES (@FLIGHT_ID, @BPN_TIME, @BPX_TIME, @DAY_NB)
                                                    ON DUBLICATE UPDATE FLIGHT_ID = @FLIGHT_ID, BPN_TIME=@BPN_TIME,BPX_TIME=@BPX_TIME,DAY_NB=@DAY_NB"
                                                    ,connection);

command.Parameters.AddWithValue("FLIGHT_ID", format);
command.Parameters.AddWithValue("BPN_TIME", format1);
command.Parameters.AddWithValue("BPX_TIME", format2);
command.Parameters.AddWithValue("DAY_NB", format3);

大家好!

我遇到了将 4 个值插入列的问题。我想防止将 4 个现有列插入数据库,我无法将它们设置为唯一,因为同一列可以插入其他 1,2 或 3 个列,我只想阻止仅插入 4 个现有列。

标签: c#sql.netsql-server-ce

解决方案


为什么不首先使用单独的函数来找出重复记录。

bool CheckDuplicateFlight(int FLIGHT_ID)
{
SqlConnection con = new SqlConnection();
con.ConnectionString = @"YOURCONNECTION STRING";
con.Open();
if (con.State == System.Data.ConnectionState.Open)
{
SqlCeCommand cmd = new SqlCeCommand("select count(*) from YOURTABLE where FLIGHT_ID= @FLIGHT_ID", con);
cmd.Connection = con;
cmd.CommandType = System.Data.CommandType.Text;
cmd.Parameters.AddWithValue("@FLIGHT_ID",FLIGHT_ID);
int ExistingId= Convert.ToInt32(cmd.ExecuteScalar());
}
con.Close();
if(ExistingId> 0)
    return true;
return false;
}
if(CheckDuplicateFlight(FLIGHT_ID))
{
///// Your insertion/Update Code here
}

但是您的问题有点令人困惑,您确定要插入记录而不是更新吗?插入查询总是插入新记录。


推荐阅读