PDA

View Full Version : روش دسترسی به داده ها



محمدصفری
جمعه 10 تیر 1384, 16:39 عصر
من روی سیستم خودم SQL Server 2000 رو نصب کردم و از طریق VB.Net میتونم
به جداول موجود در SQL Server دسترسی داشته باشم .
حال چطوری میتونم به یک جدول یک رکورد اضافه کنم ؟ و یا چطور میتونم به
یک فیلد دسترسی داشته باشم.

علیرضا مداح
شنبه 11 تیر 1384, 00:24 صبح
سلام .
برای اضافه نمودن رکورد به یک جدول راههای مختلفی وجود دارد :
در صورتی که از روش Bind کردن استفاده میکنید (یعنی کنترلهای مختلفی از جمله تکست باکس ، لیست باکس،کامبوباکس،دیتاگرید و ... را به دیتاست و یا دیتاویو Bind مینمایید) از کد زیر استفاده نمایید :


Me.BindingContext(s, "TableName").EndCurrentEdit()
Me.BindingContext(s, "TableName").AddNew()

در کد بالا ابتدا عملیات ویرایش خاتمه میپذیرد و سپس یک رکورد خالی به بانک اضافه میشود ، بعد از اینکه فیلددهای رکورد(های) مورد نظر توسط کاربر پر شدند ، میبایست از کد زیر در جهت آپدیت نمودن بانک اطلاعاتی اسفاده نمایید :


SqlDataAdapter1.Update(MyDataSet, "TableName")

راه دیگری هم برای اضافه کردن رکورد جدید به بانک وجود دارد :


Try
Dim MyRow As DataRow = DataSet11.Tables("TableName").NewRow
MyRow("Field1") = "Value1"
MyRow("Field2") = "Value2"
MyRow("Field3") = "Value3"
'...

DataSet11.Tables("TableName").Rows.Add(MyRow)
SqlDataAdapter1.Update(DataSet11)
Catch ex As SqlClient.SqlException
MessageBox.Show(ex.Message, "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error)
Catch ex2 As Exception
MessageBox.Show(ex2.Message, "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try

برای دسترسی به مقدار یک فیلد هم میبایست به صورت زیر عمل نمایید :


DataSet11.Tables("TableName").Rows(RowNo).Item("FieldName")

سلماس
شنبه 11 تیر 1384, 00:33 صبح
با یک DataSet میشه به چند جدول دسترسی داشت یا باید چند تا DataSet داشت

علیرضا مداح
شنبه 11 تیر 1384, 00:47 صبح
بله . هر دیتاست میتواند از چند جدول تشکیل شده و بین جداول نیز میتوان RelationShip برقرار نمود ، جداول در دیتاست در کالکشن Tables قرار میگیرند .

سلماس
شنبه 11 تیر 1384, 00:51 صبح
در ضمن میشه یک قطعه کد مثال بزنید و مفهوم RelationShip رو بیشتر توضیح بدید

سلماس
شنبه 11 تیر 1384, 01:00 صبح
DataSet11.Tables("TableName").Rows(RowNo).Item("FieldName")

در اینجا منظور از RowNo چی هست ؟

علیرضا مداح
شنبه 11 تیر 1384, 01:06 صبح
دوست عزیز در جهت جستجو میان چند جدول مختلف میبایست از تکنیک RelationShip استفاده نمود که جداول مختلف توسط یک یا چند فیلد که در بین همگی آنها مشترک میباشند به هم دیگر پیوند میخورند . در این روش سرعت کار با بانک بالاتر میرود .
مثال : فرض کنید ما در دیتاست سه جدول به نامهای زیر داریم :


Students
Marks
Images

برای دسترسی به هر کدام از جدولها هم میتوان از نام جدول و هم میتوان از ایندکس جدول در کاکلشن Tables مربوط به دیتاست استفاده نمود :


'By TableName
MyDataset.Tables("Marks")

'By Table Index
MyDataset.Tables(1)

علیرضا مداح
شنبه 11 تیر 1384, 01:08 صبح
DataSet11.Tables("TableName").Rows(RowNo).Item("FieldName")

در اینجا منظور از RowNo چی هست ؟

منظور از RowNo مقداری از نوع Integer میباشد که بیانگر ایندکس سطر مورد نظر میباشد .

سلماس
شنبه 11 تیر 1384, 11:24 صبح
آیا قرار دادن یک دیتاست و دسترسی به چند جدول کار درست و اصولی هست ؟ و یا اینکه بایست چند دیتاست برای چند جدول قرار داد؟
و اینکه در کد

DataSet11.Tables("TableName").Rows(RowNo).Item("FieldName")
اگر RowNo رو ندونیم باید چکار کنیم ؟

علیرضا مداح
چهارشنبه 15 تیر 1384, 08:35 صبح
آیا قرار دادن یک دیتاست و دسترسی به چند جدول کار درست و اصولی هست ؟ و یا اینکه بایست چند دیتاست برای چند جدول قرار داد؟

بله . این کار کاملا" اصولی و منطقی است . چون در غیر اینصورت میبایست برای هر جدول یک دیتاست مجزا ایجاد نمایید که کنترل آنها مشکل میشود ،


گر RowNo رو ندونیم باید چکار کنیم ؟
اگر RowNo را ندانید ، باید حتما" مقدار یکی از فیلدهای را بدانید و بر اساس آن عملیات جستجو را انجام داده و شماره سطر مورد نظر را بدست بیاورید ، بزودی مقاله ای را در جهت معرفی روش های جستجو در بانک اطلاعاتی ارائه خواهم داد .