我有這個小問題,我想了一會兒。Sql Server CE - 暫時禁用特定列上的自動增量
這裏有雲:
是否有可能臨時禁止的AUTO_INCREMENT的列ID。
這樣我就可以在表中添加一個新行,並且可以在插入行時指定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]
SOLUTION感謝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());
}
已經回答[這裏](http://stackoverflow.com/questions/682654/sql-server-ce-3-5 -identity-插入)... – 2010-04-21 15:40:17
我已經試過了,沒有成功。 – 2010-04-21 16:22:28