PDA

مشاهده نسخه کامل : ایجاد فرم log in



aka1
04-09-10, 17:31
سلام دوستان من می خوام در c# یک پنجره ی log in بسازم در ضمن از sql استفاده می کنم .من نمی دونم چطور میشه دنبال id و pass در database بگردم ممنون میشم کسی کمک کنه و دستوراتشو بگه

ravegoat
04-09-10, 21:10
با سلام!


اول مجموعه زير رو به پروژه اضافه كنيد:





using System.Data.SqlClient;


مرحله بعد وصل شدن به پايگاه داده در SQL است:




SqlConnection myConnection = new SqlConnection();
myConnection.ConnectionString = "Server=.\\SQLEXPRESS; Database=Sample; User Id=UserName; password=Password";
try
{
myConnection.Open();
}
catch(Exception exp)
{
MessageBox.Show(exp.Message);
}


كد بالا شما رو به پايگاه Sample در SQLXpress وصل مي كنه (اگه پايگاه رمز عبور داشته باشه بايد مقادير Username و Password رو تعيين كنيد.).

در ادامه دو textBox به فرم اضافه كنيد. يكي textBox1 براي نام كاربري و ديگري textBox2 براي گذرواژه .


در مرحله بعد با دستور SELECT ميشه داده ها رو استخراج كرد. دستور زير از يه جدول در پايگاه به نام LoginData صحت username و password رو تعيين مي كنه. در جدول دو ستون وجود داره. يكي stUsername كه براي نام كاربري هست و اون يكي stPassword كه براي رمز عبوره.




SqlCommand cmd = new SqlCommand("SELECT ISNULL(stUsername, '') AS stUsername, ISNULL(stPassword,'') AS stPassword FROM LoginData WHERE stUsername='" + textBox1.Text + "' and stPassword='" + textBox2.Text + "'", myConnection);
SqlDataReader dr = cmd.ExecuteReader();

بعد بايد مقادير استخراج شده در جدول رو با مقادير textBox ها مقايسه كرد. كد زير درستي يا نادرستي رمز عبور و نام كاربري رو به كاربر اعلام مي كنه:




string userText = textBox1.Text;
string passText = textBox2.Text;

while (dr.Read())
{
if (dr["stUsername"].ToString() == userText && dr["stPassword"].ToString() == passText)
{
MessageBox.Show("Successful Log In");
}
else
{
MessageBox.Show("Username and Password do not match");
}
}

در پايان كار هم بهتره كه اتصالات به پايگاه بسته بشه:




dr.Close();
myConnection.Close();

من خودم اين سورس رو امتحان نكردم؛ ممكنه يكم مشكل داشته باشه ولي رويه كلي كار به اين شكل هست.

موفق باشيد
آرمين

aka1
04-09-10, 23:38
واقعا زحمت کشیدی عزیز بازم مزاحم میشم

aka1
05-09-10, 13:37
سلام دوست عزیز من با انجام این دستورات نتونستم به مقصودم برسم اصلا passرو چک نمی کنه ممنون میشم اگه بتونید کمک کنید

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace WindowsFormsApplication4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
SqlConnection myConnection = new SqlConnection();
myConnection.ConnectionString = "Data Source=localhost;Initial Catalog=tamrin;Integrated Security=True";
try
{
myConnection.Open();
}
catch (Exception exp)
{
MessageBox.Show(exp.Message);
}

SqlCommand cmd = new SqlCommand("SELECT username,passwrod FROM users WHERE username='" + textBox1.Text + "'And passwrod='" + textBox2.Text + "'", myConnection);

SqlDataReader dr = cmd.ExecuteReader();
string userText = textBox1.Text;
string passText = textBox2.Text;
while (dr.Read())
{
if (dr["username"].ToString() == userText && dr["passwrod"].ToString() == passText)

MessageBox.Show("Successful Log In");

else

MessageBox.Show("Username and Password do not match");

}

dr.Close();
myConnection.Close();

}

}
}

aka1
05-09-10, 18:57
کسی نیست کمک کنه؟؟؟؟؟!!!!!

ravegoat
06-09-10, 11:21
فكر كنم اگه SQL Command رو اينجوري تغيير بديد مشكل رفع بشه:




SqlCommand cmd = newSqlCommand("SELECT * FROM users WHERE username='" + textBox1.Text + "'", myConnection);

البته بايد در جدول users ستون username رو منحصر به فرد (Primary Key) كنيد كه منطقي هم هست.

در ضمن مشكلتون رو واضح تر بيان كنيد. منظورتون چك نكردن رمز عبور چيه؟

اگه مشكل هنوز پا بر جا بود سعي مي كنم خود پروژه رو براتون تهيه كنم.

موفق باشيد.

aka1
06-09-10, 14:55
مشکل اینه که username رو میشناسه ولی با اینکه pass رو درست زدم همش میگه "Username and Password do not match" .. یعنی شرط else

خیلی ممنون میشم اگه پروژه رو بگذارید چون هر چقدر باهاش کار کردم نشد بازم ممنون

ravegoat
06-09-10, 23:29
مشکل اینه که username رو میشناسه ولی با اینکه pass رو درست زدم همش میگه "Username and Password do not match" .. یعنی شرط else

خیلی ممنون میشم اگه پروژه رو بگذارید چون هر چقدر باهاش کار کردم نشد بازم ممنون





واقعا" مشكل حل نشد...من خودم آخرين سورسي رو كه گذاشتم امتحان كردم و كار كرد. با اين حال دو تا پروژه براتون نوشتم. يكي با SQL كار مي كنه كه بايد بهش Connection String درست بديد تا كار كنه يه نمونه هم ConnectionString پيش فرض داره. امتحانش كردم و درست كار مي كرد.
اون يكي پروژه هم براساس Oldb يا همون بانك Access هست. چون كه اين بانك به صورت فايله، يه ارتباط كم دردسرتر داره. براي تست روش كار از اين بانك هم استفاده كردم كه رو اين هم جواب داد.

بهتره كه در بانك users كه تعريف كرديد Data Type ستون هاي username و password رو از نوع varchar بذاريد تا SQL كم تر قاطي كنه.

موفق باشيد.
آرمين

aka1
07-09-10, 15:54
بازم شرمنده من تنظیمات رو انجام ادم ولی بازم نشد .میگم راستی من توی sqlام یک database به اسم tamtinدارم و 2تا columne داره به اسمه username و password که به هرکداوم هم سه تا مقدار دلخواه دادم و username هم primery key هست مشکل از اینجا ها که نیست؟!

ravegoat
07-09-10, 17:43
بازم شرمنده من تنظیمات رو انجام ادم ولی بازم نشد .میگم راستی من توی sqlام یک database به اسم tamtinدارم و 2تا columne داره به اسمه username و password که به هرکداوم هم سه تا مقدار دلخواه دادم و username هم primery key هست مشکل از اینجا ها که نیست؟!

دشمنتون شرمنده!
اگه connection string رو درست وارد كرده باشيد، احتمالش زياده كه مشكل از پيكره بندي SQL Server روي سيستمتون باشه چون سورس ها رو امتحان كردم و مشكلي نداشت.

مگه database مي تونه ستون داشته باشه؟ معمولا" يه database تعريف مي كنند، توش يه جدول (table) مي ذارند و براي جدول ستون تعريف مي كنند.
دقيقا" نمي دونم مشكل از كجاست؟ باز هم مشكل قبلي رو داريد؟ اگه همون مشكل رو داريد لطفا" به برنامه يه مقدار username و password كه تو جدولتون باشه بديد و برنامه رو ادامه بديد؛ بعد مقادير :

dr["username"]
و
dr["password"]


رو با MessageBox نمايش بديد. بررسي كنيد كه چه مقاديري داره و به بنده بگيد. توجه كنيد كه مقدار دهي هاي فوق تو حلقه while صورت ميگره.

به علاوه بهتره يه بار هم يه جدول (به اسم users) رو تو Database هاي پيش فرض SQL مثل master (Initial Catalog=master) ايجاد كنيد و برنامه رو دوباره اجرا كنيد.

موفق باشيد
آرمين

aka1
08-09-10, 09:07
آقا .زنده باد ممنون مرسی از وقتت .فعلا خدافظ شما