naeeme
جمعه 01 دی 1385, 14:24 عصر
چند سوال درباره SQL server داشتم.
1) در این کد چه ایرادی وجود داره؟
Dim myRow As DataRow
myRow = dsDataSet.Tables(0).NewRow()
myRow("iduser") = intIDUser
myRow("date") = Date.Today.Date
myRow("action") = strMessage
dsDataSet.Tables(0).Rows.Add(myRow)
'**
Dim last As Integer = dsDataSet.Tables(0).Rows.Count
dsDataSet.Tables(0).GetChanges()
If dsDataSet.HasErrors Then
ErrorHandled()
Else
If Not (UpdateDataBase(strDataSourceConnection, dsDataSet, "logfile")) Then
MsgBox(" LogFile " & "خطا در به روزرسانی پایگاه داده", MsgBoxStyle.OKOnly)
End If
End If
وقتی برای بار دوم این کد اجرا میشه، dsDataSet.HasErrors=true میشه. این کد رو از روی کتاب database انتشارات WROX نوشتم. در اون کد یه دستور Movelast() ( در محلی که * گذاشتم)وجود داشت که مشخص نبود مرجعش کجا ست.
2)در این تکه کد که برای Update شدن Databse اصلی هست، این خطا رو می گیره.( در دستور myDataAdapter.Update(dsChangedRows, strTable) این خطا رو میگیره)
Update requires a valid InsertCommand when passed DataRow collection with new rows
دلیلش چی هست؟
Public Function UpdateDataBase(ByVal strConnection As String, ByVal _
dsDataSet As DataSet, ByVal strTable As String) As Boolean
Dim dsDataSetChanges As DataSet
dsDataSetChanges = dsDataSet.GetChanges
If (Not (dsDataSetChanges) Is Nothing) Then
Try
UpdateDataSource(dsDataSetChanges, strTable)
dsDataSet.Merge(dsDataSetChanges)
dsDataSet.AcceptChanges()
Catch eUpdate As System.Exception
Return False
ErrorHandled()
End Try
End If
Return True
End Function
Public Sub UpdateDataSource(ByVal dsChangedRows As DataSet, ByVal strTable As String)
Dim myDataAdapter As New SqlClient.SqlDataAdapter
Try
'The data source only needs to be updated if there are changes pending.
If (Not (dsChangedRows) Is Nothing) Then
'Attempt to update the data source.
myDataAdapter.Update(dsChangedRows, strTable)
End If
Catch updateException As System.Exception
ErrorHandled()
End Try
End Sub
1) در این کد چه ایرادی وجود داره؟
Dim myRow As DataRow
myRow = dsDataSet.Tables(0).NewRow()
myRow("iduser") = intIDUser
myRow("date") = Date.Today.Date
myRow("action") = strMessage
dsDataSet.Tables(0).Rows.Add(myRow)
'**
Dim last As Integer = dsDataSet.Tables(0).Rows.Count
dsDataSet.Tables(0).GetChanges()
If dsDataSet.HasErrors Then
ErrorHandled()
Else
If Not (UpdateDataBase(strDataSourceConnection, dsDataSet, "logfile")) Then
MsgBox(" LogFile " & "خطا در به روزرسانی پایگاه داده", MsgBoxStyle.OKOnly)
End If
End If
وقتی برای بار دوم این کد اجرا میشه، dsDataSet.HasErrors=true میشه. این کد رو از روی کتاب database انتشارات WROX نوشتم. در اون کد یه دستور Movelast() ( در محلی که * گذاشتم)وجود داشت که مشخص نبود مرجعش کجا ست.
2)در این تکه کد که برای Update شدن Databse اصلی هست، این خطا رو می گیره.( در دستور myDataAdapter.Update(dsChangedRows, strTable) این خطا رو میگیره)
Update requires a valid InsertCommand when passed DataRow collection with new rows
دلیلش چی هست؟
Public Function UpdateDataBase(ByVal strConnection As String, ByVal _
dsDataSet As DataSet, ByVal strTable As String) As Boolean
Dim dsDataSetChanges As DataSet
dsDataSetChanges = dsDataSet.GetChanges
If (Not (dsDataSetChanges) Is Nothing) Then
Try
UpdateDataSource(dsDataSetChanges, strTable)
dsDataSet.Merge(dsDataSetChanges)
dsDataSet.AcceptChanges()
Catch eUpdate As System.Exception
Return False
ErrorHandled()
End Try
End If
Return True
End Function
Public Sub UpdateDataSource(ByVal dsChangedRows As DataSet, ByVal strTable As String)
Dim myDataAdapter As New SqlClient.SqlDataAdapter
Try
'The data source only needs to be updated if there are changes pending.
If (Not (dsChangedRows) Is Nothing) Then
'Attempt to update the data source.
myDataAdapter.Update(dsChangedRows, strTable)
End If
Catch updateException As System.Exception
ErrorHandled()
End Try
End Sub