PDA

View Full Version : سوال: درج مقدار null با دستور insert در پایگاه داده



malaki.davud
سه شنبه 24 بهمن 1391, 21:31 عصر
با سلام
من می خوام در دستور insert اگه تکس باکس خالی بود مقدار null رو در جدول ثبت کنه (متغییر null پایگاه داده ای در سی شارپ چطور باید نوشته )؟؟
با تشکر

r_s1389@yahoo.com
سه شنبه 24 بهمن 1391, 22:12 عصر
موقع طراحی جدوا اگر گزینه Allow null تیکدار باشه مقدار Null میگیره
و اگر موقع Insert مقداری رو به اون فیلد ها نفرستی خودش مقدار Null میگیره

malaki.davud
چهارشنبه 25 بهمن 1391, 00:10 صبح
منظورم اینه که مثلا در دستور insert زیر در هنگام مقداردهی به متغییر ها ممکن است یک فیلد که مقدار ان از تکس باکس خوانده میشه ممکنه مقدار ان null باشه


INSERT INTO [tb_Company_Information]
([IDcrm],[Company_Name],[Record_Number],[Record_Date],[Phone_Company1],[Phone_Company2],[Fax]
,[Address_Company],[ID_city],[ID_category_Work],[Description])
VALUES
()




مشکل من در null دادن به فیلدهای از نوع int یا date time است ؟؟

saeedgholami
چهارشنبه 25 بهمن 1391, 00:25 صبح
سلام
مثلا چ مشکلی اگه Null بگیرن واستون به وجود میاد؟

malaki.davud
چهارشنبه 25 بهمن 1391, 00:36 صبح
مثلا وقتی فیلدی که از نوع تاریخ به روش زیر مقدار دهی می کنیم مشکلی می خورم


VALUES ('null')


میگه نمی تونه مقدار string رو به نوع datetime تبدیل کنه
ولی اگر تک کتنشن ها رو نگذاری وقتی مقدار داشته باشد چون تاریخ و زمان پشت سر هم میاره error میده ؟؟

saeedgholami
چهارشنبه 25 بهمن 1391, 00:41 صبح
داداش یه راهنمایی از من به شما:اگه واسه تاریخ از نوع (char(10 استفاده کنید فک کنم بهتر باشه البته از نظر من داداش

khokhan
چهارشنبه 25 بهمن 1391, 00:42 صبح
try
{
sqlStmt = "insert into Emp (FirstName,LastName,Date) Values (@FirstName,@LastName,@Date) ";
conString = "server=localhost;database=Northwind;uid=sa;pwd=;";
cn = new SqlConnection(conString);
cmd = new SqlCommand(sqlStmt, cn);
cmd.Parameters.Add(new SqlParameter("@FirstName", SqlDbType.NVarChar, 11));
cmd.Parameters.Add(new SqlParameter("@LastName", SqlDbType.NVarChar, 40));
cmd.Parameters.Add(new SqlParameter("@Date", SqlDbType.DateTime));
sqldatenull = SqlDateTime.Null;
cmd.Parameters["@FirstName"].Value = txtFirstName.Text;
cmd.Parameters["@LastName"].Value = txtLastName.Text;
if (txtDate.Text == "")
{
cmd.Parameters ["@Date"].Value =sqldatenull ;
//cmd.Parameters["@Date"].Value = DBNull.Value;
}
else
{
cmd.Parameters["@Date"].Value = DateTime.Parse(txtDate.Text);
}
cn.Open();
cmd.ExecuteNonQuery();
Label1.Text = "Record Inserted Succesfully";
}
catch (Exception ex)
{
Label1.Text = ex.Message;
}
finally
{
cn.Close();
}

Pis7Aller
چهارشنبه 25 بهمن 1391, 00:43 صبح
دو نوع NULL تو NULL , sql رو نشون میدن یکی اینه که مینویسه NULL و یکی دیگه اینه که هیچی نمی نویسه که همون NULL خودمونه . حالا اگه یک text box خالی رو insert کنی به جای مقدارش خالی میذاره که همون ناله .

hahaie
چهارشنبه 02 دی 1394, 07:51 صبح
دو نوع NULL تو NULL , sql رو نشون میدن یکی اینه که مینویسه NULL و یکی دیگه اینه که هیچی نمی نویسه که همون NULL خودمونه . حالا اگه یک text box خالی رو insert کنی به جای مقدارش خالی میذاره که همون ناله .


درسته که این پست قذیمیه ولی حل نشده.منم الان بهش برخوردم.
با پاسخ شما اگه نوع فیلد int باشه برای ارسال باید مقدار textbox رو کانورت کنی اونوقت اگه تکست باکست خالی باشه بهت error میده.
کسی راه حلی نداره؟

شهابسلطانی
سه شنبه 08 دی 1394, 14:56 عصر
سلام
دوست عزیز میتونی از طریق کوئری در sql و با استفاده از دستور
ALTER TABLE table_name
ALTER COLUMN column_name datatype
وضعیت ها رو تغییر بدی
بجای datatype بنویس
مثلا
int,not null
و یا اگر تنها بنویسی
مثلا
int
خودش تیک null رو توی جدولت میزنه
بفرمایید