在SQL SERVER2K有1個變量和2個函數(shù)可以得到: IDENT_CURRENT() 返回為任何會話和任何作用域中的特定表最后生成的標識值。 SELECT @@IDENTITY 返回為當前會話的所有作用域中的任何表最后生成的標識值。 SCOPE_IDENTITY() 返回為當前會話和當前作用域中的任何表
在SQL SERVER2K有1個變量和2個函數(shù)可以得到:
IDENT_CURRENT() 返回為任何會話和任何作用域中的特定表最后生成的標識值。
SELECT @@IDENTITY 返回為當前會話的所有作用域中的任何表最后生成的標識值。
SCOPE_IDENTITY() 返回為當前會話和當前作用域中的任何表最后生成的標識值。
========================================================================================
如何插入一條記錄獲取插入后的自動增長ID列的方法.
主要介紹了如何在設(shè)定了自動增長ID列后添加一條數(shù)據(jù)后獲取添加的自動增長的ID值方法.
這篇文章我寫了一個使用企業(yè)庫3.0的方法來獲取自動增長ID列的方法,代碼如下:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using Microsoft.Practices.EnterpriseLibrary.Data;
using System.Data.Common;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Database db = DatabaseFactory.CreateDatabase("SQLConnectionString");
string strSql = @"INSERT INTO [BSA].[dbo].[BSA_MissionLog]
([a]
,[b])
VALUES
('1'
,'1'
)
select id = scope_identity()";//這里是最重要的一段話.
DbCommand dbcomm = db.GetSqlStringCommand(strSql);
DataSet ds = db.ExecuteDataSet(dbcomm);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
for (int j = 0; j < ds.Tables[0].Columns.Count; j++)
{
Response.Write("第"+i+"行"+j+"列:"+ds.Tables[0].Rows[i][j].ToString());
}
}
}
}
下面的代碼是使用ado.net 2.0的代碼:
SqlConnection con = new SqlConnection("Data Source=127.0.0.1;Initial Catalog=table1;Persist Security Info=True;User ID=sa;Password=sa");
try
{
string strSql = @"INSERT INTO Log
([a]
,[b])
VALUES
('1'
,'1')
select id = scope_identity()";
con.Open();
SqlCommand com = new SqlCommand(strSql, con);
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(com);
da.Fill(ds);
con.Close();
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
for (int j = 0; j < ds.Tables[0].Columns.Count; j++)
{
Response.Write("第" + i + "行" + j + "列:" + ds.Tables[0].Rows[i][j].ToString());
}
}
}
finally
{
con.Close();
}
微軟對這樣的方法解釋是:
此代碼告訴 SQL Server 不要返回查詢的行計數(shù),然后執(zhí)行 INSERT 語句,并返回剛剛為這個新行創(chuàng)建的 IDENTITY 值。da.Fill(ds)語句返回的記錄集有一行和一列,其中包含了這個新的 IDENTITY 值。如果沒有此語句,則會首先返回一個空的記錄集(因為 INSERT 語句不返回任何數(shù)據(jù)),然后會返回第二個記錄集,第二個記錄集中包含 IDENTITY 值。這可能有些令人困惑,尤其是因為您從來就沒有希望過 INSERT 會返回記錄集。之所以會發(fā)生此情況,是因為 SQL Server 看到了這個行計數(shù)(即一行受到影響)并將其解釋為表示一個記錄集。因此,真正的數(shù)據(jù)被推回到了第二個記錄集。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com