gpt4 book ai didi

SQL Server CE : if exist update else insert

转载 作者:行者123 更新时间:2023-12-04 12:48:37 24 4
gpt4 key购买 nike

我该怎么办 INSERT如果 SQL Server CE 数据库表中尚不存在一行,则 UPDATE它是否存在?

我尝试了很多 SQL 查询并不断出错。这是行不通的。

IF EXISTS (SELECT * FROM Table1 WHERE Column1='SomeValue')
UPDATE Table1 SET (...) WHERE Column1='SomeValue'
ELSE
INSERT INTO Table1 VALUES (...)

更新 :

我发现这对我有用。欢迎任何其他好的建议。
    INSERT INTO Table1 VALUES (...)
SELECT (........)
WHERE NOT Exists (SELECT ........)
-- INSERT with Default value if not exist. Next, UPDATE it
UPDATE Table1 SET (...) WHERE Column1='SomeValue'

最佳答案

我知道你已经标记了 sql 和 sql-server-ce 但如果你愿意使用 c# 代码来解决这个问题..:

使用 c# 和结果集,这是我使用 SQL CE 为我的移动应用程序所做的:

            // UpdateRow is a struct/class to hold the data for each row
// SqlCeConn = connection string for db

SqlCeCommand cmd = new SqlCeCommand("Table1", SqlCeConn);
cmd.CommandType = CommandType.TableDirect;
cmd.IndexName = "Column1";

using (SqlCeResultSet rsltSet = cmd.ExecuteResultSet(ResultSetOptions.Scrollable | ResultSetOptions.Updatable))
{
if (UpdateRow.Column1> 0) // or != "" if it's string etc
{
if (rsltSet.Seek(DbSeekOptions.FirstEqual, UpdateRow.Column1))
FoundRecord = true;
}
rsltSet.Read();

if (FoundRecord)
{
// Update
rsltSet.SetInt32(1, UpdateRow.Column1);
rsltSet.SetInt32(2, UpdateRow.Column2);

// etc

rsltSet.Update();
}
else
{
// Insert new record
SqlCeUpdatableRecord record = rsltSet.CreateRecord();
record.SetInt32(0, UpdateRow.Column1);
record.SetInt32(1, UpdateRow.Column2);

// etc
rsltSet.Insert(record, DbInsertOptions.PositionOnInsertedRow);
}
}
cmd.Dispose();
}
catch (Exception e)
{
// Deal with exception

}

关于SQL Server CE : if exist update else insert,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12550594/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com