PDA

View Full Version : سوال: مشکل آپدیت دیتا بیس



poorking
چهارشنبه 31 شهریور 1389, 14:46 عصر
سلام اساتید عزیز
من توی برنامه ای که دارم مینویسم میخوام روی یک دیتا گرید ویو که دابل کلیک کردم فرم جدید باز بشه و سپس اون اطلاعاتی که در تکس باکس ها لود شده را ویرایش کنم

من سرچ کردم و یکسری کد پیدا کردم وای وقتی دیباگ کردم دقیقا‍ به کد cmd.ExecuteNonQuery();

که میرسه ارور میده http://up.iranblog.com/Files/c318aa354f364016869f.jpg

لطفاً منو راهنمایی کنید

کد مربوطه :


public partial class EditUser : Form
{
private string Username;
private string Password;
string idchane;
DataSet Sql_ds;
SqlConnection Con = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirecto ry|\\Shop.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
public EditUser(string Username,string Password)
{
InitializeComponent();
textBox1.Text = Username;
textBox2.Text = Password;
idchane = id;
}
private void button1_Click(object sender, EventArgs e)
{

if (Con.State == ConnectionState.Closed)
{
Con.Open();
}
SqlConnection con = new SqlConnection();
SqlDataAdapter Sql_da = new SqlDataAdapter("Select * From Security", Con);

string Query = "update Security set Username=@Username,Password=@Password where id=@idchange";

SqlCommand cmd = new SqlCommand(Query, con);

cmd.Parameters.Add("@Username", SqlDbType.Char).Value = textBox1.Text.Trim();
cmd.Parameters.Add("@Password", SqlDbType.Char).Value = textBox2.Text.Trim();
cmd.Parameters.Add("@idchange", SqlDbType.Char).Value = idchane;


cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("اپديت شد");
this.Close();
}

mmd2009
چهارشنبه 31 شهریور 1389, 14:52 عصر
سلام

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

پس کدت رو باید به صورت زیر بنویسی :




public partial class EditUser : Form
{
private string Username;
private string Password;
string idchane;
DataSet Sql_ds;
SqlConnection Con = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirecto ry|\\Shop.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
public EditUser(string Username,string Password)
{
InitializeComponent();
textBox1.Text = Username;
textBox2.Text = Password;
idchane = id;
}
private void button1_Click(object sender, EventArgs e)
{


SqlConnection con = new SqlConnection();

SqlDataAdapter Sql_da = new SqlDataAdapter("Select * From Security", Con);

string Query = "update Security set Username=@Username,Password=@Password where id=@idchange";

SqlCommand cmd = new SqlCommand(Query, con);

cmd.Parameters.Add("@Username", SqlDbType.Char).Value = textBox1.Text.Trim();
cmd.Parameters.Add("@Password", SqlDbType.Char).Value = textBox2.Text.Trim();
cmd.Parameters.Add("@idchange", SqlDbType.Char).Value = idchane;

if (Con.State == ConnectionState.Closed)
{
Con.Open();
}

cmd.ExecuteNonQuery();
con.Close();
MessageBox.Show("اپديت شد");
this.Close();
}

poorking
چهارشنبه 31 شهریور 1389, 18:27 عصر
دوست عزیز من این کدو دوباره جایگزین کردم ولی باز هم همین پیغام خطا رو میده

mmd2009
چهارشنبه 31 شهریور 1389, 18:34 عصر
اگر میشه برنامتو بده ببینمش یک یک نمونه مثال خودت بزن این کدارو بذار داخلش بعدش بذارش تا ببینمش

اونطور راحتر تر میشه فهمید

poorking
چهارشنبه 31 شهریور 1389, 18:51 عصر
اگر میشه برنامتو بده ببینمش یک یک نمونه مثال خودت بزن این کدارو بذار داخلش بعدش بذارش تا ببینمش

اونطور راحتر تر میشه فهمید

http://www.irfreeup.com/images/msurz1q0obmod5memf8.zip

این برنامه منه

قسمت تنظیمات کاربری وقتی روی دیتا گرید ویو دابل کلیک میکنم ویرایش باز میشه

رمز عبور a هست

mmd2009
چهارشنبه 31 شهریور 1389, 19:13 عصر
من Sql ندارم متاسفانه

aghayex
پنج شنبه 01 مهر 1389, 06:15 صبح
این پیغام میگه که دیتابست باز نیست تا من بتونم عملیات را اجرا کنم قبل از cmd.ExecuteNonQuery();
شما باید دیتا بس رو open کنی.
به نظر من اون شرطی که گذاشتی اصلا یه شرط بی معنی هست که اگه کانکشن بسته بود بازش کن چون به طور پیش فرض بعد از چند ثانیه که کانکشن باز باشه خود برنامه اونو می بنده پس موقعی که شما این دستور رو می دی کانکشن بسته است