PDA

View Full Version : مشکل با نوشتن کد این برنامه؟



salehvasaleh
چهارشنبه 06 مرداد 1389, 15:20 عصر
دوستان کد زیر دقیقا کدی هست که موقع زدن دکمه ثبت اطلاعات در پروژم نوشته شده تمام مراحلش هم سالمه به غیر از یک جا که نمی دونم باید چی بنویسم: کد رو ببینید تا مشکلمو بعد از کد بگم:


private void button1_Click(object sender, EventArgs e)
{
try
{
if (textBox1.Text == "" || textBox2.Text == "/--29-46" || textBox3.Text == "" || textBox4.Text == "" || textBox5.Text == "" || textBox6.Text == "" || textBox7.Text == "")
{
MessageBox.Show(" ");
}
else
{
SqlConnection sqlcn = new SqlConnection(s);
SqlCommand cmd = new SqlCommand();
if (sqlcn.State == ConnectionState.Open)
{
sqlcn.Close();
}
cmd.Connection = sqlcn;
cmd.CommandText = "Insert Into pa(tarikh,shomareh,khetab,mozoeh,peiro,bazghasht,a ks ) Values (@tarikh,@shomareh,@khetab,@mozoeh,@peiro,@bazghas ht,@aks)";
// cmd.CommandText = "Insert Into pa(tarikh,shomareh,khetab,mozoeh,peiro,bazghasht,a ks) Values (@tarikh,@shomareh,@khetab,@mozoeh,@peiro,@bazghas ht,@aks)";
cmd.Parameters.AddWithValue("@tarikh", textBox1.Text);
cmd.Parameters.AddWithValue("@shomareh", textBox2.Text);
cmd.Parameters.AddWithValue("@khetab", textBox3.Text);
cmd.Parameters.AddWithValue("@mozoeh", textBox4.Text);
cmd.Parameters.AddWithValue("@peiro", textBox5.Text);
cmd.Parameters.AddWithValue("@bazghasht", textBox6.Text);
cmd.Parameters.AddWithValue("@aks", listBox1.Items);//////////////////
sqlcn.Open();
cmd.ExecuteNonQuery();
if (sqlcn.State == ConnectionState.Open)
{
sqlcn.Close();
}
MessageBox.Show(" ");
}
}
catch
{
MessageBox.Show(" ");
}

}




در جایی که نوشته شده:
cmd.Parameters.AddWithValue("@aks", listBox1.Items);//////////////////

اونجا مشکلم هست. من در آیتم لیست باکسم تعدادی آیتم هست (نهایتا 50 تا) که همگی آدرس عکس هستند.هدفم اینه تمام آیتم های درون لیست باکس که همگی آدرس عکس هستند درون ستون aks ذخیره بشوند منتها به حالتی که بعدا موقع فراخوانی مجددا امکان رویت آنها به همین حالت وجود داشته باشه. خواهش می کنم کمکم کنید باور کنید خیلی گیر این موضوع شدم. ممنون

hamid.shekasteh
چهارشنبه 06 مرداد 1389, 16:46 عصر
فیلد بانکتون از چه نوعی هست ؟
احتمالا image یا binary یا nvarchar شما دارید که بیشتر از یه آیتم رو نمی تونید توش بریزید، اگه می خواهی برای یه نفر بیشتر از یه عکس داشاه باشید باید از یه جدول دیگه هم کمک بگیرید برای عکس افراد یا هر Entity دیگه ای.

salehvasaleh
چهارشنبه 06 مرداد 1389, 18:22 عصر
فیلد بانکتون از چه نوعی هست ؟
احتمالا image یا binary یا nvarchar شما دارید که بیشتر از یه آیتم رو نمی تونید توش بریزید، اگه می خواهی برای یه نفر بیشتر از یه عکس داشاه باشید باید از یه جدول دیگه هم کمک بگیرید برای عکس افراد یا هر Entity دیگه ای.
فیلد بانک از نوع text هست. این جریان استفاده از یک جدول دیگه رو بعضیا گفتن اما کسی توضیحی نداده می شه یه توضیحی بدید؟ یا احیانا فایلی ضمیمه کنید؟ممنون

jalalx
پنج شنبه 07 مرداد 1389, 00:29 صبح
راه حل شما بسیار ساده است! ابتدا listBox1.Items رو به یک رشته تبدیل کنید و از یک جداکننده مثل * استفاده کنید.



string filenames = "";
for(int i = 0; i < listBox1.Items.Count; i++)
{
filenames += listBox1.Items[i].ToString() + "*";
}
// save filenames in database


و هنگامی که دوباره خواستید لیست (آرایه) فایل ها رو به دست بیارید باید اونارو به این صورت از هم جدا کنید:




string filename = /* Load From Database */

string[] filelist = filename.Slite("*");

و خلاص!!!

salehvasaleh
پنج شنبه 07 مرداد 1389, 00:41 صبح
راه حل شما بسیار ساده است! ابتدا listBox1.Items رو به یک رشته تبدیل کنید و از یک جداکننده مثل * استفاده کنید.



string filenames = "";
for(int i = 0; i < listBox1.Items.Count; i++)
{
filenames += listBox1.Items[i].ToString() + "*";
}
// save filenames in database




و هنگامی که دوباره خواستید لیست (آرایه) فایل ها رو به دست بیارید باید اونارو به این صورت از هم جدا کنید:









string filename = /* Load From Database */




string[] filelist = filename.Slite("*");





و خلاص!!!










ممنون از توصیحت. یعنی واقعا می شه خلاص بشم؟/:کف:
می شه دقیقا بگید کدها رو کجا باید بزنم؟ممنون

hamid.shekasteh
پنج شنبه 07 مرداد 1389, 18:46 عصر
اگه با این روش که بین عکس ها * بذاریم کار کنیم در صورتی که کاربر بخواد مثلا عکس شماره 40 رو Update کنه راه حلی وجود داره؟

salehvasaleh
پنج شنبه 07 مرداد 1389, 19:57 عصر
راه حل شما بسیار ساده است! ابتدا listBox1.Items رو به یک رشته تبدیل کنید و از یک جداکننده مثل * استفاده کنید.



string filenames = "";
for(int i = 0; i < listBox1.Items.Count; i++)
{
filenames += listBox1.Items[i].ToString() + "*";
}
// save filenames in database




و هنگامی که دوباره خواستید لیست (آرایه) فایل ها رو به دست بیارید باید اونارو به این صورت از هم جدا کنید:









string filename = /* Load From Database */




string[] filelist = filename.Slite("*");





و خلاص!!!











من با توجه به توضیحات شما قسمت ثبت اطلاعات کدهاشو به فرم زیر در آوردم ولی بازم ایراد گرفت می شه بگید مشکلش کجاست؟



cmd.Parameters.AddWithValue("@tarikh", textBox1.Text);
cmd.Parameters.AddWithValue("@shomareh", textBox2.Text);
cmd.Parameters.AddWithValue("@khetab", textBox3.Text);
cmd.Parameters.AddWithValue("@mozoeh", textBox4.Text);
cmd.Parameters.AddWithValue("@peiro", textBox5.Text);
cmd.Parameters.AddWithValue("@bazghasht", textBox6.Text);

string filenames = "";
for (int i = 0; i < listBox1.Items.Count; i++)
{
filenames += listBox1.Items[i].ToString() + "*";
}
cmd.Parameters.AddWithValue("@aks", filenames);
// save filenames in database

salehvasaleh
پنج شنبه 07 مرداد 1389, 20:17 عصر
الان متوجه شدم در پست قبلی پروژم به دیتابیس متصل نبود که ارور می داد و با نوشتن دستور



string filenames = "";
for (int i = 0; i < listBox1.Items.Count; i++)
{
filenames += listBox1.Items[i].ToString() + "*";
}
cmd.Parameters.AddWithValue("@aks", filenames);



کامل ذخیره شد. از جناب jalalx خیلی خیلی ممنونم امیدوارم بتونم جبران کنم.