PDA

View Full Version : فرستادن مقدار NULL وقتی TextBox پر نشود.



farhud
دوشنبه 07 آذر 1390, 11:54 صبح
دورود.

من یک TextBox دارم که اجباری در پر کردن آن توسط کاربر نیست. اما می خواهم اگر کاربر مقداری وارد نکرد‏، در بانک مقدار آن NULL قرار داده شود.

در حالت عادی اگر کاربر مقداری وارد نکند، فضای خالی به تعداد رشته وارد می شود. نوع فیلد char(11) است.

آیا این کار با کدهای C# قابل انجام است و یا باید در داخل بانک انجام گیرد؟

adineh67
دوشنبه 07 آذر 1390, 12:05 عصر
خوب براش شرط بذار اگه تکستش خالی بود پس تکست مساوی با رشته ی null بشه

farhud
دوشنبه 07 آذر 1390, 12:27 عصر
خوب شرط گذاشته ام؛ اما با دادن مقدار NULL برای رشته خطا میگیره.

fakhravari
دوشنبه 07 آذر 1390, 12:46 عصر
در دیتابیس جدول مورد نظر مقدار فیلد را null باید تیک بزنید

farhud
دوشنبه 07 آذر 1390, 13:00 عصر
در دیتابیس جدول مورد نظر مقدار فیلد را null باید تیک بزنید

عزیز جان تیک خورده که میخوام null بفرستم دیگه.

adineh67
دوشنبه 07 آذر 1390, 13:19 عصر
(""==if (TextBox.Text
{
دستورات درج در جدول با مقدار"NULL"
}
من همین الان تست کردم درست بود نوع فیلد جدولم nchar گرفتم

fakhravari
دوشنبه 07 آذر 1390, 13:21 عصر
دوستان
اگر مقدار تیک خورده باشه اگر مقداری وارد نکنید خودش خالی ارسال میکنه.
کد درج بزارین

adineh67
دوشنبه 07 آذر 1390, 13:30 عصر
بله آقای فخراوری هم درست می گن وقتی allow null تیک خورده باشه اگه مقداری درج نشه خودش پیش فرض null وارد می کنه

Saman Hashemi
دوشنبه 07 آذر 1390, 13:51 عصر
از چه شیوه ای برای درج اطلاعات استفاده میکنی؟StoredProcedure؟

farhud
دوشنبه 07 آذر 1390, 14:13 عصر
SqlCommand cmd=new SqlCommand();
cmd.CommandText="insert into Tbl (feild1,feild1) values (@feild1,@feild2)";
cmd.Parameters.AddWithValue("@feild1", TextBox1.Tex);
cmd.Parameters.AddWithValue("@feild2", TextBox2.Tex);
cmd.ExecuteNonQuery();

adineh67
دوشنبه 07 آذر 1390, 14:34 عصر
یه متغیر string تعریف کن :
str=textbox1.text
حالا چک کن اگه str مساوی رشته تهی هست پس str=null
حالا مقدار فیلد مورد نظر در دستور درج رو بذار str
خط دوم کدتونو اگه مثل کد بالا نوشتین تصحیح کنید
cmd.CommandText="insert into Tbl (feild1,feild2) values (@feild1,@feild2)";

Saman Hashemi
دوشنبه 07 آذر 1390, 16:02 عصر
اینجوری بنویس ببین درست میشه...!
SqlCommand cmd = new SqlCommand();
if (string.IsNullOrEmpty(TextBox.Text))
{
cmd.Parameters.AddWithValue("@feild1", SqlDbType.NVarChar).Value = null;
}
else
{
cmd.Parameters.AddWithValue("@feild1", SqlDbType.NVarChar).Value = TextBox.Text;
}

farhud
دوشنبه 07 آذر 1390, 16:17 عصر
دست همگی درد نکنه، ولی انگار درست بشو نیست.

تمام راه ها را امتحان کردم. اصلا با مقدار null دادن مشکل داره. شک کردم نکنه در جدول تیک Allow Null را نزده باشم. ولی نگاه کردم، دیدم زده ام.

پیام خطایی که میده اینه:


The parameterized query '@feild1' expects the parameter '@feild2' which was not supplied.


البته اینم بگم که میشه دستی در جدول درست کرد. داخل خود SQL Server مقدار NULL را قبول میکنه. بدون هیچ مشکلی.

fakhravari
دوشنبه 07 آذر 1390, 20:03 عصر
try
{
SqlConnection con1 = new SqlConnection(ConnectionString);
con1.Open();
SqlCommand cmd1 = new SqlCommand(SqlAdd, con1);
cmd1.CommandType = CommandType.Text;
cmd1.Parameters.Add("@ForumID", SqlDbType.Int).Value = this.ForumID;
cmd1.Parameters.Add("@Subject", SqlDbType.NVarChar).Value = this.Subject;
cmd1.Parameters.Add("@Date", SqlDbType.NVarChar).Value = this.Date;
cmd1.Parameters.Add("@Time", SqlDbType.NVarChar).Value = this.Time;
cmd1.Parameters.Add("@Message", SqlDbType.NVarChar).Value = this.Message;
cmd1.Parameters.Add("@Img", SqlDbType.NVarChar).Value = this.Img;
cmd1.Parameters.Add("@Atach", SqlDbType.NVarChar).Value = this.Atach;

cmd1.ExecuteNonQuery();
con1.Close();
this.lasteror = "اطلاعات ثبت شد";
}

catch
{
this.lasteror = "اشکال در ثبت اطلاعات";
}

Himalaya
دوشنبه 07 آذر 1390, 21:21 عصر
سلام

cmd.Parameters.AddWithValue("@feild2", !string.IsNullOrEmpty(textBox2.Text) ? (object)textBox2.Text : DBNull.Value);

farhud
دوشنبه 21 آذر 1390, 16:21 عصر
با تشکر از تمام دوستان.

نوع فیلد را به nvarchar تغییر دادم. درست شد.
ظاهرا نمیشه از طریق برنامه نویسی به نوع char مقدار null داد.

fakhravari
دوشنبه 21 آذر 1390, 19:15 عصر
با تشکر از تمام دوستان.

نوع فیلد را به nvarchar تغییر دادم. درست شد.
ظاهرا نمیشه از طریق برنامه نویسی به نوع char مقدار null داد.

در مقدار char اسپیس میخوره فضای خالی