PDA

View Full Version : متغیر های عمومی برای دیتابیس



pernia
یک شنبه 13 اردیبهشت 1388, 10:18 صبح
ببخشید اگه سوال من ممکنه یه مدار ساده باشه واسه خیلی ها...و کمی هم خجالت میکشم
اخه از سواد آشنایی کم من با متغیر ها در VB.net مشتق میشه..
موضوع اینه که من میخوام مثل زمانی که در VB6.0 یک متغیر عمومی و سراسری واسه یه
دیتابیس تعریف میکردم ، داخل vb.net هم همین کار رو بکنم..
در vb6 مینوشتم که :
public db as database
و این کار رو در اول یه ماژول انجام میدادم و بعدش هم مقدار دهیش رو داخل sub main انجام میدادم و اونوقت هم همه متغیر های Recordset رو بهش وصل میکردم مشکلی پیش نمیومد.

اما الان چندین تلاش ناموفق داشتم در این تبدیل...چون هر جوری خواستم که از متغیر

Dim db As System.Data.OleDb.OleDbConnection
برای تعداد بیش از یک command استفاده کنم اجازه نداد...
چیکار باید انجام بدم حالا؟
دقیقا کجا تعریف کنم با چه نوع keyword ......
بالاخره نفهمیدم static باشه یا public !؟!؟
واینکه کجا مقدار دهیش کنم برای فایل Access بهتره؟

araelectronic@ymail.com
یک شنبه 13 اردیبهشت 1388, 11:24 صبح
با سلام

داخل ماجول تعریف کنید بصورت public بشکل زیر



Public con As New SqlConnection


و سپس از خاصیت coonectionstring برای تغییر کانکشن استفاده کنید


con.connectionstring=""

pernia
دوشنبه 14 اردیبهشت 1388, 10:18 صبح
سلام دوست خوبم..
مرسی اما منظورم این نبود..
همین چیزی که نوشتی رو در نظر بگیر ...
حالا به عنوان مثال دوتا زیر برنامه رو هم کنارش در نظر بگیر: که داخل هر کدومش یک command واسه وصل شدن به پایگاه وجود داره. میخوام از یک connection همانطوری که شما تعریف کردی استفاده کنم و برای اتصال همه command هام در سرار پروژه از همین یه connection بهره ببرم .

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

خوب ما داخل vb6 یک متغیر db تعریف میکردیم و بعد همه recordset ها روبهش وصل میکردیم و مشکلی نداشتیم..
حالا راهش چیه؟
تشکر از اینکه کمک میکنید

araelectronic@ymail.com
دوشنبه 14 اردیبهشت 1388, 10:29 صبح
با سلام
دوست عزیز نحوه ارتباط در adodb (vb6) با ado.net کاملا متفاوت است در adodb شما تا آخر برنامه باید کانکشن را باز نگه میداشتید ولی در ado.net بعد از استفاده باید ببندید به خاطر مسائل شبکه و امنیت به این شکل عوض کردند.

شما میتوانید از چند کانکشن استفاده کنید (راه حل درست) یا وقتی کانکشن باز است در تابع دوم دیگه اونو باز نکنید و sqlcommand را بدون باز کردن دوباره کانکشن استفاده کنید که نیاز به دقت خیلی زید داره.

اگر منظورمو متوجه نشدید مثال بزنم؟
موفق باشد

morteza_261
دوشنبه 14 اردیبهشت 1388, 11:27 صبح
Public Shared PubStrConString As String = ("Data Source=(local);Initial Catalog=Institute;Integrated Security=True")
'اتصال بانک اطلاعاتی PubSqlCon.ConnectionString = PubStrConString
PubSqlCom.CommandText = "INSERT INTO TblLogIn (UserName, Pass) VALUES (N'" & TxtFName.Text & Space(3) & TxtLName.Text & "','" & txtPass.Text & "')" PubSqlCom.Connection = PubStrConString If PubSqlCon.State = ConnectionState.Closed Then PubSqlCon.Open() PubSqlCom.ExecuteReader() If PubSqlCon.State = ConnectionState.Open Then PubSqlCon.Close()

pernia
سه شنبه 15 اردیبهشت 1388, 11:14 صبح
با سلام
.
.
.
یا وقتی کانکشن باز است در تابع دوم دیگه اونو باز نکنید و sqlcommand را بدون باز کردن دوباره کانکشن استفاده کنید که نیاز به دقت خیلی زید داره.
.
.
.
موفق باشد


همین....احسنت وقتی connection باز هست میخوام جای دیگه هم بشه استفاده کرد...
از همین تیکه یه sample میزاری دوست گرامی؟ من توی همین مشکل دارم.
من به خاطر کار کردن با یه دیتابیس که رکوردهای اونا بچه های بعضی از پدرا هستن نمیتونم از چندتا connection استفاده کنم یعنی پدر سیستم در میاد چون توابع recursive دارم که بعضی مواقع زیاد call میشند.
حالا تصور کن یه دفعه 200 تا connection بخوره چه وضعیتی درست میشه!!!!
اقا دمت گرم ..

araelectronic@ymail.com
سه شنبه 15 اردیبهشت 1388, 12:49 عصر
با سلام




con.open
mycommand.sqlcommand=""
mycommand.connection=con
mycommand.exequte...
.
.
.


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