【发布时间】:2011-02-10 16:11:47
【问题描述】:
这个小问题一直在我脑海中萦绕。
这里是:
是否可以暂时禁用列 ID 上的 Auto_Increment。
这样我就可以在表中添加一个新行,并能够在插入行时指定 ID 值。
然后最后再次启用 Auto_Increment,让它照常工作?
如果可能的话,我该怎么做?
表结构很简单
列名(属性)
ID (Primary Key, Auto Increment, int, not null)
Name (nvarchar(100), not null)
注意:
- 表名是:
People。 - 我们还要考虑表已经有数据并且不能更改。
- 数据库服务器是 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());
}
连接字符串有效,我试过了。
他报告:
解析查询时出错。 [ 代币行数 = 1,代币行 抵消 = 20,令牌错误 = 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) VALUES (@ID, @Nome)";
SqlCmd.CommandText = query;
SqlCmd.Parameters.AddWithValue("@ID", 15);
SqlCmd.Parameters.AddWithValue("@Nome", "Vania");
SqlCmd.ExecuteNonQuery();
}
catch (SqlCeException Error)
{
Console.WriteLine(Error.ToString());
}
【问题讨论】:
-
已经回答here...
-
我已经尝试过了,没有成功。
标签: c# sql-server-ce auto-increment