مشاهده نسخه کامل
: چند تا سوال درباره ی کار با دیتابیس
L u K e !
29-04-2010, 19:06
چند تا سوال دارم
اولیش اینه که چرا ما وقتی یه چیزی رو سلکت می کنیم که مثلا چند تا مقدار باید برگرده برنمی گرده
مثلا می گیم Select کن اسم و فامیلی کسایی که که اسمشون علی ه
و 2 تا علی دارم
وقتی یه OledbCommand رو وقتی با ExecuteScaler اجرا می کنی یه مقدار برمی گردونه ؟
دومیش اینه که چطوری می شه یه کاری کرد که DataGrid جواب Query که اجرا کردیم رو نشون بده ؟
سومیش اینه که چطوری می شه query که توی اکسس درست کردم رو توی VB استفاده کنم
سومیش اینه که من واسه سورت کردن بانک از کد زیر استفاده می کنم ولی وقتی اجراش می کنم توی بانک هیچ تغییری نمی بینم
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
anvar.net
29-04-2010, 23:02
سوال اول : طبیعتا دستور Select داده هایی رو برگشت می ده اگر همچنین داده هایی رو در بانک پیدا کنه. احتمالا مشکل شما از جایی دیگه است.
متد های شی Command هم که مد نظر شما هستند شامل سه متد می باشند :
ExecuteScaler : زمانی از این متد استفاده می کنیم که فقط یک مقدار برگشتی رو بخواهیم از بانک بگیریم.
ExecuteNonQuery : در واقع برای انتخاب و سلکت داده ها بکار نمی رود فقط برای افزودن یک ایتم جدید یا اپدیدت کردن یک ایتم در بانک مورد استفاده قرار می گیرد.
ExecuteReader : برای خواندن اطلاعات موجود در بانک مورد استفاده قرار می گیرد.
ExecuteXmlReader برای خواندن داده ها از فایل های XML بعنوان بانک مورد استفاده قرار می گیرد.
با این حساب اگر خواستید اطلاعات رو از بانک بخونید از ExecuteReader استفاده می کنی, اگر خواستی اطلاعات جدیدی رو در بانک ثبت کنی از ExecuteNonQuery استفاده می کنی.
در مثال بالای شما :
Select Count(*) from Name
دستور بالا تعداد رکوردهایی رو که پیدا می کند برگشت می دهد مثلا اگر 7 رکورد یافت شود, خروجی آن میشود 7 که از نوع Object است.
اگر بخوای بدون استفاده از Dataset اطلاعات رو تو کنترل Grid نمایش بدی باید از یک حلقه استفاده کنی تا هر ردیفی که خونده میشه وارد Grid بشه. اما اگر از Database و Dataadapter استفاده کنی. فقط باید Datasource کنترل Grid رو به دیتاست خودت ست کنی و Datamember کنترل رو هم به جدولی در دیتابیس که اطلاعات رو داره.
اگر Quary شما بصورت روال ذخیره شده بوده و در داخل خود Access ساختینش کمند تایپ شی کمند خودتون رو Stored Pr بذارید و در کمند تکست شی کمند هم نام روال ذخیره شده رو بنویسید. دقیقا مشابه با حالتی که سخت نویسی می کنید فقط کمند تکست در حالت عادی بصورت تکست هست اما در اینجا بصورت روال ذخیره شده. در مثال بالایی خودتون سخت نویسی کردید.
در مثالی که گذاشتید :
command.ExecuteNonQuery()
این دستور اشتباهه
شما که نمی خواهید چیزی رو ثبت یا بروزرسانی کنید.
شما می خواهید که اطلاعاتی بصورت ردیف های برگشتی برگردانده شوند پس از ExecuteReader باید استفاده کنی.
در ضمن اگر از تیبل ادیپتر استفاده می کنید, نیازی به دستور ExecuteReader هم ندارید. شما باید از متد Fill تیبل ادپتر برای پرکردن دیتاست استفاده کنی (که در پشت پرده خودش از Datareader استفاده می کنه).
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.