C# 代码>,将命令放在“监视”窗口上,并检查将显示的类型。看起来,出于某种原因,它不是int,尽管有convert。然后你可能会更接近了解发生了什么。我现在会检查一下。知道为什么使用using语句会突然改变数据类型吗?因为它在第一个代码块中工作。为什么需要使用
C# 代码>,将命令放在“监视”窗口上,并检查将显示的类型。看起来,出于某种原因,它不是int,尽管有convert。然后你可能会更接近了解发生了什么。我现在会检查一下。知道为什么使用using语句会突然改变数据类型吗?因为它在第一个代码块中工作。为什么需要使用,c#,sql-server-ce,using,C#,Sql Server Ce,Using,代码>,将命令放在“监视”窗口上,并检查将显示的类型。看起来,出于某种原因,它不是int,尽管有convert。然后你可能会更接近了解发生了什么。我现在会检查一下。知道为什么使用using语句会突然改变数据类型吗?因为它在第一个代码块中工作。为什么需要使用单独的连接查询@@IDENTITY?难道不能在插入代码的地方进行吗?啊。所以我根本不能以这种方式使用using语句?您必须在同一个using语句中执行insert和@IDENTITY。啊。因此,我根本无法以这种方式使用using语句?您必须在同
代码>,将命令放在“监视”窗口上,并检查将显示的类型。看起来,出于某种原因,它不是int,尽管有convert。然后你可能会更接近了解发生了什么。我现在会检查一下。知道为什么使用
using
语句会突然改变数据类型吗?因为它在第一个代码块中工作。为什么需要使用单独的连接查询@@IDENTITY
?难道不能在插入代码的地方进行吗?啊。所以我根本不能以这种方式使用using
语句?您必须在同一个using语句中执行insert和@IDENTITY。啊。因此,我根本无法以这种方式使用using
语句?您必须在同一个using语句中执行insert和@IDENTITY。SQL Server Compact中没有作用域标识()完全忽略了这一点,但SQL Server Compact中的模式usableNo Scope\U IDENTITY()完全忽略了这一点,但模式仍然可用
public static int GetLastInsertedID()
{
int key = 0;
try
{
SqlCeCommand cmd = new SqlCeCommand("SELECT CONVERT(int, @@IDENTITY)", DbConnection.ceConnection);
key = (int)cmd.ExecuteScalar();
}
catch (Exception ex)
{
MessageBox.Show("Could not get last inserted ID. " + ex.Message);
key = 0;
}
return key;
}
public static int GetLastInsertedID()
{
int key = 0;
try
{
using (SqlCeConnection conn = new SqlCeConnection(DbConnection.compact))
{
conn.Open();
using (SqlCeCommand cmd = new SqlCeCommand("SELECT CONVERT(int, @@IDENTITY)", conn))
key = (int)cmd.ExecuteScalar();
}
}
catch (Exception ex)
{
MessageBox.Show("Could not get last inserted ID. " + ex.Message);
key = 0;
}
return key;
}
public static int GetLastInsertedID(DbConnection connection)
{
try
{
string query = "SELECT CONVERT(int, SCOPE_IDENTITY())";
using (SqlCeCommand cmd = new SqlCeCommand(query, conn)) {
return (int)cmd.ExecuteScalar();
}
}
catch (Exception ex)
{
MessageBox.Show("Could not get last inserted ID. " + ex.Message);
return 0;
}
}
public static SqlCeConnection OpenDefaultConnection()
{
SqlCeConnection conn = new SqlCeConnection(DbConnection.compact);
conn.Open();
return conn;
}
...
using (SqlCeConnection conn = OpenDefaultConnection()) {
//... do smth
int id = GetLastInsertedID(conn);
//... do smth
}
...