PDA

View Full Version : ارتباط با پایگاه داده ی mysql



121314
سه شنبه 12 مرداد 1389, 10:22 صبح
سلام بچه ها.من یه پروژه دارم که بااید با زبان C#‎‎‎ به بانک mysql روی linux متصل بشم ولی چیز زیادی در موردش نمیدونم لطفا منو راهنمایی کنید فرمی که طراحی کردم میذارم ولی ارتباط با بانک رو نمیتونم انجام بدم توی همه ی کتاب ها ارتباط با sql server هست ولی مطلبی در مورد mysql پیدا نمیکنم.:عصبانی++::گریه:
mheidary86@gmail.com

sinashahab
دوشنبه 18 مرداد 1389, 12:33 عصر
من می دونم .

اگه هنوز نیاز داری بگو جوابتو بدم .

121314
چهارشنبه 20 مرداد 1389, 11:07 صبح
من می دونم .

اگه هنوز نیاز داری بگو جوابتو بدم .
سلام واقعا خوشحال شدم که میتونی به من کمک کنی .من شدیدا منتطرم چند روز دیگه بیشتر فرصت ندارم.
مرسی:لبخندساده::بوس:

Hossein Bazyan
چهارشنبه 20 مرداد 1389, 13:01 عصر
سلام بچه ها.من یه پروژه دارم که بااید با زبان C#‎‎‎‎ به بانک mysql روی linux متصل بشم ولی چیز زیادی در موردش نمیدونم لطفا منو راهنمایی کنید فرمی که طراحی کردم میذارم ولی ارتباط با بانک رو نمیتونم انجام بدم توی همه ی کتاب ها ارتباط با sql server هست ولی مطلبی در مورد mysql پیدا نمیکنم.:عصبانی++::گریه:
mheidary86@gmail.com

سلام
باید کنکتور mysql رو دانلود کنید و فایل dll مربوطه را به برنامه اضافه نمائید سپس در فرمها import بشه در اینحالت مانند sql میتوانی از آن استفاده کنید.
من 80% برنامه هام رو از mysql استفاده میکنم
اینهم لینک دانلود کنکتور

http://dev.mysql.com/downloads/connector/net/

121314
چهارشنبه 20 مرداد 1389, 13:58 عصر
سلام
باید کنکتور mysql رو دانلود کنید و فایل dll مربوطه را به برنامه اضافه نمائید سپس در فرمها import بشه در اینحالت مانند sql میتوانی از آن استفاده کنید.
من 80% برنامه هام رو از mysql استفاده میکنم
اینهم لینک دانلود کنکتور

http://dev.mysql.com/downloads/connector/net/
سلام
ممنون از راهنماییتون .ولی امکان دانلودش نیست و فیلتر شده.بدون کانکتور نمیتونم ارتباط بدم راه دیگه ای به ذهنم نمیرسه .اگه دارید برام بذارید ممنون میشم.

Hossein Bazyan
چهارشنبه 20 مرداد 1389, 14:12 عصر
سلام
ممنون از راهنماییتون .ولی امکان دانلودش نیست و فیلتر شده.بدون کانکتور نمیتونم ارتباط بدم راه دیگه ای به ذهنم نمیرسه .اگه دارید برام بذارید ممنون میشم.

سلام
برای من فیلتر نیست ایمیلت رو بده یا با پیغام خصوصی بفرست تا برات ایمیل کنم

121314
چهارشنبه 20 مرداد 1389, 17:50 عصر
سلام
برای من فیلتر نیست ایمیلت رو بده یا با پیغام خصوصی بفرست تا برات ایمیل کنم
منتظرم
golmarmail@yahoo.com

121314
جمعه 22 مرداد 1389, 19:29 عصر
سلام بچه ها.من یه پروژه دارم که بااید با زبان C#‎‎‎‎ به بانک mysql روی linux متصل بشم ولی چیز زیادی در موردش نمیدونم لطفا منو راهنمایی کنید فرمی که طراحی کردم میذارم ولی ارتباط با بانک رو نمیتونم انجام بدم توی همه ی کتاب ها ارتباط با sql server هست ولی مطلبی در مورد mysql پیدا نمیکنم.:عصبانی++::گریه:
mheidary86@gmail.com
دیگه دارم نا امید میشم.

Hossein Bazyan
جمعه 22 مرداد 1389, 20:52 عصر
دیگه دارم نا امید میشم.

سلام
نمیخواد نا امید بشی تلاش کن

من هنوز هم که هنوزه منظورت رو نفهمیدم . یه بار میگی ویندوز یه بار لینوکس
به هر حال من یک تکه کد نوشتم شاید منظورت همین باشد
اول یه جدول بنام verkoop بساز


CREATE TABLE `verkoop` (
`id` INT( 4 ) NOT NULL ,
`Name` VARCHAR( 20 ) NULL ,
`Family` VARCHAR( 20 ) NULL ,
PRIMARY KEY ( `id` )
) ENGINE = MYISAM ;

با کلید New میتوان آخرین رکورد را به دست آورد و با Insert میتوان رکورد را به بانک افزود و Refresh هم معلومه گرید رو رفرش میکنه
در ضمن من این کد رو از روی برنامه های خودم برداشتم به همین دلیل از یک سری توابع خودم استفاده کردم که اگر متوجه نشدی بگو تا توضیح دهم

من نمیتوانم فایلی رو Attach کنم به هیمن دلیل برات ایمیل میکنم

121314
جمعه 22 مرداد 1389, 21:30 عصر
سلام
نمیخواد نا امید بشی تلاش کن

من هنوز هم که هنوزه منظورت رو نفهمیدم . یه بار میگی ویندوز یه بار لینوکس
به هر حال من یک تکه کد نوشتم شاید منظورت همین باشد
اول یه جدول بنام verkoop بساز


CREATE TABLE `verkoop` (
`id` INT( 4 ) NOT NULL ,
`Name` VARCHAR( 20 ) NULL ,
`Family` VARCHAR( 20 ) NULL ,
PRIMARY KEY ( `id` )
) ENGINE = MYISAM ;

با کلید New میتوان آخرین رکورد را به دست آورد و با Insert میتوان رکورد را به بانک افزود و Refresh هم معلومه گرید رو رفرش میکنه
در ضمن من این کد رو از روی برنامه های خودم برداشتم به همین دلیل از یک سری توابع خودم استفاده کردم که اگر متوجه نشدی بگو تا توضیح دهم

من نمیتوانم فایلی رو Attach کنم به هیمن دلیل برات ایمیل میکنم
سلام ممنون از لطف شما.
من یه بار دیگه توضیح میدم.database من (mysql ) روی لینوکس و باید از طریق زبان سی شارپ بهش متصل بشم.نمیدونم توضیحاتم کامل بود یا نه؟

Hossein Bazyan
جمعه 22 مرداد 1389, 21:43 عصر
سلام ممنون از لطف شما.
من یه بار دیگه توضیح میدم.database من (mysql ) روی لینوکس و باید از طریق زبان سی شارپ بهش متصل بشم.نمیدونم توضیحاتم کامل بود یا نه؟

سلام
هیچ فرقی نداره . برنامه ای را که من برات فرستادم کار میکنه یا نه ؟
در ضمن تبدیل به سی شارپ که مشکل نیست خودت میتونی تبدیل کنی.

121314
یک شنبه 24 مرداد 1389, 09:50 صبح
سلام ممنون از لطف شما.
من یه بار دیگه توضیح میدم.database من (mysql ) روی لینوکس و باید از طریق زبان سی شارپ بهش متصل بشم.نمیدونم توضیحاتم کامل بود یا نه؟
بین خانوما وآقایون کسی نبود جواب مارو بده؟:متفکر:

mortezagt
چهارشنبه 10 شهریور 1389, 01:15 صبح
سلام
برای من فیلتر نیست ایمیلت رو بده یا با پیغام خصوصی بفرست تا برات ایمیل کنم

دی ال ال های مای اسکیوال بخاطر تحریم ایران قابل دانلود نیست دوتا راه برای دانلودشون
داری 1 - با فیلترشکن دانلودشون کنی. 2 - فایل ضمیمه رو دانلود کنی (MySql Dll):بامزه:

zoofa
چهارشنبه 17 شهریور 1389, 04:24 صبح
سلام دوست عزیز
شما وقتی یه برنامه بنویسی که بتونی به mysql کانکت بشی هیچ تفاوتی نمی کنه که سرورتون روی لینوکس باشه یا روی ویندوز.
مهم آی پی سرور هست که باید توی کانکشن استرینگ تنظیم کنید.

فقط نکته ای که می مونه اینه که بصورت پیش فرض نمی توان به mysql که بر روی لینوکس نصب شده از طریق شبکه متصل شد و فقط می توان به صورت local متصل شد.
برای دادن دسترسی از طریق شبکه به سرور mysql در لینوکس کافیه به فایل به آدرس /etc/mysql/my.cnf رفته و فایل را با یه ادیتور باز کنید و خط

...
...

bind-address = 127.0.0.1

...
...


رو پیدا کنید و اولش یه # بزنید تا تبدیل به کامنت شه و فایل رو ذخیره کنید و سرور mysql رو ریست کنید. با انجام این کار از طریق شبکه می توان به mysql موجود بر روی لینوکس کانکت شد.

حالا میمونه طریقه متصل شدن از سی شارپ به mysql که با اون dll که دوستمون جناب mortezgat دادند میشه کانکت شد.
dll رو دانلود کنید و از منوی project -> add refrence به پروژتون اضافه کنید.
حالا میمونه کد نویسی که من قبلا یک کلاس واسه این کار نوشتم که به بانک مای اسکیو ال کانکت میشه. البته این کلاس به زبانه ویبی هست که خودتون می تونید به سی شارپ تبدیلش کنید. اگه هم مشکلی تو تبدیل هست بگید که خودم تبدیلش کنم.
بالای کلاس دو خط زیر را اضافه کنید.


Imports System.Data
Imports MySql.Data.MySqlClient


فقط کافیه این کلاس رو تو کلاسی که می خاید از دستورات mysql استفاده کنید به ارث ببرید.

و از توابع source و execute استفاده کنید.
تابع source واسه کوئری select استفاده میشه و نیجه رو میریزه توی ds توی جدول t1
تابع execute هم واسه کوئری های insert , update و delete استفاده میشه

نکته ی دیگه ای هم که هست اینه که وقتی از پارامترها استفاده می کنید توی sqlserver قبل از هر پارامتر علامت @ قرار می دیم اما در mysql علامت ؟ باید قرار بدیم.
اگه سوالی داشتید در خدمتم.
موفق باشید.




Public Class mysql_db_cls




Private cnn As New MySqlConnection
Private cmd As New MySqlCommand
Private sda As New MySqlDataAdapter
Protected ds As New DataSet
Protected psign As String = "?"
Private cnn_string As String


Public Sub New()


cnn_string = "server = ip_server; userid = root; password = pass;database = database;charset=utf8"

cnn.ConnectionString = cnn_string
cmd.Connection = cnn
End Sub



Protected Overloads Sub source(ByVal query As String, ByVal param() As MySqlParameter)


Try
cmd.CommandText = query
cmd.Parameters.Clear()
For I As Integer = 0 To param.Length - 2
cmd.Parameters.AddWithValue(param(I).ParameterName , param(I).Value)
Next

sda.SelectCommand = cmd
ds.Clear()
If cnn.State = ConnectionState.Open Then
cnn.Close()
End If

cnn.Open()
Catch ex As Exception
MessageBox.Show("خطا در اتصال به بانک ")
Application.Exit()
End Try
Try
sda.Fill(ds, "t1")
cnn.Close()
Catch ex As Exception

MessageBox.Show("خطا در اجرای کوئری")

Application.Exit()
Finally
If (cnn.State = ConnectionState.Open) Then
cnn.Close()
End If
End Try




End Sub

Protected Overloads Sub source(ByVal query As String)


Try
cmd.CommandText = query

sda.SelectCommand = cmd
ds.Clear()
If cnn.State = ConnectionState.Open Then
cnn.Close()
End If

cnn.Open()
Catch ex As Exception
MessageBox.Show("خطا در اتصال به بانک")
Application.Exit()
End Try
Try
sda.Fill(ds, "t1")
cnn.Close()

Catch ex As Exception

MessageBox.Show("خطا در اجرای کوئری")
Application.Exit()
Finally
If (cnn.State = ConnectionState.Open) Then
cnn.Close()
End If
End Try



End Sub

Protected Overloads Function execute(ByVal query As String) As Boolean

Try
cmd.CommandText = query
If cnn.State = ConnectionState.Open Then
cnn.Close()
End If

cnn.Open()
Catch ex As Exception
MessageBox.Show("خطا در اتصال به بانک")
Application.Exit()
End Try

Try
cmd.ExecuteNonQuery()
cnn.Close()
Return True
Catch ex As Exception

MessageBox.Show("خطا در اجرای کوئری")
Application.Exit()
Dim qq = ex.Message
Return False
End Try

End Function

Protected Overloads Function execute(ByVal query As String, ByVal param() As MySqlParameter) As Boolean

Try
cmd.CommandText = query
cmd.Parameters.Clear()
For I As Integer = 0 To param.Length - 2
cmd.Parameters.AddWithValue(param(I).ParameterName , param(I).Value)
Next
If cnn.State = ConnectionState.Open Then
cnn.Close()
End If

cnn.Open()
Catch ex As Exception
MessageBox.Show("خطا در اتصال به بانک")
Application.Exit()
End Try
Try
cmd.ExecuteNonQuery()
cnn.Close()
Return True
Catch ex As Exception

MessageBox.Show("خطا در اجرای کوئری")
Application.Exit()
Dim qq = ex.Message
Return False
End Try

End Function


End Class

lahij.ir
شنبه 24 مهر 1389, 15:36 عصر
سلام دوست عزیز
شما وقتی یه برنامه بنویسی که بتونی به mysql کانکت بشی هیچ تفاوتی نمی کنه که سرورتون روی لینوکس باشه یا روی ویندوز.
مهم آی پی سرور هست که باید توی کانکشن استرینگ تنظیم کنید.

فقط نکته ای که می مونه اینه که بصورت پیش فرض نمی توان به mysql که بر روی لینوکس نصب شده از طریق شبکه متصل شد و فقط می توان به صورت local متصل شد.
برای دادن دسترسی از طریق شبکه به سرور mysql در لینوکس کافیه به فایل به آدرس /etc/mysql/my.cnf رفته و فایل را با یه ادیتور باز کنید و خط

...
...

bind-address = 127.0.0.1

...
...
رو پیدا کنید و اولش یه # بزنید تا تبدیل به کامنت شه و فایل رو ذخیره کنید و سرور mysql رو ریست کنید. با انجام این کار از طریق شبکه می توان به mysql موجود بر روی لینوکس کانکت شد.

حالا میمونه طریقه متصل شدن از سی شارپ به mysql که با اون dll که دوستمون جناب mortezgat دادند میشه کانکت شد.
dll رو دانلود کنید و از منوی project -> add refrence به پروژتون اضافه کنید.
حالا میمونه کد نویسی که من قبلا یک کلاس واسه این کار نوشتم که به بانک مای اسکیو ال کانکت میشه. البته این کلاس به زبانه ویبی هست که خودتون می تونید به سی شارپ تبدیلش کنید. اگه هم مشکلی تو تبدیل هست بگید که خودم تبدیلش کنم.
بالای کلاس دو خط زیر را اضافه کنید.


Imports System.Data
Imports MySql.Data.MySqlClient
فقط کافیه این کلاس رو تو کلاسی که می خاید از دستورات mysql استفاده کنید به ارث ببرید.

و از توابع source و execute استفاده کنید.
تابع source واسه کوئری select استفاده میشه و نیجه رو میریزه توی ds توی جدول t1
تابع execute هم واسه کوئری های insert , update و delete استفاده میشه

نکته ی دیگه ای هم که هست اینه که وقتی از پارامترها استفاده می کنید توی sqlserver قبل از هر پارامتر علامت @ قرار می دیم اما در mysql علامت ؟ باید قرار بدیم.
اگه سوالی داشتید در خدمتم.
موفق باشید.




Public Class mysql_db_cls




Private cnn As New MySqlConnection
Private cmd As New MySqlCommand
Private sda As New MySqlDataAdapter
Protected ds As New DataSet
Protected psign As String = "?"
Private cnn_string As String


Public Sub New()


cnn_string = "server = ip_server; userid = root; password = pass;database = database;charset=utf8"

cnn.ConnectionString = cnn_string
cmd.Connection = cnn
End Sub



Protected Overloads Sub source(ByVal query As String, ByVal param() As MySqlParameter)


Try
cmd.CommandText = query
cmd.Parameters.Clear()
For I As Integer = 0 To param.Length - 2
cmd.Parameters.AddWithValue(param(I).ParameterName , param(I).Value)
Next

sda.SelectCommand = cmd
ds.Clear()
If cnn.State = ConnectionState.Open Then
cnn.Close()
End If

cnn.Open()
Catch ex As Exception
MessageBox.Show("خطا در اتصال به بانک ")
Application.Exit()
End Try
Try
sda.Fill(ds, "t1")
cnn.Close()
Catch ex As Exception

MessageBox.Show("خطا در اجرای کوئری")

Application.Exit()
Finally
If (cnn.State = ConnectionState.Open) Then
cnn.Close()
End If
End Try




End Sub

Protected Overloads Sub source(ByVal query As String)


Try
cmd.CommandText = query

sda.SelectCommand = cmd
ds.Clear()
If cnn.State = ConnectionState.Open Then
cnn.Close()
End If

cnn.Open()
Catch ex As Exception
MessageBox.Show("خطا در اتصال به بانک")
Application.Exit()
End Try
Try
sda.Fill(ds, "t1")
cnn.Close()

Catch ex As Exception

MessageBox.Show("خطا در اجرای کوئری")
Application.Exit()
Finally
If (cnn.State = ConnectionState.Open) Then
cnn.Close()
End If
End Try



End Sub

Protected Overloads Function execute(ByVal query As String) As Boolean

Try
cmd.CommandText = query
If cnn.State = ConnectionState.Open Then
cnn.Close()
End If

cnn.Open()
Catch ex As Exception
MessageBox.Show("خطا در اتصال به بانک")
Application.Exit()
End Try

Try
cmd.ExecuteNonQuery()
cnn.Close()
Return True
Catch ex As Exception

MessageBox.Show("خطا در اجرای کوئری")
Application.Exit()
Dim qq = ex.Message
Return False
End Try

End Function

Protected Overloads Function execute(ByVal query As String, ByVal param() As MySqlParameter) As Boolean

Try
cmd.CommandText = query
cmd.Parameters.Clear()
For I As Integer = 0 To param.Length - 2
cmd.Parameters.AddWithValue(param(I).ParameterName , param(I).Value)
Next
If cnn.State = ConnectionState.Open Then
cnn.Close()
End If

cnn.Open()
Catch ex As Exception
MessageBox.Show("خطا در اتصال به بانک")
Application.Exit()
End Try
Try
cmd.ExecuteNonQuery()
cnn.Close()
Return True
Catch ex As Exception

MessageBox.Show("خطا در اجرای کوئری")
Application.Exit()
Dim qq = ex.Message
Return False
End Try

End Function


End Class


ممنون بابت توضیحات ، من قبلا تو vb6 خیلی راحت به سرور وصل میشدم اما vb.net یکم فرق داره انگار من کانکت میشم و میتونم اطلاعات و داخل datagride بریزم اما سوالم اینه ، اگه بخوام فیلد های یه جدول و تک تک بسته به شماره ی فیلد id که فیلد کلید هست بخونم و داخل تکس باکس بزیزم باید چی کار کنم ؟ مثلا فیلد id شماره ی 3 تمام اطلاعاتشو به ترتیب داخل text box بریزم