如何在PolicyID
的整数变量中存储从数据库返回的C#
的值?
我正在使用SQL Server 2005。
System.Data.SqlClient.SqlConnection dataConnection = new SqlConnection();
dataConnection.ConnectionString =
@"Data Source=JAGMIT-PC\SQLEXPRESS;Initial Catalog=SumooHAgentDB;Integrated Security=True";
System.Data.SqlClient.SqlCommand dataCommand = new SqlCommand();
dataCommand.Connection = dataConnection;
dataCommand.CommandText = ("select PolicyID from Policies where PolicyID=(select max(PolicyID) from Policies)");
dataConnection.Open();
dataCommand.ExecuteNonQuery();
dataConnection.Close();
请建议。
感谢。
答案 0 :(得分:6)
使用SqlCommand.ExecuteScalar方法,如下所示:
command.CommandText = @"select max(PolicyID) from Policies";
int maxPolicyId = (int)command.ExecuteScalar();
另外,如果你这样做是为了插入一个带有唯一ID的新Policy行,你不能这样做,因为完全有可能在select和insert之间插入一个不同的Policies行。 / p>
而是使用IDENTITY
列或UNIQUEIDENTIFIER
列。
编辑:要在代码中使用此功能,请执行以下操作:
int maxId;
using (SqlConnection dataConnection = new SqlConnection(@"Data Source=JAGMIT-PC\SQLEXPRESS;Initial Catalog=SumooHAgentDB;Integrated Security=True"))
using (SqlCommand dataCommand =
new SqlCommand("select max(PolicyID) from Policies", dataConnection)) {
dataConnection.Open();
maxId = Convert.ToInt32(dataCommand.ExecuteScalar());
}
答案 1 :(得分:2)
DECLARE @id INTEGER
SELECT @id=PolicyID FROM ...
答案 2 :(得分:1)
您是否只是在该政策表中插入新记录,现在您想要提供ID吗? 然后使用
而不是max()SELECT SCOPY_IDENTITY()
获取分配给您的记录的值,而不是稍后插入的记录。
答案 3 :(得分:0)
您还可以使用SELECT IDENT_CURRENT('Policies')
获取为记录创建的值。要详细了解SCOPE_IDENTITY()
与IDENT_CURRENT('tablename')
之间的差异,请查看此link。