نکاتی در رابطه با ADO.Net
سلام
میگم یه کلاس با این کد به پروژتون اضافه کنید
Imports System.Data.SqlClient
PublicClass DataBase
PrivateShared mvarConnectionString AsString
PrivateShared mvarCnt As SqlConnection
PrivateShared mvarCmd As SqlCommand
PrivateShared mvarDa As SqlDataAdapter
PublicSharedProperty ConnectionString() AsString
Get
Return mvarConnectionString
EndGet
Set(ByVal value AsString)
mvarConnectionString = value
EndSet
EndProperty
PublicSharedReadOnlyProperty Cnt() As SqlConnection
Get
If IsNothing(mvarCnt) Then
mvarCnt = New SqlConnection
EndIf
If mvarCnt.State <> ConnectionState.Open Then
With mvarCnt
.ConnectionString = mvarConnectionString
.Open()
EndWith
EndIf
Return mvarCnt
EndGet
EndProperty
PublicSharedReadOnlyProperty Cmd() As SqlCommand
Get
If IsNothing(mvarCmd) Then
mvarCmd = New SqlCommand
EndIf
mvarCmd.Connection = Cnt
Return mvarCmd
EndGet
EndProperty
PublicSharedReadOnlyProperty Da() As SqlDataAdapter
Get
If IsNothing(mvarDa) Then
mvarDa = New SqlDataAdapter
EndIf
mvarDa.SelectCommand = Cmd
Return mvarDa
EndGet
EndProperty
EndClass
حالا که چی ؟ :متفکر:
شاید اول باید میگفتم که هدف از این کار چیه ، خوب فرض کنید شما میخواید یه سری اطلاعات رو از بانکتون که SQL Server هست بخونید
یه راهش اینه از سیستمهای Rad خود مایکروسافت استفاده کنید یعنی ویزاردی DataSetو TableAdapterرو BindingSourecاو ادامه مراحل رو انجام بدید تا آخر
یه راهشم اینه که نونه بازویه خودتونو بخورید یعنی با استفاده از کد اول یه Connection تعریف کنید بعد یه Command و بعدشم یه DataAdapter وپس از ست کردن پارامتراشون Datatable مورد نظر رو پر کنید اینجوری
Private Cnt AsNew SqlClient.SqlConnection
Private Cmd AsNew SqlClient.SqlCommand
Private Da AsNew SqlClient.SqlDataAdapter
Private Dt AsNew DataTable
PrivateSub FillData()
With Cnt
.ConnectionString = " ...... "
.Open()
EndWith
With Cmd
.Connection = Cnt
.CommandText = ".......(Quary Morede Nazar)......"
EndWith
With Da
.SelectCommand = Cmd
.Fill(Dt)
EndWith
EndSub
نمیخوام روده دارازی کنم چون میدونم همتون بهتر از من این داستانارو بلدین
حسن این کلاس اینه که اول برنامه ConnectionString رو ست میکنین از اون به بعد شما هرجای برنامتون که احتیاج به ارتباط با DataBaseاتون داشته باشین فقط کافیه Quaryتون رو تو Cmd.CommandText بریزید و ازش استفاده کنید
دیگه نمیخواد هی Connection رو هی چک کنید که Open هست یا نه یا کارایه تکراری رو انجام بدین
چند تا مثال میزنم که بهتر منظورم رو برسونم
مثلاً یه Insert یا Update
With Cmd
.CommandText = ".......(Quary Morede Nazar)......"
.CommandType = CommandType.Text
.ExecuteNonQuery()
EndWith
یا پر کردن یه DataTable
Cmd.CommandText = ".......(Quary Morede Nazar)......"
Da.Fill(Dt)
راستی حسناش زیاده نمیشه همشو نوشت اگه استفاده کردین ضرر نمیکنین
از اینکه وقت گزارشتین ممنونم
نقل قول: شاید یه نکته آموزنده !!
آیا در وب هم میشه از این روش استفاده کرد؟؟
نقل قول: شاید یه نکته آموزنده !!
دوستان من بهتر نیست به کفته حضرت علی کم بگوئیم و...........
به نظر این حقیر، بهتره که بزرگترها این همه غرور رو بذارن کنار و دست ما کوچیکترها رو بگیرن شاید ما هم تونستیم تو این حرفه به جائی برسیم
فکر نمی کنم جای این گلایه اینجا باشه ولی این روزها دیگه هیچ سوالی حل نمیشه بلکه فقط روزانه سوالهای زیادی بدون جواب می مونه ،البته بگذریم از بسیاری مطالب اضافی و بی مورد که یک هو به ذهن امثال من می رسه و عشقمون می کشه برای این فکر بی ارزش که شاید به خاطر اینکه مدتها دنبال اون بودیم ویک هو پیدا ش کردیم یک تاپیک ایجاد کنیم .
تاپیکها رو پر بار کنیم تا همه پیشرفت رو ببینیم ،
بیائید همه با هم برای همه تلاش کنیم تا هممون رو به جلو قدم برداریم نه اینکه دانسته هامون رو دلمون نیاد در اختیار دیگران بگذاریم
شرمنده زیادی فک ول کردم
نقل قول: نکاتی در رابطه با ADO.Net
نقل قول:
نوشته شده توسط
naeeme
آیا در وب هم میشه از این روش استفاده کرد؟؟
حقيقتاً من از وب زياد اطلاعاتي ندارم اميدوارم بچه هاي وب کار جوابتون رو بدن
نقل قول: نکاتی در رابطه با ADO.Net
در ادامه مطلب بالا ميخواستم بگم که شما از اين Class ميتونيد برايه ارتباط با
هر ديتابيسي استفاده کنيد
يعني فقط با يه تغيير کافيه که برا ارتباط با Access و امثال اون
Imports System.Data.OleDb
PublicClass Connection
PrivateShared mvarConnectionString AsString
PrivateShared mvarCnt As OleDb.OleDbConnection
PrivateShared mvarCmd As OleDb.OleDbCommand
PrivateShared mvarDa As OleDb.OleDbDataAdapter
يا اوراکل
Imports System.Data.OracleClient
PublicClass Connection
PrivateShared mvarConnectionString AsString
PrivateShared mvarCnt As OracleConnection
PrivateShared mvarCmd As OracleCommand
PrivateShared mvarDa As OracleDataAdapter
قابل استفاده بشه
نقل قول: نکاتی در رابطه با ADO.Net
با اجازه!!
نقل قول:
نوشته شده توسط
Dariuosh
حقيقتاً من از وب زياد اطلاعاتي ندارم اميدوارم بچه هاي وب کار جوابتون رو بدن
اول، مرسی که جوابم رو دادید. فکر کنم توی وب هم بشه استفاده کرد. حداقل تا حالا که برنامه من خطانداده!! اگه وقتی Upload کردم خطا بده، دیگه نمی دونم!!
دوم، یه متد این کدتون کم داره. متدی که connection رو refresh کنه. خیلی وقتها به هر دلیلی امکان قطع ارتباط وجود داره که نیاز هست یه متد برای به روز رسانی نوشته بشه. (البته من این رو برای یاد آوری به سایر دوستان نوشتم)
نقل قول: نکاتی در رابطه با ADO.Net
نقل قول:
نوشته شده توسط
naeeme
دوم، یه متد این کدتون کم داره. متدی که connection رو refresh کنه. خیلی وقتها به هر دلیلی امکان قطع ارتباط وجود داره که نیاز هست یه متد برای به روز رسانی نوشته بشه. (البته من این رو برای یاد آوری به سایر دوستان نوشتم)
If mvarCnt.State <> ConnectionState.Open Then
With mvarCnt
.ConnectionString = mvarConnectionString
.Open()
EndWith
خوب اين قسمتش همين کارو ميکنه ديگه !
در حقيقت با هر بار فراخواني يه بار وضعيت ارتباط چک ميشه اگه برقرار بود که هيچ وگرنه دوباره Open ميکنه
نقل قول: نکاتی در رابطه با ADO.Net
نقل قول:
نوشته شده توسط
Dariuosh
سلام
حسن این کلاس اینه که اول برنامه ConnectionString رو ست میکنین از اون به بعد شما هرجای برنامتون که احتیاج به ارتباط با DataBaseاتون داشته باشین فقط کافیه Quaryتون رو تو Cmd.CommandText بریزید و ازش استفاده کنید
دیگه نمیخواد هی Connection رو هی چک کنید که Open هست یا نه یا کارایه تکراری رو انجام بدین
سؤال:
1. در برنامه هاي چند لايه چطور مي شه ؟
2. مي شه يكي از دوستان اين كد به #C بده !!؟
نقل قول: نکاتی در رابطه با ADO.Net
با عرض سلام و خسته نباشید خدمت همه ی دوستان
ببخشید می خواسنم بدونم این کلاس با کلاس خود data set vb یکی میدونید.اگه جوابتون آره است که باید بگم اطلاعاتتون در این زمینه ناکافیه
dataset vb این امکان بهتون میده که دیگه با command های sql در گیر نشید البته این یه مثالش بود.اگه اطلاعات بیشتری خواستین توصیه میکنم کتابای ado.net رو بخونید
نقل قول: نکاتی در رابطه با ADO.Net
اگر مقدور است يک پروژه که با کلاس ها کار شده,در حد یک ثبت ساده
برام بگذاريدآخه من تعریف کلاس ها را فهميدم ولي شيوه دسترسی و استفاده ي آن را نمي دانم
اگه ممکنه سریعتر البته شاید دوستان نظرشان این باشدکه برنامه خودم را اشکال گیری کنند , روی
.ExecuteNonQuery()
بعد از اجرا می ایستدو خطای زیر را میدهد البته می دانم دلیل به خاطر عدم اتصال با بانک است
Connection property has not been initialized.
با تشکرنکته دیگه اینکه بعد از نوشتن این کدها صفحه ی design از بین می رود
///////////////////////////////////////////////////////////////////
Imports System.Data.SqlClient
Public Class DataBase
Private Shared mvarConnectionString As String
Private Shared mvarCnt As SqlConnection
Private Shared mvarCmd As SqlCommand
Public Shared Property ConnectionString() As String
Get
Return mvarConnectionString
End Get
Set(ByVal ByValvalue As String)
mvarConnectionString = "server=(local);database=a;integrated security=true"
End Set
End Property
Public Shared ReadOnly Property Cnt() As SqlConnection
Get
If IsNothing(mvarCnt) Then
mvarCnt = New SqlConnection
End If
If mvarCnt.State <> ConnectionState.Open Then
With mvarCnt
.ConnectionString = mvarConnectionString
.Open()
End With
End If
Return mvarCnt
End Get
End Property
Public Shared ReadOnly Property Cmd() As SqlCommand
Get
If IsNothing(mvarCmd) Then
mvarCmd = New SqlCommand
End If
mvarCmd.Connection = Cnt
Return mvarCmd
End Get
End Property
End Class
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Cnt As New SqlClient.SqlConnection
Dim Cmd As New SqlClient.SqlCommand
With Cnt
.ConnectionString = "server=(local);database=a;integrated security=true"
.Open()
End With
With Cmd
.CommandText = "insert into b values (11,'jj','ii')"
.CommandType = CommandType.Text
.ExecuteNonQuery()
End With
End Sub
End Class
نقل قول: نکاتی در رابطه با ADO.Net
خواهشن اونایی که کار کردن یکی از برنامه هاشون رو بذارن
نقل قول: نکاتی در رابطه با ADO.Net
با سلام
دوستان كسي نمي تونه يه كلاس ثبت رو بنويسه!!!
نقل قول: نکاتی در رابطه با ADO.Net
سلام
در پست اول یک کلاس نوشته میشه . چطوری میشه ازش استفاده کرد
مذسی
نقل قول: نکاتی در رابطه با ADO.Net
نقل قول: نکاتی در رابطه با ADO.Net
میشه دستورات حذف و درج و جستجو و آپدیت در بانک رو به شکل زیر بزارین؟
ببیندی همون راهی که گفتین ( با استفاده از dataset - oledbAdabpter -oledbConnection و ... که توی toolbox هست ) تورو خدا دستوراتشو به این شکل بنویسید- خسته شدم مخم پوکیید
این دستور درج اطلاعاته :
DataRow dr = bank1DataSet1.Student.NewRow();
dr["S"] = txtsh.Text;
dr["shmeli"] = txtshmeli.Text;
dr["fname"] = txtfname.Text;
dr["lname"] = txtlname.Text;
dr["mozo"] = txtmozo.Text;
dr["maghta"] = cboxmaghta.Text;
dr["reshte"] = cboxreshte.Text;
dr["ostadname"] = cboxostad.Text;
dr["city"] = cboxcity.Text;
string temp1 = cboxtsyear.Text.ToString() + "/" + cboxtsmonth.Text.ToString() + "/" + cboxtsday.Text.ToString();
dr["tarikhs"] = temp1;
string temp2 = cboxttyear.Text.ToString() + "/" + cboxttmonth.Text.ToString() + "/" + cboxttday.Text.ToString();
dr["tarikht"] = temp2;
dr["nomre"] = txtnomre.Text;
dr["address"] = txtaddress.Text;
bank1DataSet1.Student.Rows.Add(dr);
oleDbDataAdapter1.Update(bank1DataSet1);
studentBindingSource.EndEdit();
MessageBox.Show("etelaat sabt shod");