如何不将新数据添加到与数据库中的数据具有相似id的数据库中?

时间:2016-01-01 10:23:53

标签: c# .net sql-server

所以我在Windows Forms中创建一个项目,我要做的是从Excel获取数据并在Datagridview中显示它。我正在上传Sql Server上的数据,而不是我在DVG中发送数据。每次我在服务器上传数据我必须向旧数据添加新数据,但我没有数据库中具有相似ID的数据。我有代码在sql Server中添加新数据,但我不知道如何不添加新数据,这些数据与sql中的数据具有相似的id。有谁知道怎么做?这是我的代码:

SqlBulkCopy oSqlBulk = null;

            string excelFilePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            excelFilePath = Path.Combine(excelFilePath, label1.Text);
            OleDbConnection excelConn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excelFilePath + ";Extended Properties=Excel 12.0;");

            try
            {
                excelConn.Open();
                OleDbCommand excelComm = new OleDbCommand("SELECT *FROM [Sheet1$]", excelConn);

                OleDbDataReader excelreader = excelComm.ExecuteReader();

                using(SqlConnection con = new SqlConnection("Data Source=DESKTOP-OETHK6U\\SQLEXPRESS;Initial Catalog=Intel_DB;Integrated Security=True"))
                {
                    con.Open();
                    oSqlBulk = new SqlBulkCopy(con);
                    oSqlBulk.DestinationTableName = "Intel_Data";
                    oSqlBulk.WriteToServer(excelreader);
                }
                label2.Text = "Data has been added into database";
            }
            catch(Exception ex)
            {
                label2.Text = "Data has not been added into database";
                MessageBox.Show(ex.Message);
            }
            finally
            {
                oSqlBulk.Close();
                oSqlBulk = null;
                excelConn.Close();
                excelConn = null;
            }

1 个答案:

答案 0 :(得分:0)

试试这个

if (not exists(select * from table where ID= @id))
insert into table(fields) values (values)

或者你可以在ID中设置唯一约束,所以如果用户添加相同的id,它会在你处理它时抛出错误..