PDA

View Full Version : مشکل در login



diba_gh
دوشنبه 01 مهر 1387, 23:06 عصر
من یه Table loginدارم که توش پنج تا فیلده username,password,button1,button2,button3 هست مقدار این سه تا butoon می تونه یک( true) یا صفر (false) باشه من از این کدهم برای login کردن استفاده کردم حالا مشکل من اینجاست که نمی دونم توی دستور if چه شکلی بنوسم که هر کاربری که وارد میشه باتوچه به مقدار سه تا button معلومه بشه که کدوم button باید visible=true و کدام باتون visible=false بشه با توجه به مقدار یک یا صفر بودنش در table?:ناراحت:


SqlConnection connection = newSqlConnection();
SqlCommand command = newSqlCommand();
SqlDataAdapter DataAdapter = newSqlDataAdapter();

DataSet dataSet = newDataSet();
connection.ConnectionString = "Integrated Security=true;Database=karkhaneh;Server=localhost;";
connection.Open();

command.CommandText = "Select * from Table1 where username=N'" + textBox1.Text + "'and password='" + textBox2.Text + "'";
command.Connection = connection;
DataAdapter.SelectCommand = command;
SqlDataReader dr = command.ExecuteReader();

if (dr.Read())
{ //*********
//********
//*********
}
else
{
MessageBox.Show("Your User & Password is not valid", "Error",
MessageBoxButtons.OKCancel,
MessageBoxIcon.Information,
MessageBoxDefaultButton.Button1);
}
}

esmartiz_red
سه شنبه 02 مهر 1387, 00:05 صبح
من که نفهمیدم می خوای چه کار کنی

h.jaza
سه شنبه 02 مهر 1387, 00:36 صبح
دوست عزیز منم نفهمیدم.

ضمنا، اگر از تگ کد، برای نشون دادن کد هات استفاده بکنی، خیلی خواناتر میشه.

SqlConnection connection = newSqlConnection();
SqlCommand command = newSqlCommand();
SqlDataAdapter DataAdapter = newSqlDataAdapter();

DataSet dataSet = newDataSet();
connection.ConnectionString = "Integrated Security=true;Database=karkhaneh;Server=localhost;";
connection.Open();

command.CommandText = "Select * from Table1 where username=N'" + textBox1.Text + "'and password='" + textBox2.Text + "'";
command.Connection = connection;
DataAdapter.SelectCommand = command;
SqlDataReader dr = command.ExecuteReader();

if (dr.Read())
{ //*********
//********
//*********
}
else
{
MessageBox.Show("Your User & Password is not valid", "Error",
MessageBoxButtons.OKCancel,
MessageBoxIcon.Information,
MessageBoxDefaultButton.Button1);
}
}

majid325
سه شنبه 02 مهر 1387, 01:29 صبح
نيازي به SqlDataReader نداري جون 2 تا user با 2 تا usrename و pass نداري و اصولش هم اينه كه نداشته باشي.

پس اگر username و pass درست باشه شما يه ركورد در ديتاست داري حالا

if (ds.Tables["Table1"].Columns["button1"].ToString() == true) button1.Visible = true;

majid325
سه شنبه 02 مهر 1387, 01:39 صبح
وقت نداشتم كدم رو تست كنم ولي يه چيزهاي گزاشتم، اگر كدم هم كار نكرد ولي روشش صحيح هست

SqlConnection connection = new SqlConnection("Integrated Security=true;Database=karkhaneh;Server=localhost;");
SqlDataAdapter DataAdapter = new SqlDataAdapter("Select * from Table1 where username=N'" + textBox1.Text + "'and password='",connection);

DataSet dataSet = new DataSet();

DataAdapter.Fill(dataSet);

if(dataSet.Tables[""].Rows.Count > 0 )
{
if (ds.Tables["Table1"].Columns["button1"].ToString() == true) button1.Visible = true;
if (ds.Tables["Table1"].Columns["button1"].ToString() == true) button1.Visible = true;
if (ds.Tables["Table1"].Columns["button1"].ToString() == true) button1.Visible = true;
}
else
{
MessageBox.Show("Your User Or Password is not valid", "Error");
}

diba_gh
چهارشنبه 03 مهر 1387, 13:18 عصر
من از این کد هم استفاده کردم ولی باز نمی دونم مشکلش کجاست ممنون می شم کمکم کنید



[SqlConnection connection = newSqlConnection("Integrated Security=true;Database=karkhaneh;Server=localhost;");
SqlDataAdapter DataAdapter = newSqlDataAdapter("Select * from Table1 where username=N'" + textBox1.Text + "'and password='"+textBox2.Text+"'", connection);
DataSet ds = newDataSet();
DataAdapter.Fill(ds);
if (ds.Tables["Table1"].Rows.Count > 0)
{
if (ds.Tables["Table1"].Columns["bt1"].ToString() == true) button1.Visible = true;
if (ds.Tables["Table1"].Columns["bt2"].ToString() == true) button2.Visible = true;
if (ds.Tables["Table1"].Columns["bt3"].ToString() == true) button3.Visible = true;
}
else
{
MessageBox.Show("Your User Or Password is not valid", "Error");
}

اینم error ای که می ده
[Error 1 Operator '==' cannot be applied to operands of type 'string' and 'bool' C:\Documents and Settings\Administrator.HOME-CE0C6CF0EA\Local Settings\Application Data\Temporary Projects\55\Form1.cs 29 21 55
]

SMRAH1
چهارشنبه 03 مهر 1387, 14:27 عصر
عبارت

ds.Tables["Table1"].Columns["bt1"].ToString()
یک رشته بر می گرداند ولی باید با یک مقدار منطقی مقایسه شود.این مسئله در #C مجاز نیست.به عبارت دیگر باید دو طرف مساوی دارای نوع یکسان باشند.
در این مثال،آنطور که بر می آید ،فیلد bt1 از نوع منطقی است.با این فرض ،یک از دو شکل زیر را باید به کار ببرید:

if (ds.Tables["Table1"].Columns["bt1"].ToString() == "True") button1.Visible = true;یا

if (ds.Tables["Table1"].Columns["bt1"] == true) button1.Visible = true;

diba_gh
پنج شنبه 04 مهر 1387, 00:46 صبح
بازم همون errorr رو میده:عصبانی:

majid325
پنج شنبه 04 مهر 1387, 02:13 صبح
ديباگر روي كدوم خط وايميسته؟
شرط رو با صفر و يك هم امتحان كن.
اگه شد db و برنامه رو بزار اينجا.

diba_gh
جمعه 05 مهر 1387, 00:26 صبح
:لبخندساده:مشکلم رو یه جوری حل کردم نمی دونم کار مهندسانه ای هست یا نه. ولی اومدم سه تا textBox گرفتم و visible اون ها را توی فرم false کردم. مقدار سه باتن(فیلد button1,button2,button3 در database) کاربر وارد شده در این سه تکس باکس ریخته می شود و بعد مقاسه از طریق محتویات تکس باکس ها انجام می شود و با توجه به مقدار 0 یا 1 بودن سه تکس باکس، باتن مربوطه در فرم نمایشه داده می شود یا اینکه از دید کاربر مخفی می شود.


SqlConnection connection = new SqlConnection("Integrated Security=true;Database=karkhaneh;Server=localhost;");
SqlDataAdapter DataAdapter = new SqlDataAdapter("Select * from Table1 where username=N'" + textBox1.Text + "'and password='"+textBox2.Text+"'", connection);
DataSet ds = new DataSet();
DataAdapter.Fill(ds,"Table1");
connection.Open();
if (ds.Tables["Table1"].Rows.Count > 0)
{
for (int i = 0; i < ds.Tables["Table1"].Rows.Count; i++)
{
textBox3.Text = ds.Tables["Table1"].Rows[i][2].ToString();
textBox4.Text = ds.Tables["Table1"].Rows[i][3].ToString();
textBox5.Text = ds.Tables["Table1"].Rows[i][4].ToString();
if (textBox3.Text == "1" && textBox4.Text == "0" && textBox5.Text == "0")
{
button2.Visible = true;
button3.Visible = false;
button4.Visible = false;
}
else if (textBox3.Text == "0" && textBox4.Text == "1" && textBox5.Text == "0")
{
button3.Visible = true;
button2.Visible =false;
button4.Visible = false
.......
else
{
MessageBox.Show("نام کاربری شما مورد تایید نیست", "Error");
}

majid325
جمعه 05 مهر 1387, 01:49 صبح
مهندسانه ي مهندسانه.
با تغييري كه در زير دادم هم حل نميشه؟

if ((Boolean)ds.Tables["Table1"].Columns["button1"].ToString() == true) button1.Visible = true;

SMRAH1
جمعه 05 مهر 1387, 01:49 صبح
کار خودتو سخت کردی ولی راه های رسیدن به خدا خیلی زیاده ;)

رضا جاسبی
جمعه 05 مهر 1387, 23:14 عصر
نوع داده های متناظر با button ها در DB چی هستند؟

diba_gh
شنبه 06 مهر 1387, 14:54 عصر
راهی که گفتید رو امتحان کردم ولی باز نشد.
می دونم دارم لقمه رو دور سرم می چرخونم ولی چاره ای ندارم هفته ی دیگه ارائه ی پروژه دارم.
نوع باتن ها را در دیتابیس همین جوری int گرفتم ولی باید نوعش را bit گرفت به خاطر اینکه برای اینکه یک باتن در فرم نمایش داده بشه یا نمایشه داده نشه دو حالت بیشتر نداره یا مقدارش صفره یا مقدارش یکه. صفر به معنی False و یک به معنی True . اگر bit بگیریم اون وقت دستور if این طوری می شه


if (textBox3.Text == "True" && textBox4.Text == "False" && textBox5.Text == "False")

majid325
یک شنبه 07 مهر 1387, 03:43 صبح
نميدونم چرا گير دادم به اينكه آخرش چي كار ميكني، كد زير رو بعد از تغيير نوع فيلد امتحان كردي؟

if ((Boolean)ds.Tables["Table1"].Columns["button1"].ToString() == "true") button1.Visible = true;

diba_gh
یک شنبه 07 مهر 1387, 13:37 عصر
گفتم که کدی که دادید رو بازم امتحان کردم ولی باز erro می داد که نمی تونم int رو به string کانورت کنم یه همچین چیزایی

SMRAH1
یک شنبه 07 مهر 1387, 23:49 عصر
سلام

کد

if ((Boolean)ds.Tables["Table1"].Columns["button1"].ToString() == true) button1.Visible = true;
که ایراد داره.از یک طرف با

ds.Tables["Table1"].Columns["button1"].ToString()
تبدیلش می کنی به رشته و بعد می خواهی با (Boolean) به عبارت منطقی تبدیل بشه.

تا حالا کدهایی (که به نظر فاقد ایراد هستند) در این تاپیک گنجانده شده ولی شما می فرمایید برنامه خطا می دهد.لطفا عین برنامه را بگذارید (source اون قسمت های مربوط رو در قالب یک پروژه) تا شاید متوجه اشتباه شویم.

در کد بالا هم اگر مطمئن هستید(!!!!!!!!!!!!!!!) که فیلد button1 ،یک فیلد bool است،با

if (ds.Tables["Table1"].Columns["button1"] == true) button1.Visible = true;
نباید مشکلی باشد.

موفق باشید

majid325
یک شنبه 07 مهر 1387, 23:58 عصر
سلام

کد

if ((Boolean)ds.Tables["Table1"].Columns["button1"].ToString() == true) button1.Visible = true;
که ایراد داره.از یک طرف با

ds.Tables["Table1"].Columns["button1"].ToString()
تبدیلش می کنی به رشته و بعد می خواهی با (Boolean) به عبارت منطقی تبدیل بشه.

تا حالا کدهایی (که به نظر فاقد ایراد هستند) در این تاپیک گنجانده شده ولی شما می فرمایید برنامه خطا می دهد.لطفا عین برنامه را بگذارید (source اون قسمت های مربوط رو در قالب یک پروژه) تا شاید متوجه اشتباه شویم.

در کد بالا هم اگر مطمئن هستید(!!!!!!!!!!!!!!!) که فیلد button1 ،یک فیلد bool است،با

if (ds.Tables["Table1"].Columns["button1"] == true) button1.Visible = true;
نباید مشکلی باشد.

موفق باشید

ببينيد من در پست 15 فيلد رو با متد tostring() مقايسه ميكنم با "true"، ولي ميگن جواب نميده البته اگه خود پروژه رو از اول اينجا ميزاشتن مشكلشون تو همون پستهاي اول حل ميشد.

SMRAH1
دوشنبه 08 مهر 1387, 00:32 صبح
ببينيد من در پست 15 فيلد رو با متد tostring() مقايسه ميكنم با "true"، ولي ميگن جواب نميده البته اگه خود پروژه رو از اول اينجا ميزاشتن مشكلشون تو همون پستهاي اول حل ميشد.

مجید جان،در پست 15،شما هم که همان اشتباه را داشتید(اول تبدیل به رشته کرده اید و بعد می خواهید یک رشته را تبدیل به boolean کنید.که این امکان بذیرنیست.)
با شما موافق،اگر از اول پروژه رو گذاشته بودند)البته فقط قسمت های ایراد دار آن را)،تا حالا حتما حل شده بود.

سربلند باشید

majid325
دوشنبه 08 مهر 1387, 00:43 صبح
مجید جان،در پست 15،شما هم که همان اشتباه را داشتید(اول تبدیل به رشته کرده اید و بعد می خواهید یک رشته را تبدیل به boolean کنید.که این امکان بذیرنیست.)
با شما موافق،اگر از اول پروژه رو گذاشته بودند)البته فقط قسمت های ایراد دار آن را)،تا حالا حتما حل شده بود.

سربلند باشید

دوست من به پست 15 بيشتر دقت كنيد ، چيزي به boolean تيديل ميشه؟

diba_gh
دوشنبه 08 مهر 1387, 01:34 صبح
:ناراحت:من که گفتم مشکلم حل شد. ولی حالا که می خواید دنبالش رو بگیرید من فایلم رو براتون می زارم. توی Tableام button1,button2 و button3 از نوع bit هستند یعنی مقدار این سه باتن یا باید صفر باشه یا یک. در bit صفر به معنای false و یک به معنای true هم هست. پس فرقی نمی کنه که توی دستور شرط از صفر استفاده کنیم یا از false.
ولی مشکلی که در دستور if هست مشکل خیلی هاست و من و دوستام با ریختن توی textbox و تبدیل کردنش به رشته مشکلمون رو حل می کنیم

majid325
دوشنبه 08 مهر 1387, 02:15 صبح
:ناراحت:من که گفتم مشکلم حل شد. ولی حالا که می خواید دنبالش رو بگیرید من فایلم رو براتون می زارم. توی Tableام button1,button2 و button3 از نوع bit هستند یعنی مقدار این سه باتن یا باید صفر باشه یا یک. در bit صفر به معنای false و یک به معنای true هم هست. پس فرقی نمی کنه که توی دستور شرط از صفر استفاده کنیم یا از false.
ولی مشکلی که در دستور if هست مشکل خیلی هاست و من و دوستام با ریختن توی textbox و تبدیل کردنش به رشته مشکلمون رو حل می کنیم

آهاآآآن...


DataRow dr= ds.Tables[0].Rows[0];
if (dr["button1"].ToString() == "True") button2.Visible = true;
if (dr["button2"].ToString() == "True") button3.Visible = true;
if (dr["button3"].ToString() == "True") button4.Visible = true;