PDA

View Full Version : مشکل بروز نشدن جدول پس از اجرای ExecuteNonQuery



hdv212
دوشنبه 03 اردیبهشت 1386, 23:54 عصر
سلام ...
من یه Store Procedure نوشتم برای Insert و توی کد برنامه با این کدها اطلاعات رو به Sql میفرستم :
SqlConnection con = new SqlConnection(Properties.Settings.Default.ExpressD BConnectionString);
SqlCommand cmdInsert = new SqlCommand();
cmdInsert.CommandType = CommandType.StoredProcedure;
cmdInsert.CommandText = "sp_AddToPersons";
cmdInsert.Connection = con;

SqlParameter p1 = new SqlParameter("@personName", this.txt_name.Text);
SqlParameter p2 = new SqlParameter("@personFamily", this.txt_family.Text);
SqlParameter p3 = new SqlParameter("@personTel", this.txt_tel.Text);
SqlParameter p4 = new SqlParameter("@personAddress", this.txt_address.Text);

cmdInsert.Parameters.Add(p1);
cmdInsert.Parameters.Add(p2);
cmdInsert.Parameters.Add(p3);
cmdInsert.Parameters.Add(p4);

try
{
if (con.State == ConnectionState.Closed)
con.Open();

cmdInsert.ExecuteNonQuery();
}
catch (SqlException se)
{
MessageBox.Show(se.ToString());
}
finally
{
if (con.State == ConnectionState.Open)
con.Close();
cmdInsert.Dispose();
}

منتها نمیدونم چرا وارد جدول نمیشه، یعنی وقتی اطلاعات رو از جدول میخونم، رکوردی که Insert شده رو وارد نکرده.. چکار کنم ؟

hdv212
سه شنبه 04 اردیبهشت 1386, 01:30 صبح
بچه ها مشکلم حل شد
برنامه درست کار میکرد ولی به دلایل زیر جدول به روز نمیشد :
1. دوباره باید از جدول Query میگرفتم.
2. با هر بار کامپایل کردن برنامه یه نسخه از دیتابیسم تو شاخه ی debug کپی میشد(من همیشه اینو فراموش میکنم)

iranrose63
سه شنبه 04 اردیبهشت 1386, 10:22 صبح
سلام بچه ها
من یه برنامه نوشتم و می خوام تو اون ازstoreprocedure برای کار با دیتابیسم استفاده کنم الان دوتا مشکل دارم
1- وقتی کد زیر رو می نویسم و اونو اجرا می کنم پیغام خطا میده که نتونسته storedprocedure رو پیدا کنه

sqlCommand1.CommandType = CommandType.StoredProcedure;
sqlCommand1.CommandText = "exec sp_insertzaman @parameters"
2- نمی دونم اگه یه storeprocedure داشته باشم برای select چه طوری نتایج بازیابی اطلاعات رو با استفاده از datareader بخونم

Alireza_Salehi
سه شنبه 04 اردیبهشت 1386, 11:55 صبح
1. در خاصیت sqlCommand1.CommandText باید فقط نام SP رو بنویسید و برای افزودن پارامترها از متد sqlCommand1.Parameters.Add استفاده کنید.



sqlCommand1.Parameters.Add("@param1", SqlDbType.NVarChar).Value="Test text"


2. فرقی با حالت عادی نداره sqlCommand1.ExecuteReader

iranrose63
سه شنبه 04 اردیبهشت 1386, 13:11 عصر
خیلی خیلی ممنونم
حالا میشه به سوال دیگه هم جواب بدید
من یه جدول دارم که سه تا فیلد داره تحت شرایط متفاوت باید چند سطر در این جدول درج بشه برای بررسی حالات متفاوت از switch استفاده کردم حالا می خوام برای هر حالت چند سطر رو تو جدولم درج کنم نمی دونم که بهترین و سریعترین راه برای درج چند سطر متفاوت در جدول چیه
اگه نظرتون روی dataadaptar است لطف کنید و همراه با توضیحات کامل باشه چون من تاحالا ازش استفاده نکردم و همیشه با دستورات خود sql و sqlcommand وsqldatareader با دیتابیس کار کردم
راستی یه سوال دیگه به نظر شما استفاده از Storeprocedure بهتره یا اینکه دستورات Sql رو با استفاده از Sqlcommand اجرا کنم

hdv212
سه شنبه 04 اردیبهشت 1386, 13:27 عصر
بهتره که از اون Stored Procedure استفاده کنی با پارامترهای مختلف. پیشنهاد میکنم چون در یک حالت میخوای چند رکورد اضافه کنی، از Transaction استفاده کنی تا در صورت بروز مشکل در هنگام اضافه کردن رکوردها،تغییرات Rollback بشه.

iranrose63
چهارشنبه 05 اردیبهشت 1386, 07:12 صبح
شاید نتونستم منظورم رو درست برسونم
ببینید من یه دستور insert دارم با یه تعداد پارامتر (این دستور رو با استفاده از store procedure نوشتم) پارامترهایی که این دستور میگیره در سطرهای مختلف با هم ارتباط دارند به طوری که میشه با یه حلقه for مقدار این پارامترها را تغییر داد و همون دستور insertرو استفاده کرد ولی استفاده از حلقه for و ارتباط دائم با databese سرعت کار را پایین میاره می خوام بدونم چیکار کنم که سرعت کار بره بالا

ar.shirazi
پنج شنبه 06 اردیبهشت 1386, 12:01 عصر
شما میتوانی کلیه پارامترها را به یک stored procedure ارسال کنی و حلقه را آنجا شبیه سازی کنی