全部分在线等一段代码,求获得Sql server自增列的值
原来是用access做的 当时找到这样一段代码
Protected Sub OnRowUpdated(ByVal sender As Object, ByVal args As OleDbRowUpdatedEventArgs)
Dim idCMD As OleDbCommand = New OleDbCommand("SELECT @@IDENTITY", Conn)
If args.StatementType = StatementType.Insert Then
newId = CInt(idCMD.ExecuteScalar())
args.Row("ID") = newId
End If
End Sub
同时
AddHandler da.RowUpdated, New OleDbRowUpdatedEventHandler(AddressOf OnRowUpdated)
da.Fill(DS, LibName)
现在数据库换成 sql Server了 请问这里该怎么改
60发是我全部分了 在线等
[解决办法]
SQL Server 的自增列是由数据库在插入时自动赋值的,然后你可以通过 @@IDENTITY 取得刚才自动赋值的 ID。
程序中就不需要对 ID 字段赋值了。
注意一下 InsertCommand 的 SQL 中不要带 ID 字段,自增列是不能外部赋值的。
[解决办法]
string sql="insert into users values('TEST','TEST','TEST');select @@Identity";
....................
sqlcommand.ExecuteScalar();
[解决办法]
/// <summary>
/// 返回首行首列的值Object
/// </summary>
/// <param name="cmdType"></param>
/// <param name="cmdText"></param>
/// <param name="cmdParameters"></param>
/// <returns></returns>
public static object ExectueScalar(CommandType cmdType, string cmdText, params SqlParameter[] cmdParameters)
{
using (SqlConnection sqlCon = new SqlConnection(CONNSTRING))
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = sqlCon;
cmd.CommandType = cmdType;
cmd.CommandText = cmdText;
if (sqlCon.State != ConnectionState.Open)
sqlCon.Open();
if (cmdParameters != null)
{
foreach (SqlParameter parm in cmdParameters)
{
cmd.Parameters.Add(parm);
}
}
object reValue = cmd.ExecuteScalar();
cmd.Parameters.Clear();
return reValue;
}
}