Sub Zero
دوشنبه 19 فروردین 1387, 14:34 عصر
سلام به همه دوستان .
در دیتا بیس به برنامه ام یک جدول مربوط به اطلاعات کاربران وجود . مواقعی که میخوام دیتابیس رو Restore کنم با مشکلی بر میخورم که هر کاری می کنم رفع نمیشه .
مشکل اینه که نمی خوام اطلاعات مربوط به جدول کاربران بعد از انجام عمل Restore تغییر کنه.
برای این کار اعمال زیر رو به ترتیب انجام دادم اما جواب نگرفتم .
1- ذخیره اطلاعات جدول کاربران درون یک دیتاست
2- Restore کردن دیتابیس
3-حذف داده های موجود در جدول اطلاعات کاربران و Update کردن جدول با دیتاست ذخیره شده .
البته تمامی این مراحل را با در نظر گرفتن اینکه Ado.Net به صورت Connection Less عمل می کنه
انجام دادم . تا اونجایی که من از دیتاست شناخت دارم ، روش کارش به این صورته که اطلاعات رو از یه واسط (مثلا DataAdapter ) گرفته و مانند یه ظرف داده های دریافت شده را نگه میداره و هر تغییری هم که روی این داده ها انجام بشه روی داده های اصلی دیتابیس اثری نداره . عکس این عمل هم باید صادق باشه . یعنی اگه تغییری در دیتا بیس صورت بگیره تا زمانی که مجددا دیتاست پر نشه (Fill) تغییری در داده های دیتاست صورت نمی گیره .
اما با انجام دادن سه مرحله گفته شده ظاهرا این اتفاق نیافتاد. بعد از Restore کردن و حذف داده های جدول کاربران علیرغم اینکه برنامه محتویات دیتاست ذخیره شده رو پر نشون میده اما آپدیت انجام نمیشه نمیدونم اشکال کار کجاست.
کدهای مرحله 3و1 رو میزارم تا اگه دوستان نظری دارند اعلام کنند. :
مرحله اول :
Shared SavedTable As New DataTable
Shared Sub SaveUserInfo()
Dim MasterTable As New DBSetTableAdapters.UsersTbl
Dim Dbset As New DBSet
MasterTable.Fill(Dbset.Users)
SavedTable = Dbset.Users.Copy
End Sub
مرحله دوم : Restore DataBase
مرحله سوم :
Shared Sub RetriveUserInfo()
Dim Rows As DataRowCollection
Rows = SavedTable.Rows
Using con As New SqlConnection(My.Settings.DBConnection)
con.Open()
Dim sqlcmd As New SqlCommand("Delete From Users ", con)
sqlcmd.ExecuteNonQuery()
End Using
Dim MasterTable As New DBSetTableAdapters.UsersTbl
For Each row As DataRow In Rows
MasterTable.Update(row)
Next
End Sub
در دیتا بیس به برنامه ام یک جدول مربوط به اطلاعات کاربران وجود . مواقعی که میخوام دیتابیس رو Restore کنم با مشکلی بر میخورم که هر کاری می کنم رفع نمیشه .
مشکل اینه که نمی خوام اطلاعات مربوط به جدول کاربران بعد از انجام عمل Restore تغییر کنه.
برای این کار اعمال زیر رو به ترتیب انجام دادم اما جواب نگرفتم .
1- ذخیره اطلاعات جدول کاربران درون یک دیتاست
2- Restore کردن دیتابیس
3-حذف داده های موجود در جدول اطلاعات کاربران و Update کردن جدول با دیتاست ذخیره شده .
البته تمامی این مراحل را با در نظر گرفتن اینکه Ado.Net به صورت Connection Less عمل می کنه
انجام دادم . تا اونجایی که من از دیتاست شناخت دارم ، روش کارش به این صورته که اطلاعات رو از یه واسط (مثلا DataAdapter ) گرفته و مانند یه ظرف داده های دریافت شده را نگه میداره و هر تغییری هم که روی این داده ها انجام بشه روی داده های اصلی دیتابیس اثری نداره . عکس این عمل هم باید صادق باشه . یعنی اگه تغییری در دیتا بیس صورت بگیره تا زمانی که مجددا دیتاست پر نشه (Fill) تغییری در داده های دیتاست صورت نمی گیره .
اما با انجام دادن سه مرحله گفته شده ظاهرا این اتفاق نیافتاد. بعد از Restore کردن و حذف داده های جدول کاربران علیرغم اینکه برنامه محتویات دیتاست ذخیره شده رو پر نشون میده اما آپدیت انجام نمیشه نمیدونم اشکال کار کجاست.
کدهای مرحله 3و1 رو میزارم تا اگه دوستان نظری دارند اعلام کنند. :
مرحله اول :
Shared SavedTable As New DataTable
Shared Sub SaveUserInfo()
Dim MasterTable As New DBSetTableAdapters.UsersTbl
Dim Dbset As New DBSet
MasterTable.Fill(Dbset.Users)
SavedTable = Dbset.Users.Copy
End Sub
مرحله دوم : Restore DataBase
مرحله سوم :
Shared Sub RetriveUserInfo()
Dim Rows As DataRowCollection
Rows = SavedTable.Rows
Using con As New SqlConnection(My.Settings.DBConnection)
con.Open()
Dim sqlcmd As New SqlCommand("Delete From Users ", con)
sqlcmd.ExecuteNonQuery()
End Using
Dim MasterTable As New DBSetTableAdapters.UsersTbl
For Each row As DataRow In Rows
MasterTable.Update(row)
Next
End Sub