加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – Sql Server CE – 临时禁用特定列的自动增量

发布时间:2020-12-15 08:23:36 所属栏目:百科 来源:网络整理
导读:我有一个小问题,现在已经有一段时间了. 在这里: 是否可以临时禁用列ID上的Auto_Increment. 这样我就可以向表中添加一个新行,并在插入行时指定ID值. 然后最后再次启用Auto_Increment,让它像往常一样工作? 如果它可能我怎么能这样做? 表结构非常简单 列名(
我有一个小问题,现在已经有一段时间了.

在这里:

是否可以临时禁用列ID上的Auto_Increment.

这样我就可以向表中添加一个新行,并在插入行时指定ID值.

然后最后再次启用Auto_Increment,让它像往常一样工作?

如果它可能我怎么能这样做?

表结构非常简单

列名(属性)

ID (Primary Key,Auto Increment,int,not null)
Name (nvarchar(100),not null)

注意:

>表名是:人.
>我们还要考虑该表已有数据且无法更改.
>数据库服务器是SQL Server CE.
>如果有任何帮助,SQL命令将在C#程序中执行.

我真的希望它有可能,它会变得非常方便.

谢谢

编辑

SqlActions SqlActions = new SqlActions();

SqlCeCommand SqlCmd = new SqlCeCommand("SET IDENTITY_INSERT People ON",SqlActions.Connection());

try
{
    SqlCmd.ExecuteNonQuery();
}
catch (SqlCeException Error)
{
    Console.WriteLine(Error.ToString());
}

string query = "INSERT INTO People SET (ID,Nome) VALUES (@ID,@Nome)";

SqlCeCommand SqlInsert = new SqlCeCommand(query,SqlActions.Connection());

SqlInsert.Parameters.AddWithValue("@ID",15);
SqlInsert.Parameters.AddWithValue("@Nome","Maria");

try
{
    SqlInsert.ExecuteNonQuery();
}
catch (SqlCeException Error)
{
    Console.WriteLine(Error.ToString());
}

连接字符串正在工作,我已经尝试过了.

他报告说:

There was an error parsing the query.
[ Token line number = 1,Token line
offset
= 20,Token in error = SET ]

解决方案感谢OrbMan

SqlActions SqlActions = new SqlActions();

        SqlCeCommand SqlCmd = new SqlCeCommand("SET IDENTITY_INSERT People ON",SqlActions.Connection());
        try
        {
            SqlCmd.ExecuteNonQuery();

            string query = "INSERT INTO People (ID,@Nome)";
            SqlCmd.CommandText = query;
            SqlCmd.Parameters.AddWithValue("@ID",15);
            SqlCmd.Parameters.AddWithValue("@Nome","Vania");
            SqlCmd.ExecuteNonQuery();
        }
        catch (SqlCeException Error)
        {
            Console.WriteLine(Error.ToString());
        }

解决方法

我相信你可以使用 SET IDENTITY_INSERT.我不确定这是否适用于所有版本.

更新2:

试试这个版本:

SqlActions SqlActions = new SqlActions();
SqlCeCommand SqlCmd = new SqlCeCommand("SET IDENTITY_INSERT People ON",SqlActions.Connection());
try
{
    SqlCmd.ExecuteNonQuery();
    string query = "INSERT INTO People (ID,@Nome)";
    SqlCmd.CommandText = query;
    SqlCmd.Parameters.AddWithValue("@ID",15);
    SqlCmd.Parameters.AddWithValue("@Nome","Maria");
    SqlCmd.ExecuteNonQuery();
}
catch (SqlCeException Error)
{
    Console.WriteLine(Error.ToString());
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读