插入SQL Server CE数据库文件并返回插入的id
问题是:
我的查询
INSERT INTO TableName(val1,val2)values(1,2); SELECT @@IDENTITY;
当我在服务器资源管理器的运行查询中运行它时,我得到了正确的结果。
但是当我使用ExecuteScalar
或ExecuteDataTable
我得到一个错误,…查询返回null
public object ExecuteScalre(string Query, CommandType type) { OpenConnection(); cmd.CommandText = Query; cmd.CommandType = type; object obj = null; try { obj = cmd.ExecuteScalar(); } catch { } finally { ReleaseResource(); } return obj; } public DataTable ExecuteDataTable(string Query, CommandType type) { OpenConnection(); cmd.CommandText = Query; cmd.CommandType = type; DataTable dt = new DataTable(); dataAdaptor = new SqlCeDataAdapter(cmd); try { dataAdaptor.Fill(dt); } catch { } finally { ReleaseResource(); } return dt; }
注意:它是.sdf
文件(SQL Server CE),而不是 .mdf
,所以我们不能使用存储过程
Sql Server Compact Edition在一个查询中不支持多个语句。
此数据库(通常)在单个用户场景中使用,因此您可以拆分命令并向数据库发送两个查询,第一个插入记录,第二个返回@@ IDENTITY值。
cmd = new SqlCeCommand("INSERT INTO TableName(val1,val2)values(1,2)", cn); cmd.ExecuteNonQuery(); cmd.CommandText = "SELECT @@IDENTITY"; int result = Convert.ToInt32(cmd.ExecuteScalar());
这样做的原因是,您在一个Command对象中提交了两个sql命令。 INSERT
语句没有返回任何内容,这是正确的行为。
使用TSQL的OUTPUT
-Clause。 这将为插入或删除的行提供值作为记录集。 因此,您可以使用ExecuteScalar
来获取此值。
假设您有一个具有以下结构的表
CREATE TABLE [dbo].[Table_1] ([ID] [int] IDENTITY(1,1) NOT NULL, [Value1] [int] NOT NULL, [Value2] [int] NULL ) ON [PRIMARY]
使用以下SQL为您提供作为结果集插入的行的ID
insert Table_1 OUTPUT Inserted.ID values(1,2)
上述就是C#学习教程:插入SQL Server CE数据库文件并返回插入的id分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/959003.html