PDA

View Full Version : سوال: اجرای برنامه در کامپیوتر های دیگر



Evil 69
سه شنبه 12 شهریور 1387, 10:37 صبح
سلام
من یک برنامه دارم که بانکش sql هستش و تا حالا هم زیاد با sql کار نکردم ( به شکل کاربردی ) و نمی دونم چطور میشه که سرور sql رو طوری تنظیم کرد که روی هر کامپیوتر دیگیه ای که برنامه اجرا میشه بانک رو بشناسه و اون رو اجرا کنه .

اگر کسی تکه کدی یا توضیحی داره ممنون میشم اگر به من بده .

فقط لطفا زود جواب بدین که من خیلی بهش نیاز دارم .:اشتباه:

با تشکر :قلب:

bahar2008
سه شنبه 12 شهریور 1387, 14:19 عصر
باید cn.connection برنامه ات رو همه جا local بزاری به صورت زیر :



cn.ConnectionString = "Data Source=(local);Initial Catalog=........;Integrated Security=True"



که به جای نقطه چین ها اسم بانکت رو می نویسی
در هر کامپیوتر دیگه هم اول بانکهات رو اتچ می کنی و برنامه رو اجرا می کنی

saman_itc
سه شنبه 12 شهریور 1387, 15:15 عصر
تعریف دسترسی در SQL MANGER چی در رو سرور چی؟؟!!!

Evil 69
چهارشنبه 13 شهریور 1387, 08:12 صبح
ممنون
ولي چطوري ميشه با كد نويسي يك بانك رو به برنامه اتچ كنيم

elmira_63
چهارشنبه 13 شهریور 1387, 09:47 صبح
این کد میاد برسی میکنه اگه توی درایو e فولدری به نام zaban\database وجود نداشته باشه اول این فولدر رو ایجاد میکنه بعد دیتابیسم رو که کنار فایل exe دارمش کپی میکنه توی این شاخه ای که ساخته بعدم میاد دیتابیس رو از اینجا attach میکنه توی sql حالا شما می تونین این آدرس رو عوض کنین


Function AttachDB() As Boolean
Try
ConOpen()
Dim cmd As New SqlCommand()
Dim txt As String

txt = "sp_attach_db @dbname = N'zaban', " & vbCrLf & _
"@filename1 = N'e:\zaban\Database\zaban.MDF', " & vbCrLf & _
"@filename2 = N'e:\zaban\Database\zaban_log.LDF'"

cmd.CommandText = txt
cmd.Connection = con
cmd.ExecuteNonQuery()
Catch
MsgBox("احتمالا دیتابیس قبلا موجود بوده است")
End Try


End Function


Function DropDatabase() As Boolean
Dim cn As New SqlClient.SqlConnection
cn.ConnectionString = _
"Server=localhost;" & _
"DataBase=master;" & _
"Integrated Security=SSPI;" & _
"data source=(local)"
Dim CreateDBCommand As New SqlClient.SqlCommand
CreateDBCommand.Connection = cn
CreateDBCommand.CommandText = "IF EXISTS (SELECT name FROM zaban.dbo.sysdatabases WHERE name = N'zaban') " & _
"DROP DATABASE [zaban]"
cn.Open()
Try
CreateDBCommand.ExecuteNonQuery()
Catch Ex As Exception
End Try
cn.Close()
Return True
End Function


Function CopyDB() As Boolean
My.Computer.FileSystem.CopyFile(My.Application.Inf o.DirectoryPath + "\Database\zaban.mdf", "e:\zaban\Database\zaban.mdf", True)
My.Computer.FileSystem.CopyFile(My.Application.Inf o.DirectoryPath + "\Database\zaban_log.ldf", "e:\zaban\Database\zaban_log.ldf", True)
End Function

حالا این کدای بالا رو که کپی کردین این کد میاد این کارهارو که بالا گفتم انجام میده


If My.Computer.FileSystem.DirectoryExists("e:\zaban\database") = False Then
My.Computer.FileSystem.CreateDirectory("e:\zaban\database")
DropDatabase()
CopyDB()
AttachDB()
MsgBox("دیتابیس جدید با موفقیت ساخته شد")
Button1.Enabled = True
Label3.Text = "دیتابیس با موفقیت ساخته شد"
Button2.Enabled = False
Else
AttachDB()
MsgBox("دیتابیس موجود است ")
Button1.Enabled = True
Label3.Text = "دیتابیس بازیابی شد"
Button2.Enabled = False
End If

Evil 69
چهارشنبه 13 شهریور 1387, 11:07 صبح
ممنون از راهنمايي تون ولي اگر ميشه يك توضيح كوچيك در مورد تابع DropDatabase بدين اخه بعضي از دستوراتش رو نمي فهمم يعني چي مثل CreateDBCommand.CommandText = "IF EXISTS (SELECT name FROM zaban.dbo.sysdatabases WHERE name = N'zaban') " & _
"DROP DATABASE [zaban]" منظور از DROP DATABASE [zaban] چيه ؟

sekhavat
جمعه 15 شهریور 1387, 00:26 صبح
سلام
راه حل عملي اين كار :
كانكشنت اين باشه و كنار فايل اجراييت باشه
در ضمن بايد سرويس SQl رو هم به فايل اجراييت اضافه كني تا نصبش كنه
Public Connection As New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\DataBase.mdf;Integrated Security=True;User Instance=True")
موفق باشي

Evil 69
جمعه 15 شهریور 1387, 05:01 صبح
ممنون
جناب sekhavat اگر میشه کمی بیشتر توضیح بدین یا اگر براتون امکان داره یک برنامه نمونه برای توی این تاپیک up کنید اخه من تا حالا به صورت کاربردی از sql استفاده نکردم

Evil 69
یک شنبه 17 شهریور 1387, 07:38 صبح
اي بابا كسي نيست كه در اين مورد يك سورس به ما بده؟

Evil 69
یک شنبه 17 شهریور 1387, 08:32 صبح
لطفا به اين سوال جواب بدين
من مي خام بدونم اگر بانك sql رو اول به استفاده از ويزادر به برنامه اضافه كنيم و بعد بخايم كاري كنيم كه برنامه بعد از نصب روي سيستم ديگه بانك رو بشناسه و با اون كار كنه بايد چه كار بكنم .
اگر ميشه يك نمونه برنامه بذارين يا حد اقل يك توضح كامل بدين اخه اين راه حل هايي رو كه دوستان ديگه دادن همه توي سيستم من نمي دم چرا خطا ميده و كار نمي كنه

elmira_63
یک شنبه 17 شهریور 1387, 09:33 صبح
اي بابا كسي نيست كه در اين مورد يك سورس به ما بده؟

اینجا http://barnamenevis.org/forum/showthread.php?t=121264
یه دفترچه تلفن گذاشتم که اول میاد دیتابیس رو که کنار فایل exe هستش رو attach می کنه بعد برنامه رو اجرا می کنه