PDA

View Full Version : مبتدی: چک کردن ورودی SQL



Collector
دوشنبه 20 دی 1389, 20:03 عصر
سلام دوستان به این کد پایین نگاه کنید .باگ داره .(اکثر کد ها و برنامه های رایگان همین طوریه.)
یعنی اگر داده های مثل ' ," وارد شود ارور میدهد . من میخوام ورودی ها چک شود. :متفکر:



private void Button3_Click_1(object sender, EventArgs e)
{
string s;

Int16 i;
SqlDataAdapter da = new SqlDataAdapter("", con);
if (txtmelk.Text != "")
{
ds.Clear();
da.SelectCommand.CommandText = "select code from etelat_melk";
da.Fill(ds, "w");
if (ds.Tables["w"].Rows.Count > 0)
{
da.SelectCommand.CommandText = "select max(code) as id from etelat_melk";
da.Fill(ds, "x");
dg.DataSource = ds;
dg.DataMember = "x";

i = Convert.ToInt16(dg.CurrentRow.Cells["id"].Value);
i++;
}
else
{
i = 1;
}

s = "insert into etelat_melk(name_melk,code) values ('" + txtmelk.Text + "'," + i + " )";
SqlCommand cmd = new SqlCommand(s, con);
con.Open();
cmd.ExecuteNonQuery();
con.Close();


da.SelectCommand.CommandText = "select * from etelat_melk order by code";
da.Fill(ds, "h");
DGmelk.DataSource = ds;
DGmelk.DataMember = "h";
txtmelk.Text = null;

MessageBox.Show("اطلاعات با موفقیت ثبت شد");
}
else { MessageBox.Show("لطفا نام ملک را وارد کنید"); }
}

jalalx
دوشنبه 20 دی 1389, 20:10 عصر
سلام
خب چرا از SqlParameter استفاده نمی کنی؟


s = "insert into etelat_melk(name_melk,code) values (@name_melk, @code)";

و در بعد از ساخت شیئ cmd


cmd.Parameters.AddWithValue("@name_melk", txtmelk.Text);
cmd.Parameters.AddWithValue("@code", i);

abbas.oveissi
دوشنبه 20 دی 1389, 20:12 عصر
سلام دوستان به این کد پایین نگاه کنید .باگ داره .(اکثر کد ها و برنامه های رایگان همین طوریه.)
یعنی اگر داده های مثل ' ," وارد شود ارور میدهد . من میخوام ورودی ها چک شود. :متفکر:



خب یه راه اینه که ورودی های textbox رو چک کنی،که کاربر ورودی غیر مجاز وارد نکنه .

Collector
دوشنبه 20 دی 1389, 20:17 عصر
سلام
خب چرا از SqlParameter استفاده نمی کنی؟


s = "insert into etelat_melk(name_melk,code) values (@name_melk, @code)";

و در بعد از ساخت شیئ cmd


cmd.Parameters.AddWithValue("@name_melk", txtmelk.Text);
cmd.Parameters.AddWithValue("@code", i);


ممنون که پاسخ دادی. یه لطف میکنی همین کد بالا رو اصلاح کنی .من تازه کارم.

jalalx
دوشنبه 20 دی 1389, 20:20 عصر
بفرما:


private void Button3_Click_1(object sender, EventArgs e)
{
string s;

Int16 i;
SqlDataAdapter da = new SqlDataAdapter("", con);
if (txtmelk.Text != "")
{
ds.Clear();
da.SelectCommand.CommandText = "select code from etelat_melk";
da.Fill(ds, "w");
if (ds.Tables["w"].Rows.Count > 0)
{
da.SelectCommand.CommandText = "select max(code) as id from etelat_melk";
da.Fill(ds, "x");
dg.DataSource = ds;
dg.DataMember = "x";

i = Convert.ToInt16(dg.CurrentRow.Cells["id"].Value);
i++;
}
else
{
i = 1;
}

s = "insert into etelat_melk(name_melk,code) values (@name_melk, @code)";
SqlCommand cmd = new SqlCommand(s, con);
cmd.Parameters.AddWithValue("@name_melk", txtmelk.Text);
cmd.Parameters.AddWithValue("@code", i);
con.Open();
cmd.ExecuteNonQuery();
con.Close();


da.SelectCommand.CommandText = "select * from etelat_melk order by code";
da.Fill(ds, "h");
DGmelk.DataSource = ds;
DGmelk.DataMember = "h";
txtmelk.Text = null;

MessageBox.Show("اطلاعات با موفقیت ثبت شد");
}
else { MessageBox.Show("لطفا نام ملک را وارد کنید"); }
}

Collector
دوشنبه 20 دی 1389, 20:49 عصر
این کد رو گذاشتم اطلاعات رو ثبت میکنه ولی موقع حذف این ارور رو میده.

Unclosed quotation mark after the character string '''.
Incorrect syntax near '''.

از این خط ارور میگیره.

cmd.Parameters.AddWithValue("@code", i);

jalalx
سه شنبه 21 دی 1389, 19:40 عصر
خب این خط نباید مشکلی داشته باشه، احتمالا توی کوئری مشکل داره، برسی کن ببین احتمالا یک ' اضافی خورده! شاید هم توی تکس باکس کاربر یه همچین چیزی وارد کرده.
به هر حال، اینو هم امتحان کن. شاید مال خط قبل از خطی هست که میگی خطا میده:


cmd.Parameters.AddWithValue("@name_melk", txtmelk.Text.Replace("'",""));

Collector
سه شنبه 21 دی 1389, 20:38 عصر
خب این خط نباید مشکلی داشته باشه، احتمالا توی کوئری مشکل داره، برسی کن ببین احتمالا یک ' اضافی خورده! شاید هم توی تکس باکس کاربر یه همچین چیزی وارد کرده.
به هر حال، اینو هم امتحان کن. شاید مال خط قبل از خطی هست که میگی خطا میده:


cmd.Parameters.AddWithValue("@name_melk", txtmelk.Text.Replace("'",""));


مشکل حل نشد امکان داره یه نمونه بسازی و این مورد را امتحان کنی. با اضافه کردن مشکل ندارم فعلا با حذف شاید بعدا با آپدیت .:گریه:


Unclosed quotation mark after the character string '''.
Incorrect syntax near '''.

MortezaGity
سه شنبه 21 دی 1389, 20:59 عصر
یه راه دیگه هم هس و اون استفاده از reg expression هست. می تونید ورودی کاربر داخل textbox رو چک کنید

Collector
سه شنبه 21 دی 1389, 21:48 عصر
یه راه دیگه هم هس و اون استفاده از reg expression هست. می تونید ورودی کاربر داخل textbox رو چک کنید

ممنون که راهنمایی میکنید. لطفا با تکه کد بیان کنید.:قلب: