PDA

View Full Version : سوال: لطفا معنی این کدها را برام توضیح بدید.



adelante94
سه شنبه 23 آبان 1391, 23:36 عصر
سلام
لطفا یک توضیح مختصری درباره این کدها بدهید و کی باید از آنها در هنگام کار با دیتابیس استفاده کنیم.


if (dt.Rows.Count > 0)
if (dt.Rows.Count == 0)


متشکرم

RIG000
سه شنبه 23 آبان 1391, 23:39 عصر
اولی یعنی تعداد سطرهایی که بیشترر از 0 هست پایینی هم که برابریش رو نشون میده !
کارش هم مربوط به نوع کارت با رکورد مورد نظر هست

adelante94
سه شنبه 23 آبان 1391, 23:57 عصر
متشکرم از جوابتون .
حالا من موندم اینجا تو کد زیر چطوری برنامه تشخیص میده که کاربر قبلا ثبتنام کرده .:متفکر:
این کد مربوط به دفترچه تلفن که از یکی از تاپیکهای اینجا داونش کردم.و oledb استفاده کرده که میخوام به sql برگردونمش.

OleDbConnection ocn = new OleDbConnection(ConnectionString);
OleDbDataAdapter oda = new OleDbDataAdapter("SELECT FName,LName FROM tblTel WHERE FName=@p1 AND LName=@p2", ocn);
oda.SelectCommand.Parameters.Clear();
oda.SelectCommand.Parameters.AddWithValue("@p1", txtFName.Text);
oda.SelectCommand.Parameters.AddWithValue("@p2", txtLName.Text);

DataTable dt = new DataTable();

dt.Clear();
oda.Fill(dt);

if (dt.Rows.Count > 0)
{
MessageBox.Show("این شخص قبلا در بانک ثبت شده؛ لطفا شخص غیر تکراری وارد کنید", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
txtFName.Focus();
}
else
{

RIG000
چهارشنبه 24 آبان 1391, 00:07 صبح
فیلد هات تو جدولت کیلد گرفته شده بانکت روببین . وقتب مقداری تکراری ثبت نشه پس قبلا ثبت شده .!
سوال دوم : کلاساتو باید تغییر بدی هر جا oledb هس به Sql تغییر بده مثل oledbconnection رو به sqlconnection در ضمن فضای نام شما به اسن صورت تغییر میکنه
using System.data.sqlconnection;

ordebehesht
چهارشنبه 24 آبان 1391, 00:08 صبح
سلام همونطور که میدونی دیتاست ما شامل جدول های حاصل از پرسوجو هستش تو مثال بال ابتدا نام ونام خانوادگی شخص مربوطه پرسیده میشه با استفاده از پرسوجو
SELECT FName,LName FROM tblTel WHERE FName=@p1 AND LName=@p2"
خوب ما میدونیم که نتیجه حاصل از اجرای هر پرسوجو رو جدولهامون خودش یه جدول تومثال بال البته می تونست dataset ایجاد کنه اما اومده یه tabale ایجاد کرده و نتیجه رو توش ریخته خوب میرسیم مشکل شما دوست من خوب دو حالت بیشتر نیست یکی اینکه این شخص قبلا وجود داشته تو جدول ثبتی یا نیوده اگه بوده باشه سطری از اطلاعات رو تو table میریزه که اگرم نبودtable خالی هستش تو دستور if میگه اگه جدول یا همون table اگه پر باشه
dt.Rows.Count > 0
خب طبیعتا تعداد سطر موجود بیشتر از صفر میشه که معلومه میگه شخص قبلا ثبت شده اما اگه خالی باشه شرط if برقرار نیست معلوم میشه ثبت نشده امیدوارم متوجه شده باشی

RIG000
چهارشنبه 24 آبان 1391, 00:10 صبح
دوست عزیز کد شما برای نمایش هست!! قبلا" ثبت شده برای درج اصلاعات هست!!
این چطوری؟

mhq1368
چهارشنبه 24 آبان 1391, 00:28 صبح
با سلام
شما میتونید یه کد به هر نفر اختصاص بدین بعد به جای نام ونام خانوادگی شرطتون رو رو او بزارید یعنی


OleDbDataAdapter oda = new OleDbDataAdapter("SELECT FName,LName FROM tblTel WHERE personcode=@personcode", ocn);

حالا در مورد سوال دوم و نحوه کد sql

//connectionstring

SqlConnection ocn = new SqlConnection(@"Data Source=.\sqlexpress;initial catalog=dbname;integrated Security=true;");

//dar in ghesmat sharte shoma rooye personcode keh haman klidasli shoma ast tanzim mishavad

SqlDataAdapter oda = new SqlDataAdapter("SELECT * FROM tblTel WHERE personcode=@pcode", ocn);

oda.SelectCommand.Parameters.Clear();

oda.SelectCommand.Parameters.AddWithValue("@pcode", pcode.Text);

DataTable dt = new DataTable();

dt.Clear();

oda.Fill(dt);

//dar in ghesmat shart dataadapter check mishavad

if (dt.Rows.Count > 0)
{

MessageBox.Show("ƒ?δ ¼ª¡ τáΘƒ º⌐ áƒδ? úáó ¼º∞? Θßσƒ ¼ª¡ Σ?⌐ ó?⌐ƒ⌐? φƒ⌐º ?δ?º", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

txtFName.Focus();

}

adelante94
چهارشنبه 24 آبان 1391, 00:39 صبح
اولا متشکرم
ثانیا این کدها فعلا برای نمایش بو د و می خواستم به sql تبدیلش کنم که از لحاظ مفهومی کلا گیر کردم و امیدوارم بتونم با راهنمایهایی که شما دوستان کردید یک چیزهای یاد بگیرم.
واقعا ممنونم

adelante94
چهارشنبه 24 آبان 1391, 00:50 صبح
دو حالت بیشتر نیست یکی اینکه این شخص قبلا وجود داشته تو جدول ثبتی یا نیوده اگه بوده باشه سطری از اطلاعات رو تو table میریزه که اگرم نبودtable خالی هستش تو دستور if میگه اگه جدول یا همون table اگه پر باشه
با فرض اینکه شخص قبلا ثبت نام کرده و اطلاعاتش در Datatable موجوده اینجاشو نفهمیدم که با این کد dt.Rows.Count > 0 چطوری میشه عمل مقایسه انجام بگیره ؟

RIG000
چهارشنبه 24 آبان 1391, 01:04 صبح
دوست عزیز شما اطلاعات رو از بانک میگیری و تو دیتا تیبل میزریزی اگه اطلاعاتی باشه پس دستور 0< تعداد سطرها . اعمال میشه و میسج باکس نمایش داده میشه .!! اینجا شما در هر صورت اطلاعات تو دیتا تیبل بریزی این شرط بر قرار هست!