PDA

View Full Version : مبتدی: جلوگیری از ثبت دو داده تکراری در بانک



YasserDivaR
سه شنبه 20 بهمن 1394, 18:56 عصر
این کد ثبت نام فرم منه
چطوری کدی بهش وارد کنم که داده تکراری نباشه
هم نام کاربری و هم ایمیل
که اگه کسی وارد کرد پیام بده این نام قبلا ثبت شده
دو تا رو میخوام بررسی کنم
در ضمن به حروف کوچک و بزرگ حساس باشه


MySql.Data.MySqlClient.MySqlConnection cnn = new MySql.Data.MySqlClient.MySqlConnection("server=localhost;User Id=root;database=sadaf;charset=utf8;");
MySql.Data.MySqlClient.MySqlDataAdapter da = new MySql.Data.MySqlClient.MySqlDataAdapter("select * from user", cnn);
DataTable dt = new DataTable();
da.Fill(dt);
//dataGridView1.DataSource = dt;
//'" + textEdit1.Text + "','" + textEdit2.Text + "','" + textEdit3.Text + "','" + textEdit4.Text + "','" + textEdit6.Text + "','" + textEdit7.Text + "','" + textEdit8.Text + "','" + comboBoxEdit1.Text + "','" + textEdit9.Text + "','" + TXt_IpAdress.Text + "','" + textEdit5.Text + "','" + "NO" +"','"+ImageData+ "')", cnn);
cnn.Close();
MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand("insert into user (UserName,password,NameView,Email,Web,Phone,Tarikh sabt,SoalAmniati,javabamniati,IP,Status,Block,Avat ar) values (@UserName,@password,@NameView,@Email,@Web,@Phone, @Tarikhsabt,@SoalAmniati,@javabamniati,@IP,@Status ,@Block,@Avatar)", cnn);

cmd.Parameters.AddWithValue("@UserName", textEdit1.Text);
cmd.Parameters.AddWithValue("@password", textEdit2.Text);

amin8505
سه شنبه 20 بهمن 1394, 23:05 عصر
شما باید قبل از insert یه دستور سلکت بنویسید که بررسی کند
آیا رکوردی با نام کاربری و ایمیلی که می خواهید وارد کنید وجود داره یا نه.
اگه وجود نداشت دستور insert اجرا بشه و اگه وجود داشت یه پیغام بده که داده تکراریه.

YasserDivaR
سه شنبه 20 بهمن 1394, 23:53 عصر
شما باید قبل از insert یه دستور سلکت بنویسید که بررسی کند
آیا رکوردی با نام کاربری و ایمیلی که می خواهید وارد کنید وجود داره یا نه.
اگه وجود نداشت دستور insert اجرا بشه و اگه وجود داشت یه پیغام بده که داده تکراریه.

خوب ممنون میشم کد بررسی رو بهم بدین
من بگی نگی مبتدی ام

reza_ali202000
چهارشنبه 21 بهمن 1394, 00:28 صبح
سلام دوست عزیز

select count(*) from tbl where usr='' and pwd=''
حالا اگه مقدار بزرگتر از صفر بود یعنی تکراری هست.

vid4259
چهارشنبه 21 بهمن 1394, 09:57 صبح
سلام من معمولا از این کد استفاده می کنم که مثلا کد رو تکرای وارد نکنم حالا شاید به درد خود با کمی تغیر

SqlCommand cmdceck = new SqlCommand("Select Count(id_mhart) from tb_mhart where id_mhart='" + textBox1.Text + "'", clconnection.con);
int item;



item = (int)cmdceck.ExecuteScalar();


if (item != 0)
{
MessageBox.Show("!کد دوره تکراری می باشد ", "توجه", MessageBoxButtons.OK);




}
else
{


MessageBox.Show("علملیات انجام نشد");
}

YasserDivaR
چهارشنبه 21 بهمن 1394, 10:08 صبح
سلام من معمولا از این کد استفاده می کنم که مثلا کد رو تکرای وارد نکنم حالا شاید به درد خود با کمی تغیر


ممنون اقا ی vid4259 (http://barnamenevis.org/member.php?269167-vid4259)
ولی یه سوال
بنظر شما من این کد رو توی کدوم روی داد بنویسم
رویداد دکمه ثبت یا text فوکوس ....
بنظر شما بهترین حالت کجاس

korosh00
چهارشنبه 21 بهمن 1394, 14:51 عصر
insert البته بازم نوع دیگه ای هستش

vid4259
چهارشنبه 21 بهمن 1394, 15:36 عصر
به نظرم روی رویداد تکست تا چک کنه بعد بره فیلده بعدی
البته زمان کار با دیتا بیس این کار خیلی سنگین میشه

reza_ali202000
پنج شنبه 22 بهمن 1394, 01:31 صبح
به نظرم روی رویداد تکست تا چک کنه بعد بره فیلده بعدی
فکرشو کنید هر دفه کاربر یه کاراکتر وارد کرد باید بره از دیتابیس بحونه برگرده که سربار اضافه هم به بانک هم به سرور وارد میشه. باید توی دکمه ثبت نوشته بشه.

sajadsobh
پنج شنبه 22 بهمن 1394, 09:32 صبح
من پیشنهاد میکنم که توی تابع Insert که واسه ارسال اطلاعات می نویسید اول چک کنید که وجود داره یا نه، اگه وجود داشت تابع Insert مقدار false برگردونه و اگه وجود نداشت بعد از انجام عمل Insert مقدار true رو برگردونه. حالا فقط نیازه که یه if بذارید به این شکل:
if(Insert())
{
//پیغام تایید عمل
}
else
{
//پیغام تکراری بودن رکورد
}

sajadsobh
پنج شنبه 22 بهمن 1394, 09:39 صبح
اینم تابع واسه Insert:
BEGIN
IF EXISTS(SELECT * FROM Users WHERE Username = @Username AND Password = @Password)
SET @Result = 0
ELSE
BEGIN
SET @Result = 1
INSERT INTO Users (Username, Password)
VALUES (@Username, @Password)
END
END
البته این یه مثاله و پسورد رمزگذاری نشده و امنیت نداره:چشمک:
مقدار برگشتی Result رو چک میکنی اگه 0 باشه false و اگه 1 باشه تابع insert مقدار true برمیگردونه.