比较麻烦的问题
使用了一个 DetailsView 控件来增加记录,增加一切正常。表中有一个字段是主键 ID ,并且 ID 是自增列,请问如何在
DetailsView1_ItemInserted 这个事件中 得到刚刚新增的自增列(主键ID)的值?
在更新时得到这个主键很简单,代码如下:但Inserted后怎么得到?
protected void DetailsView1_ItemUpdated(object sender, DetailsViewUpdatedEventArgs e)
{
int intID = e.Keys[0].ToString(); //更新后得到主键的值
} --------------------编程问答-------------------- 重新填充数据 --------------------编程问答-------------------- 举个例子,实际操作不建议这样使用
--------------------编程问答-------------------- 补充一个数据库操作的类DBcommon
Private SQL_ADD_ORDER_SALE As String = "INSERT INTO tb_OrderSale (UserID,Money,OrderTime,Status) " & _
"Values({0},{1},'{2}',{3});SELECT @@IDENTITY"
Public Function AddOrderSale(ByVal UserID As Integer, ByVal Money As Decimal, ByVal OrderTime As DateTime, ByVal Status As Integer) As Integer
Dim dbcom As New DBcommon
Return DirectCast(dbcom.GetDataSet(String.Format(SQL_ADD_ORDER_SALE, UserID, Money, OrderTime, Status)), DataSet).Tables(0).Rows(0).Item(0)
End Function
--------------------编程问答-------------------- 注意:以上都是非商业化代码,问题比较多,仅供参考! --------------------编程问答-------------------- 碰到这种情况往往是数据库的表结构设计得不够合理。。
Public Class DBcommon
Private SQL_CONNECTION_STRING As String = ConfigurationSettings.AppSettings("ConnectionString")
'执行SQL语句,不返回数据
Public Function ExeSQL(ByVal strSQL As String) As String
Dim Conn As SqlConnection
Dim MyCommand As SqlCommand
Dim s As String = ""
Dim errorMessages As New StringBuilder()
Conn = New SqlConnection(SQL_CONNECTION_STRING)
MyCommand = New SqlCommand(strSQL, Conn)
Try
MyCommand.Connection.Open()
MyCommand.ExecuteNonQuery()
MyCommand.Connection.Close()
Catch ex As SqlException
Dim i As Integer
For i = 0 To ex.Errors.Count - 1
errorMessages.Append("Index #" & i.ToString() & ControlChars.NewLine _
& "Message: " & ex.Errors(i).Message & ControlChars.NewLine _
& "LineNumber: " & ex.Errors(i).LineNumber & ControlChars.NewLine _
& "Source: " & ex.Errors(i).Source & ControlChars.NewLine _
& "Procedure: " & ex.Errors(i).Procedure & ControlChars.NewLine)
Next i
s = errorMessages.ToString()
End Try
Return s
End Function
'执行SQL语句,返回数据
Public Function GetDataSet(ByVal sql As String) As DataSet
Dim conn As SqlConnection
Dim da As SqlDataAdapter
Dim ds As New DataSet
Try
conn = New SqlConnection(SQL_CONNECTION_STRING)
da = New SqlDataAdapter(sql, conn)
ds = New DataSet()
da.Fill(ds)
Catch ex As SqlException
End Try
Return ds
End Function
End Class
一般情况下,需要你获取主键的表,都不要去用自增长字段。。
只在类似操作历史的记录表这样的,才用自增长字段作主键,因为这时我们只要知道谁做了什么操作,主键小的为较早的操作。。 --------------------编程问答-------------------- 获取sql server中自增字段的值
SELECT @@IDENTITY;
要获取主键的表,用自增没有什么不合理,
只是说为了更好的与其它数据库通用一般现在不怎么用了,5年前大家写代码的时候主键没有不是自增的
--------------------编程问答-------------------- 在进行插入操作的SQL语句中,加入 SELECT @@IDENTITY;
这样返回的值就有刚才插入的ID了, --------------------编程问答-------------------- 重新连接一下数据库查询OK --------------------编程问答-------------------- 如果在一个页面常用要用常类型的值。我常这样处理
1:放一个隐藏的控件记录值。这样就可以一直用,而且被改后,用的值也是新值。很方便。
2:在代码中放一个属性即:
//道理跟第一个是差不多的
private string _hiddenValue="";
private string HiddenValue
{
get {return _hiddenValue;}
set {_hiddenValue=value;}
}
补充:.NET技术 , C#