PDA

View Full Version : َattach کردن دیتا بیس در درون خود برنامه



a.maleki
یک شنبه 29 شهریور 1388, 19:19 عصر
با سلام خدمت دوستان
من می خواهم تو برنامه ام این امکان رو بگذارم که کاربر در داخل برنامه بتونه بانک رو attach و detach کنه قبلا کدشو رو تو سایت دیده بودم اما الان هچی می گردم پیداش نمی کنم
دوستان اگر کسی کدشو داره ممون میشم یه بار دیگه برای استفاده مون اینجا بگذار

saadi2
یک شنبه 29 شهریور 1388, 20:11 عصر
Private Sub Button13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button13.Click
'--------------------------------------------------------------------------------------------------
Dim Con As New SqlClient.SqlConnection(conString)
Dim cmd As New SqlClient.SqlCommand
Dim txt As String
Dim SF, sf2 As New SaveFileDialog
'--------------------------------------------------------------------------------------------------
SF.Filter = " SQL EXPRESS DB (*.mdf)|*.mdf"
sf2.Filter = "SQL EXPRESS DB_log (*.ldf)|*.ldf"
SF.ShowDialog()
sf2.ShowDialog()
'--------------------------------------------------------------------------------------------------
Try
If Len(SF.FileName) > 0 And Len(sf2.FileName) > 0 Then
txt = "sp_attach_db @dbname = N'" + TextBox2.Text + "', " & _
"@filename1 = N'" + SF.FileName + " ', " & _
"@filename2 = N'" + sf2.FileName + " ' "
Con.Open()
cmd.CommandText = txt
cmd.Connection = Con
cmd.ExecuteNonQuery()
Con.Close()
MsgBox("Database attach successfully")
load1()
End If
Catch ex As Exception
End Try
End Sub






Private Sub Button12_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button12.Click
Dim cmd As New SqlClient.SqlCommand
Dim txt As String
Dim Con As New SqlClient.SqlConnection(conString)
Con.Open()
txt = "sp_detach_db @dbname = N'" + TextBox2.Text + "', @keepfulltextindexfile=N'true'"
cmd.CommandText = txt
cmd.Connection = Con
cmd.ExecuteNonQuery()
Con.Close()
MsgBox("Database detach successfully")
End Sub

a.maleki
دوشنبه 30 شهریور 1388, 14:48 عصر
دوست عزیز ممنون از کدی که دادی اما متاسفانه کارم رو راه ننداخت
دوستان اگر کد دیگه ای دارند ممنون میشم لطفا کنند در اینجا بگذارند

saadi2
دوشنبه 30 شهریور 1388, 15:45 عصر
یک روش دیگه به وسیله ی smo هست که کدشو میزارم

در ضمن باید ریفرنسهای smo رو به برنامت add کنی



Imports Microsoft.SqlServer.Management.Smo
Imports Microsoft.SqlServer.Management.Common

Public Class Form1
Public Const Data As String = "student"
Dim ConnectionString As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\students.MDF;" _
& "Integrated Security=True;Connect Timeout=30;User Instance=True"
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Public Sub Attach(ByVal DatabaseName)
Dim srv As Server = New Server(".\sqlexpress")
Dim datastr As String = "c:\data\" + DatabaseName + ".mdf"
Dim logstr As String = "c:\data\" + DatabaseName + "_log.ldf"
MsgBox(logstr)
Dim sc As Specialized.StringCollection
sc = New Specialized.StringCollection
sc.Add(datastr)
sc.Add(logstr)
Try
srv.AttachDatabase(DatabaseName, sc, ".", AttachOptions.None)
MsgBox("ok")
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Public Sub Detach(ByVal DatabaseName)
Dim srv As Server = New Server(".\sqlexpress")
Try
srv.DetachDatabase(DatabaseName, False, False)
MsgBox("ok")
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Attach(Data)
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Detach(Data)
End Sub

a.maleki
چهارشنبه 01 مهر 1388, 16:20 عصر
دوستان می دونم در این مورد زیاد بحث شده ولی به خدا کارم گیره ممنون میشم منو راهنمائی کنید

در حقیتق من از کد فوق جهت اتصال به بانک استفاده می کنم ولی خطا می ده


Dim OpenFileDialog1, OpenFileDialog2 As New OpenFileDialog

Try

OpenFileDialog1.Filter = " SQL EXPRESS DB (*.mdf)|*.mdf"
OpenFileDialog2.Filter = "SQL EXPRESS DB_log (*.ldf)|*.ldf"
timer1.Interval = 50
OpenFileDialog1.FileName = TextBox1.Text
OpenFileDialog2.FileName = TextBox1.Text
OpenFileDialog1.ShowDialog()
OpenFileDialog2.ShowDialog()
Timer1.Enabled = True
If (OpenFileDialog1.FileName <> "" And OpenFileDialog2.FileName <> "" And TextBox1.Text <> "") Then

Dim con As New SqlClient.SqlConnection
con = New SqlConnection("server=(local);trusted_connection=yes;")
Dim cmd As New SqlCommand
cmd.CommandText = ""
cmd.CommandText = "sp_attach_db @dbname = N'" + TextBox1.Text + "', @filename1 = N'" + OpenFileDialog1.FileName + "', @filename2 = N'" + OpenFileDialog2.FileName + "'"
cmd.CommandType = CommandType.Text
con.Open()
cmd.Connection = con

cmd.ExecuteNonQuery()
con.Close()

MessageBoxFa.Show("بانک اطلاعاتی به درستی متصل گردید", "پیغام برنامه", MessageBoxButtons.OK, MessageBoxIcon.Information)

End If


Catch ex As SqlException

MessageBoxFa.Show("خطا در اتصال بانک", "پیغام برنامه", MessageBoxButtons.OK, MessageBoxIcon.Warning)
MessageBoxFa.Show(ex.Message & ex.ErrorCode)

End Try


این هم خطای که می ده

saadi2
چهارشنبه 01 مهر 1388, 17:44 عصر
این خط و جایگزین کن ببین درست میشه؟

con = New SqlConnection("server=(local);Integrated Security=SSPI;database=master")

mohammad_king62
پنج شنبه 02 مهر 1388, 11:24 صبح
سلام
اگر براتون مقدوره یک مثال کوچیک برای attach و detach کردن بانک داخل خود برنامه
بگذارید .البته گفتم اگر امکانش هست
ممنون

saadi2
جمعه 03 مهر 1388, 18:06 عصر
اینم یک برنامه نمونه
ولی در بعضی درایوها خطای آپریتینگ سیستم میده
اگه کسی راه حلی داره بگه