PDA

View Full Version : اضافه كردن يك فيلد به جدول در بانك



sara7_777
شنبه 25 تیر 1390, 21:30 عصر
سلام دوستان
من يه برنامه ميخوام بنويسم كه از طريق يك textbox يه فيلد به جدول و سپس يك ستون به gridveiw اضافه كنه اما هركار ميكنم موفق نميشم فيلد به جدولم اضافه كنم
برنامه اي كه نوشتم اينه حالا نميدونم درسته يانه خيلي ممنون ميشم كمكم كنين

SqlConnection con = newSqlConnection("Data Source= localhost; Initial Catalog=Sport; Integrated Security=true");
try
{
con.Open();
string sql = "ALTER TABLE Sports ADD @i NVarChar(20) NULL";
SqlCommand cmd = newSqlCommand(sql, con);

cmd.Parameters.AddWithValue("i", txtFeild.Text);

morteza271
شنبه 25 تیر 1390, 21:44 عصر
کدتون درسته فیلدی که توی تکست باکس وارد شده به جدول اضافه میشه!البته حواستون باشه که تکراری نباشه!
ولی کدی نمیبینم که به گرید ستون اضافه کنید!!!

sara7_777
شنبه 25 تیر 1390, 22:01 عصر
کدتون درسته فیلدی که توی تکست باکس وارد شده به جدول اضافه میشه!البته حواستون باشه که تکراری نباشه!
ولی کدی نمیبینم که به گرید ستون اضافه کنید!!!

خب پس چرا اجرا نميشه؟
جدولم رو نگاه ميكنم اما تغييري نكرده
اينم كدي هستش كه اضافه ميكنه به Gridveiw

dgSportsTable.Columns.Add(txtFeild.Text, txtFeild.Text);

RIG000
شنبه 25 تیر 1390, 22:29 عصر
اول اینکه ارور چیه ؟ دوم اینکه اگه ارور نمیده برو i رو بکن i@
cmd.Parameters.AddWithValue("@i", txtFeild.Text);
ببین جواب میده

RIG000
شنبه 25 تیر 1390, 22:31 عصر
در ضمن مابقی کد ها رو هم میزاری که مربوط به ایجاد این برنامه خودتو میزاری ؟

Esmail Solhkhah
شنبه 25 تیر 1390, 22:33 عصر
شما اول ستون رو به جدول اضافه کنید

بعد دیتا داخلش بریزید

بعد هم دیتای جدید رو Load کنید

یه چیزی مثل این کد:


SqlConnection con = new SqlConnection (@"Data Source= .; Initial Catalog=test; Integrated Security=true");
try
{
con.Open();
string sql = "ALTER TABLE vahed ADD i NVarChar(20) NULL";
SqlCommand cmd = new SqlCommand(sql, con);


if (con.State!= ConnectionState.Open)
con.Open();
cmd.ExecuteNonQuery();

sql = "Insert Vahed (Code,name,i) values(@code,@name,@i)";
cmd.CommandText = sql;
cmd.Parameters.AddWithValue("code", 10);
cmd.Parameters.AddWithValue("Name", "test");
cmd.Parameters.AddWithValue("i", txtFeild.Text);
cmd.ExecuteNonQuery();

if (con.State == ConnectionState.Open)
con.Close();

SqlDataAdapter da = new SqlDataAdapter("select * from vahed", con);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}

morteza271
شنبه 25 تیر 1390, 22:38 عصر
اگه انکانش هست کدتون رو بذارین تا در حد توانم کمکتون کنم.
اینطوری نمیشه!کدتون رو نصفه گذاشتین!

sara7_777
شنبه 25 تیر 1390, 22:41 عصر
در ضمن مابقی کد ها رو هم میزاری که مربوط به ایجاد این برنامه خودتو میزاری ؟

من فعلا همينو نوشتم چيز ديگه‌اي ننوشتم

sara7_777
شنبه 25 تیر 1390, 23:35 عصر
شما اول ستون رو به جدول اضافه کنید

بعد دیتا داخلش بریزید

بعد هم دیتای جدید رو Load کنید

یه چیزی مثل این کد:


SqlConnection con = new SqlConnection (@"Data Source= .; Initial Catalog=test; Integrated Security=true");
try
{
con.Open();
string sql = "ALTER TABLE vahed ADD i NVarChar(20) NULL";
SqlCommand cmd = new SqlCommand(sql, con);


if (con.State!= ConnectionState.Open)
con.Open();
cmd.ExecuteNonQuery();

sql = "Insert Vahed (Code,name,i) values(@code,@name,@i)";
cmd.CommandText = sql;
cmd.Parameters.AddWithValue("code", 10);
cmd.Parameters.AddWithValue("Name", "test");
cmd.Parameters.AddWithValue("i", txtFeild.Text);
cmd.ExecuteNonQuery();

if (con.State == ConnectionState.Open)
con.Close();

SqlDataAdapter da = new SqlDataAdapter("select * from vahed", con);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}

ممنون از كمكتون اما توي اين برنامه همش يك ستون با اسم i ايجاد ميكنه
بعد من ميخوام بعد از اينكه ستون اضافه شد توي Gridview كاربر مقدارشو وارد كنه

sara7_777
شنبه 25 تیر 1390, 23:41 عصر
اگه انکانش هست کدتون رو بذارین تا در حد توانم کمکتون کنم.
اینطوری نمیشه!کدتون رو نصفه گذاشتین!
چيز ديگه‌اي مگه لازمه؟

Esmail Solhkhah
شنبه 25 تیر 1390, 23:48 عصر
ممنون از كمكتون اما توي اين برنامه همش يك ستون با اسم i ايجاد ميكنه
بعد من ميخوام بعد از اينكه ستون اضافه شد توي Gridview كاربر مقدارشو وارد كنه

خب شما گرید رو بایند کنید به یه دیتاسورس بعد از اینکه دیتارو لود کردید طبیعتا اون فیلد هم به گرید اضافه میشه

حالا بعد از تغییر دیتا در گرید با متد Update از TableAdapter یا DataAdapter اصلاعات جدید به دیتابیس منتقل میشه

sara7_777
یک شنبه 26 تیر 1390, 11:30 صبح
الان تكه برنامه من اينه

SqlConnection con = new SqlConnection(@"Data Source= .; Initial Catalog=Sport; Integrated Security=true");
try
{
con.Open();
string sql = "ALTER TABLE Sports ADD @i NVarChar(20) NULL";
SqlCommand cmd = new SqlCommand(sql, con);


cmd.CommandText = sql;

cmd.Parameters.AddWithValue("i", txtFeild.Text);
cmd.ExecuteNonQuery();
if (con.State == ConnectionState.Open)
con.Close();

وقتي ميخوام اجرا كنم ارور ميده كه Incorrect syntax near @i
چرا؟

Esmail Solhkhah
یک شنبه 26 تیر 1390, 12:34 عصر
طبیعیه چون شما میخاین با یه دستور دوکار انجام بدید

اول فیلد رو اضافه کنید

بعد مقدار بدید

در ضمن شما کد رو نصفه میزارین (بلوک try بسته نیست و بلوک catch هم نیست )

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

RIG000
یک شنبه 26 تیر 1390, 13:08 عصر
الان تكه برنامه من اينه

SqlConnection con = newSqlConnection(@"Data Source= .; Initial Catalog=Sport; Integrated Security=true");
try
{
con.Open();
string sql = "ALTER TABLE Sports ADD @i NVarChar(20) NULL";
SqlCommand cmd = newSqlCommand(sql, con);


cmd.CommandText = sql;

cmd.Parameters.AddWithValue("i", txtFeild.Text);
cmd.ExecuteNonQuery();
if (con.State == ConnectionState.Open)
con.Close();

وقتي ميخوام اجرا كنم ارور ميده كه Incorrect syntax near @i
چرا؟

اینو ببین بدردت میخوره.......:اشتباه: امیدوارم بدرد بخوره

sara7_777
یک شنبه 26 تیر 1390, 21:45 عصر
واقعا خيلي خيلي ممنون از لطفتون اون مشكلم حل شد
حالا بعد از اضافه شدن ستونم ميخوام مقادير gridview رو به تغيير بدم كه با كليك روي دكمه اين تغييرات اعمال شه برنامه‌اي كه توي رويداد كليك دكمه نوشتم اينه

SqlConnection con = newSqlConnection(@"Data Source= .; Initial Catalog=Sport; Integrated Security=true");
string sql = "select * from Sports";
SqlDataAdapter Adapter = newSqlDataAdapter(sql, con);
DataTable dt = newDataTable();
Adapter.Update(dt);

نميدونم درسته يا نه اما در هر صورت اجرا نميشه ارور نميده اما وقتي دوباره وارد ميشم ميبينم تغييرات قبلي اعمال نشده

RIG000
یک شنبه 26 تیر 1390, 22:28 عصر
الان میخای مجددا" جدولتو لود کنی؟
من اینجا تغییراتو فقط لود میبینم selecte حالا میخای دوباره جدولتو لود کنی و در بانک گرید نشون بدی خط 5 کد رو پاک کن اینجوری بنویس
Adapter.Fill (dt);
و بعدشم
gridview.datasource=dt;
این لود مجدد اطلاعات از جدوله

sara7_777
یک شنبه 26 تیر 1390, 22:45 عصر
الان میخای مجددا" جدولتو لود کنی؟
من اینجا تغییراتو فقط لود میبینم selecte حالا میخای دوباره جدولتو لود کنی و در بانک گرید نشون بدی خط 5 کد رو پاک کن اینجوری بنویس
Adapter.Fill (dt);
و بعدشم
gridview.datasource=dt;
این لود مجدد اطلاعات از جدوله

خب نه نميخوام اين كارو بكنم من ميخوام تغييراتي كه توي gridview به وجود اومده رو بفرستم به جدولم تا اين تغييرات اعمال شه

sara7_777
دوشنبه 27 تیر 1390, 14:17 عصر
نميتونين راهنماييم بكنين؟:افسرده:

RIG000
دوشنبه 27 تیر 1390, 15:56 عصر
الان کد هایی رو که برای انجام و ایحاد یک فیلد استفاده کردین رو بزارید / و بعدش ستون رو با چه کدی ایجاد کردین ؟ اینارو هم بزارید / سوال . من دقیقا " متوجه این نشدم که الان شما منظورتون از تغییرات چه چیز هاییه که ؟!!! چی هارو میخاین به جدول بفرستین؟ اگه یه نمونه کوچیک بزارین اونجا درسش میشه کرد .

sara7_777
دوشنبه 27 تیر 1390, 17:15 عصر
اين دستور براي اضافه كردن فيلد به جدول كه بعد از لود كردن به gridview هم اضافه ميشه

if (txtFeild.Text != "")
{
try
{
con.Open();
string sql = "ALTER TABLE Sports ADD " + txtFeild.Text + " NVarChar(20) NULL";
SqlCommand cmd = new SqlCommand(sql, con);
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
if (con.State == ConnectionState.Open)
con.Close();
SqlDataAdapter da = new SqlDataAdapter("select * from Sports", con);
DataTable dt = new DataTable();
da.Fill(dt);
dgSportsTable.DataSource = dt;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}


حالا من يك Gridview دارم كه يك ستون هم بهش اضافه شده الان ميخوام توي Gridview سطرها رو ويرايش كنم كه بعد از زدن يك دكمه ويرايش ها به جدول فرستاده بشه يعني تغييرات به جدول اعمال بشه

RIG000
دوشنبه 27 تیر 1390, 20:19 عصر
اين دستور براي اضافه كردن فيلد به جدول كه بعد از لود كردن به gridview هم اضافه ميشه

if (txtFeild.Text != "")
{
try
{
con.Open();
string sql = "ALTER TABLE Sports ADD " + txtFeild.Text + " NVarChar(20) NULL";
SqlCommand cmd = newSqlCommand(sql, con);
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
if (con.State == ConnectionState.Open)
con.Close();
SqlDataAdapter da = newSqlDataAdapter("select * from Sports", con);
DataTable dt = newDataTable();
da.Fill(dt);
dgSportsTable.DataSource = dt;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}


حالا من يك Gridview دارم كه يك ستون هم بهش اضافه شده الان ميخوام توي Gridview سطرها رو ويرايش كنم كه بعد از زدن يك دكمه ويرايش ها به جدول فرستاده بشه يعني تغييرات به جدول اعمال بشه

:لبخندساده: حل شد فکر کنم / امیدوارم که همینی باشه که میخای / امیدوارم موفق باشی . اگه سوالی در مورد این باز واست پیش اومد بپرس:چشمک:

sara7_777
سه شنبه 28 تیر 1390, 22:45 عصر
:لبخندساده: حل شد فکر کنم / امیدوارم که همینی باشه که میخای / امیدوارم موفق باشی . اگه سوالی در مورد این باز واست پیش اومد بپرس:چشمک:

نشد:گریه:

عين برنامه شما من اومدم اينجوري نوشتم توي رويداد كليك دكمه كه اطلاعاتو بفرسته

SqlDataAdapter Adapter = new SqlDataAdapter();

DataTable dt = new DataTable();
Adapter.Update(dt);

اما نشد

RIG000
پنج شنبه 30 تیر 1390, 22:53 عصر
بیین من از command builder استفاده کردم / برنامه خودتو میشه بزاری من راستو ریسش کنم؟ ؟
واسه من که جواب داد

RIG000
پنج شنبه 30 تیر 1390, 22:54 عصر
ارور چی داده ؟

sara7_777
جمعه 31 تیر 1390, 13:16 عصر
بیین من از command builder استفاده کردم / برنامه خودتو میشه بزاری من راستو ریسش کنم؟ ؟
واسه من که جواب داد

خيلي ممنون از كمكتون يه جايي اشتباه كرده بودم
درست شد
مرسي