PDA

View Full Version : سوال: ADD کردن رکورد



mehran63
شنبه 24 مهر 1389, 12:44 عصر
من با کد زیر میخواستم یک رکورد را در بانک SQL 2008 اضافه کنم ولی در خط cmd.ExecuteNonQuery(); خطا میگیرد


کد :


private void addButton_Click(object sender, EventArgs e)
{
cmd.CommandText = "insert into tinfo(fn,ln) valuse ('" + fNTextBox.Text + "','" + lNTextBox.Text + "',";

cmd.ExecuteNonQuery();
}


لطفا نحوه درست و کامل Add کردن را بهم بگید اگه با یک نمونه سورس باشه که خیلی بهتره

ایمان مدائنی
شنبه 24 مهر 1389, 13:07 عصر
چرا از سيستم پارامتر دهي استفاده نمي كني




private void addButton_Click(object sender, EventArgs e)
{
cmd.CommandText = "insert into tinfo(fn,ln) values (@fn,@in);
cmd.parameter.AddWithValue("@fn",fNTextBox.Text );
cmd.parameter.AddWithValue("@in",lNTextBox.Text );
cmd.ExecuteNonQuery();


اينطوري امنيت برنامه هم بالا ميره

البته اگر كوئري همين هست در نوشتن دستور غلط تايپي داري valuse رو بايد بنويسي values

mehran63
شنبه 24 مهر 1389, 13:21 عصر
متشکر از راهنماییتون
این سیستم پارامتر دهی چی هستش و فرقش با اون روشی که من نوشتم چیست ؟
در ضمن برای استفاده از این متد نباید چیزی رو فراخونی کنم ؟
آیا نحوه add کردن عدد فرق میکند

mmd2009
شنبه 24 مهر 1389, 13:21 عصر
با سلام

برای نمونه سورس هم برو تاپیک زیر همه چیز هست

پروژه های Open Source (http://www.barnamenevis.org/forum/showthread.php?t=196747) ‏

mehran63
شنبه 24 مهر 1389, 13:42 عصر
کسی نیست که راه درست رو بگه

ایمان مدائنی
شنبه 24 مهر 1389, 13:53 عصر
نه دوست عزيز براي اد كردن هم ميشه از اين روش استفاده كرد

mehran63
شنبه 24 مهر 1389, 13:55 عصر
1 - این سیستم پارامتر دهی چی هستش و فرقش با اون روشی که من نوشتم چیست ؟
2 - در ضمن برای استفاده از این متد نباید چیزی رو فراخونی کنم چون Parameter رو به عنوان خطا با زیر خط قرمز نشون میده و همینطور خط
cmd.CommandText = "insert into tinfo(fn,ln) values (@fn,@in);
3-آیا نحوه add کردن int , sttring , Bit فرق میکند

ایمان مدائنی
شنبه 24 مهر 1389, 14:22 عصر
دوست عزيز اينطوري نميشه توضيح داد

برو تو بخش برنامه هاي اوپن سورس يك برنامه بگير از روش ياد بگير
پروژه های Open Source (http://www.barnamenevis.org/forum/showthread.php?t=196747)


آیا نحوه add کردن int , sttring , Bit فرق میکند

بله فرق ميكند


این سیستم پارامتر دهی چی هستش و فرقش با اون روشی که من نوشتم چیست ؟

اون روشي كه شما استفاده كردي امن نيست و راحت ميشه بانكت رو از كار انداخت

mehran63
شنبه 24 مهر 1389, 14:53 عصر
ممنون ولی نگفتی فرق Add کردن هر یک از این نوع های مختلف (int , sttring , Bit) چی هستش ؟

ایمان مدائنی
شنبه 24 مهر 1389, 15:12 عصر
خب بستگي به نوع فيلد تو بانك داره

يعني اگه عدد بود نوع آن بايد تبديل به int بشه
نوشته فرقي نميكنه

و بايت هم بايد تبديل به آرايه اي از بايتها بشه

اگه يك نمونه دانلود كني جواب همه سوالهاتو ميگيري
چون اينجوري من جواب هر سوال رو بدم برات سوالهاي بيشتري پيش مياد

حالا من در خدمتم اگه سوالي داري بپرس

csharpprogramer88
شنبه 24 مهر 1389, 17:31 عصر
در مورد استفاده از پارامتر :
مثلا ميخوايم يك مشخصات يك فرد را در ديتابيس ذخيره كنيم مقدار مشخصات مثلا name را به دو روش ميتونيم به فيلد مربوطه بدهيم
1-

'"+txtname.text+"'
كه روش خودتونه
2-بصورت پارامتري :


connection.Open();

string sql = "INSERT INTO Persons (Fullname, Email, Age) VALUES (@Fullname, @Email,@Age)";

SqlCommand cmd = new SqlCommand(sql, connection);

cmd.Parameters.AddWithValue("Fullname", txtFullname.Text);
cmd.Parameters.AddWithValue("Email", txtEmail.Text);
cmd.Parameters.AddWithValue("Age", txtAge.Text);

cmd.ExecuteNonQuery();

اين روش يك روش مطمئن تر نسبت به بالا از لحاظ امنيت مي باشد .