C#.Net3.5如果SQL Server 2005数据库是';t已经存在,如果它确实更新了它?

C#.Net3.5如果SQL Server 2005数据库是';t已经存在,如果它确实更新了它?,c#,sql,sql-server-2005,.net-3.5,C#,Sql,Sql Server 2005,.net 3.5,大家好,现在第一次使用SQL 我有下面的代码,工作正常,但我需要检查条目是否已经在数据库中,使用CustomerName和Product进行匹配,如果它在数据库中,则更新其他字段,如果没有,则插入所有数据 我该怎么做 下面是我用来插入新记录的代码: DateTime FirstDateSeen = new DateTime(); FirstDateSeen = DateTime.Now.Date; DateTime LastDateSeen = new DateTime(); LastDate

大家好,现在第一次使用SQL

我有下面的代码,工作正常,但我需要检查条目是否已经在数据库中,使用CustomerName和Product进行匹配,如果它在数据库中,则更新其他字段,如果没有,则插入所有数据

我该怎么做

下面是我用来插入新记录的代码:

DateTime FirstDateSeen = new DateTime();
FirstDateSeen = DateTime.Now.Date;

DateTime LastDateSeen = new DateTime();
LastDateSeen = DateTime.Now.Date;

SqlConnectionStringBuilder MySqlConnection = new SqlConnectionStringBuilder("MY CONNECTION");
SqlConnection db = new SqlConnection(MySqlConnection.ToString());

try //sql string for first seen
{
   string sqlIns = "INSERT INTO Customer (Product, Version, CustomerName, CustomerPostcode,  FirstSeen, LastSeen)" +
   "VALUES (@Product, @Version, @CustomerName, @CustomerPostcode, @FirstSeen, @LastSeen)";

   db.Open();
   SqlCommand cmdIns = new SqlCommand(sqlIns, db);
   cmdIns.Parameters.Add("@CustomerName", UniqueA);
   cmdIns.Parameters.Add("@Product", AppName);
   cmdIns.Parameters.Add("@Version", AppVer);
   cmdIns.Parameters.Add("@CustomerPostcode", UniqueB);
   cmdIns.Parameters.Add("@FirstSeen", FirstDateSeen.ToShortDateString());
   cmdIns.Parameters.Add("@LastSeen", LastDateSeen.ToShortDateString());
   cmdIns.ExecuteNonQuery();

   cmdIns.Parameters.Clear();
   cmdIns.Dispose();
   cmdIns = null;
}
catch (Exception ex)
{
   throw new Exception(ex.ToString(), ex);
}
finally
{
   db.Close();
}

您可以为此创建一个过程并编写该过程,而不是在代码上编写sql查询。在使用if-else的过程中,您可以检查是否有条目,如果有条目,您可以使用参数编写更新查询,否则您可以编写插入查询。

您可以为该条目创建一个过程并编写它,而不是在代码上编写sql查询。在使用if-else的过程中,您可以检查是否有条目,如果有,您可以使用参数编写更新查询,否则您可以编写插入查询。

您是否与SQL 2005结婚了?如果不是,我建议看看SQL 2008,因为它通过MERGE命令解决了这个问题。 如果您无法使用SQL 2008,那么只需将这些命令包装成更多的SQL代码即可

IF EXISTS (<Preform your Check>)
BEGIN
    Update ... blah blah
END
ELSE
BEGIN
    INSERT ()...
END
如果存在()
开始
使现代化废话
终止
其他的
开始
插入()。。。
终止

你和SQL 2005结婚了吗?如果不是,我建议看看SQL 2008,因为它通过MERGE命令解决了这个问题。 如果您无法使用SQL 2008,那么只需将这些命令包装成更多的SQL代码即可

IF EXISTS (<Preform your Check>)
BEGIN
    Update ... blah blah
END
ELSE
BEGIN
    INSERT ()...
END
如果存在()
开始
使现代化废话
终止
其他的
开始
插入()。。。
终止
这里还有很多有趣的事情

这里有一个指针

catch (Exception ex)
{
   throw new Exception(ex.ToString(), ex);
}
不如

catch (Exception ex)
{
   // do stuff
   throw;
}

这里还有很多有趣的事情

这里有一个指针

catch (Exception ex)
{
   throw new Exception(ex.ToString(), ex);
}
不如

catch (Exception ex)
{
   // do stuff
   throw;
}


首先执行如下查询:

SELECT COUNT(*) AS RecordCount FROM Customer 
    WHERE Product=@Product AND CustomerName=@CustomerName

如果
RecordCount
为0,则进行插入,如果不进行更新,则进行更新。

首先执行如下查询:

SELECT COUNT(*) AS RecordCount FROM Customer 
    WHERE Product=@Product AND CustomerName=@CustomerName

如果
RecordCount
为0,则进行插入,如果不进行更新,则进行更新。

exist etc all是SQL命令的一部分吗?(这不是c#!!)@Adrian是的,人们给出的答案都是SQL(除了@Hogan对异常捕捉器的切线)。exist等都是SQL命令的一部分吗?(这不是c#!!)@Adrian是的,人们给出的答案都是SQL(除了@Hogan对异常捕捉器的切线)。是的,使用是存在的。它在第一次发现符合条件的记录时短路。是的,存在使用。它在第一次发现符合条件的记录时短路。