پروژه دفترچه تلفن در سی شارپ ۳ :: V i R u s Ʒ²

V i R u s Ʒ²

هک و امنیت

V i R u s Ʒ²

هک و امنیت

Virus 32

💢 دوستانم بی دفاع و دشمنانم بی جواب نخواهند ماند 💢

-->
آخرین نظرات
  • ۶ ارديبهشت ۰۳، ۱۶:۱۵ - hidden
    test
خب سلامی مجدد به گلای توو خونه D: ما توو قسمت های قبلی این پروژه گفتیم چطور یه دفترچه تلفن بنویسین و همچنین یه دیتابیس اکسس درست کنین و به پروژمون اتصالش بدین، و اینکه طراحی برنامه و کدهای فرم مین و کلاس رو گفتیم. همچنین اعمال نمایش و حذف اطلاعات دیتابیس رو گفتیم، فقط مونده کدهای فرم۲ و ثبت و ویرایش اطلاعات که توو این پست میگم و سر و ته این پروژه رو هم میارم.
اول بریم توو فرم ۲ و کتابخونه ای که گفته بودم ادد کنین رو ادد کنین ( کتابخونه اتصال به دیتابیس اکسس) :
using System.Data.OleDb;

خب حالا بریم سروقت متغیر ها و متد ها و...

اول کدای زیر رو به اون بالا به صورت گلوبال بنویسین، برای اتصال به کلاس و متغیر های مورد نیاز ...:

dataclass cd = new dataclass();
public int v;
public string tb = "tabel1";
public int edi = 0;

خب متغیر v برای آیدی هست و tb هم اسم تیبلی که توو دیتابیس داریم و edi رو برای این نوشتم که اعمال ثبت و ویرایش رو بشه از هم جدا کرد که در ادامه بهتر میفهمین...

خب حالا متد زیر رو بنویسین، متد زیر برای اینه که برای مخاطب ها آیدی ثبت کنه تا از هم مجزا بشن:

public void idyab()
{
try
{
cd.con.Open();
OleDbCommand com = new OleDbCommand("select * from reg where num=@numb", cd.con);
com.Parameters.AddWithValue("@numb", tb);
OleDbDataReader rdr = com.ExecuteReader();
if (rdr.Read())
{
v = int.Parse(rdr["ID"].ToString()) + 1;
}
else
{
v = 32;
}
cd.con.Close();
}
catch
{
cd.con.Close();
}
}

خب، حالا متد reg که کارش اینه آخرین آیدی رو توو تیبل reg ثبت میکنه که آیدی بعدی طبق ترتیب باشه:
private void reg()
{
try
{
string up = "UPDATE reg SET ID='" + v + "'WHERE num LIKE '" + tb + "'";
OleDbCommand comup = new OleDbCommand(up, cd.con);
cd.con.Open();
comup.ExecuteNonQuery();
cd.con.Close();
}
catch { cd.con.Close(); }
}

خب حالا میرم سر عسل متلب، متد زیر برای ذخیره و ثبت مخاطبه (ثبت اطلاعات در دیتابیس):
public void save()
{
try
{
if (textBox1.Text == "")
{
cd.empty();
}
else
{
idyab();
cd.con.Open();
OleDbCommand com = new OleDbCommand("select * from table1 where name=@nm", cd.con); //q1
com.CommandType = CommandType.Text; //q1
com.Parameters.AddWithValue("@nm", textBox1.Text); //q1
OleDbDataReader rdr = com.ExecuteReader(); //q1
if (rdr.Read()) //q1
{
cd.nnameer(); //q1
cd.con.Close();
}
else
{
foreach (TextBox tro in this.Controls.OfType<TextBox>()) //q2
{
if (tro.Text == "") //q2
{
tro.Text = "-"; //q2
}
}
idyab();
cd.con.Close();
string strSql = "INSERT INTO table1 (ID, name, numb, address, info ) VALUES (?,?,?,?,?)";
using (OleDbCommand dbCmd = new OleDbCommand(strSql, cd.con))
{
dbCmd.CommandType = CommandType.Text;
dbCmd.Parameters.AddWithValue("ID", v);
dbCmd.Parameters.AddWithValue("name", textBox1.Text);
dbCmd.Parameters.AddWithValue("numb", textBox2.Text);
dbCmd.Parameters.AddWithValue("address", textBox3.Text);
dbCmd.Parameters.AddWithValue("info", textBox4.Text);
cd.con.Open();
dbCmd.ExecuteNonQuery();
cd.con.Close();
reg();
cd.msgok();
this.Close();
}
}
}
}
catch { cd.con.Close(); }
}

دقت کنین، جلوی بعضی از کدها اسلش// زدم و نوشتم q1 یا q2 اینا. اینا رو اینطوری زدم تا در ادامه براتون توضیح بدم و جزو کد نیست:

خطی که جلوش زده:
q1: این کد برای اینه که اگه یه نامی توو دیتابیس موجود بود (یه سلول از یه کلومز) عملیات ثبت متوقف بشه و پیغامی نشون بده و بگه این نام قبلا قبت شده بود و تکراریه...

q2: هم برای اینه که اگه کاربر یه تکست باکس رو خالی گزاشت، به جاش - بزاره.

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

حالا میریم سروقت متد ویرایش، متد زیر رو بنویسین تا با استفاده از اون بتونیم یه مخاطب رو ویرایش کنیم ( آپدیت کردن اطلاعات دیتابیس):
private void edit()
{
try
{
if (textBox1.Text == "")
{
cd.empty();
}
else
{
foreach (TextBox tro in this.Controls.OfType<TextBox>())
{
if (tro.Text == "")
{
tro.Text = "-";
}
}
cd.con.Close();
string up = "UPDATE table1 SET name='" + textBox1.Text + "',numb='" + textBox2.Text + "',address='" + textBox3.Text + "',info='" + textBox4.Text + "' WHERE id LIKE '" + v + "'";
OleDbCommand comup = new OleDbCommand(up, cd.con);
cd.con.Open();
comup.ExecuteNonQuery();
cd.con.Close();
cd.msgok();
this.Close();
}
}
catch { cd.con.Close(); }
}

خب اینم از متد ویرایش. حالا بریم کد رویداد فرم لود (فرم۲) :
if (edi == 0)
{
this.Text = " مخاطب جدید ";
foreach (TextBox tro in this.Controls.OfType<TextBox>())
{
tro.Clear();
}
}
else
{
this.Text = textBox1.Text + " ویرایش مشخصات " ;
}

درواقع ما از این فرم به دو صورت استفاده میکنیم، هم واسه ذخیره و ثبت مخاطب هم برای ویرایش و نمایش اطلاعات و مشخصات مخاطب.
اگه متغیر edi برابر با 0 باشه، عنوان فرم میشه مخاطب جدید، چون برای ثبت اطلاعاته و اگه نباشه عنوان فرم میشه ویرایش مشخصات فلانی.
کد زیر رو هم برای رویداد باتن1 بنویسید:
if (edi == 0)
{
save();
}
if (edi == 1)
{
edit();
}

اینجا هم که معلومه اگه متغیر مذکور برابر با 0 بود متد ذخیره رو فراخوانی کنه درغیراینصورت متد ویرایش :)

خب فکر کنم پروژه ما دیگه تموم شد و چیز خاصی نیاز نداره بقیش هم با خودتون. خوشگل موشگلی و چیزای اضافه که سلیقه خودتونه...
خسته نباشید. تا پروژه های بعدی دود دوری دودود . چی ببخشید به درود

 ایران هم که مثل همیشه پرچمش بالاست 

نظر (۵)

سلام اومدم دیدم نظر ها خالیه گفتم یک چیزی بنویسم

................................................................................

راستی یک سوال مهم در مورد  mvc  دارم کسی بلده؟ واقعا به مشکل خوردم

Enable margaration  عمل نمیکنه

ارور میده

از  code first میخوام استفاده کنم

تو   nuget console  انتیتی هم کامل نصب کردم

از  repository  استفاده نمیکنم لایه ی دیتا جدا نیست

لطفا اگه کسی میدونه بگه خطا هم بگم

باشد که خطا بر طرف شود

 

Virus32 MicRoB 32 :
حاجی 60/70 تا کامنت داریم که هنوز جواب ندادیم :/

والا من بلد نیستم تایید میکنم کسی بلد بود کامنت کنه جوابو

سلام اومدم دیدم نظر ها خالیه گفتم یک چیزی بنویسم

................................................................................

راستی یک سوال مهم در مورد  mvc  دارم کسی بلده؟ واقعا به مشکل خوردم

Enable margaration  عمل نمیکنه

ارور میده

از  code first میخوام استفاده کنم

تو   nuget console  انتیتی هم کامل نصب کردم

از  repository  استفاده نمیکنم لایه ی دیتا جدا نیست

  یک  cms  میخوام بنویسم

لطفا اگه کسی میدونه بگه خطا هم بگم

باشد که خطا بر طرف شود

 

سلام داشتم یک نگاهی مینداختم دیدم

string strSql = "INSERT INTO table1 (ID, name, numb, address, info ) VALUES (?,?,?,?,?)";

این خط توش علامت سوال چیه؟

مگه میشه

هم میشه همون جا اسم وارد کنیم که آسیب پذیره

هم میشه براش جایگزین گذاشت ولی این کاری که کردین چیه؟

تاحالا ندیده بودم

string up = "UPDATE table1 SET name='" + textBox1.Text + "',numb='" + textBox2.Text + "',address='" + textBox3.Text + "',info='" + textBox4.Text + "' WHERE id LIKE '" + v + "'";
 و اینجا خب qury  وارد میکنه به sql آسیب پذیره

 

Virus32 Virus 32 :
سلام
خوب هر کسی یه مدل کد میزنه و بهتره همه رو یاد داشته باشی
این معماری یک لایه است
علامت سوال نشان گر اینه که مقداری که میخوایی وارد کنی هنوز نامشخص هست
چرا نشه؟ حرکت قشنگیه
برای نرم افزار داخلی آسیب پزیر به حساب نمیاد
البته من این کدها رو خوب ندیدم هنوز ولی احساس میکنم اوکی باشه

هعیییییی دنیا

هعییییی خدا

خب به بدبخت یک مسیج باکس شو کن که بفهمه مشکل از کجاست بدبخت برنامه رو میبنده میگه ولی کن بابا (be polite) بچه 

............................................

لطفا به first code  هم بگذارید

یا مثلا کار با entity

 

Virus32 Virus 32 :
ای ول
first code واقعا لازمه
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی