PDA

View Full Version : مشکل در ارسال پارامتر به sql



بیتافرهی
جمعه 19 تیر 1388, 12:34 عصر
سلام
من تو برنامم یه قسمتی دارم ،که باید پارامتری را از فرم c# به یک STORE PROCEDURE در SQL پاس بدم ولی وقتی اجرا میشه روی اولین خط ارسال پارامتر ،خطا می گیره ،به خاطر اینکه میگه پارامتر در فرمت مناسبی نیست.
البته این خطا را وقتی میگیرد که اون فیلد nULL باشه، وقتیکه اون فیلد مقدار تاریخ را داشته باشد ،برنامه مشکلی ندارد.(البته من این مقدار را از طریق یکی از سطرهای GridView که به یکی از جدولای بانک متصل است تامین می کنم .وقتی اون جدول را در sql 2005 باز می کنم ،مقدار اون فیلد Null نمایش داده می شود ، ولی در محیط C# ، وقتی اون جدول را به یک گرید وصل می کنم ،اون فیلد را که در sql ،به صورت Null نمایش میداد ،اینجا به صورت یک فیلد خالی نشون میدهد.).
برای رفع این مشکل چه پیشنهادی دارید؟من از Try ,Catch هم استفاده کردم ولی اینبار هم یه خطای دیگه داد:
خطا:
Procedure or Function 'sp_synchronize_time' expects parameter '@time_of_start', which was not supplied.

کد C#

sql_conn.Open();
sql_comm.CommandType = CommandType.StoredProcedure;
sql_comm.CommandText = "sp_synchronize_time";
try
{

sql_comm.Parameters.AddWithValue("@time_of_start", Convert.ToDateTime(selectedRow.Cells[8].Text));
sql_comm.Parameters.AddWithValue("@time_of_end", Convert.ToDateTime(selectedRow.Cells[9].Text));
sql_comm.Parameters.AddWithValue("@day_of_class", selectedRow.Cells[7].Text);
}
catch { }

milade
جمعه 19 تیر 1388, 12:58 عصر
سلام .
همون طور که گفتید وقتی یه چیز نال به یه پارامتر پاس بدید خوب همین خطا رو میده .
شما چک کنید اگه نال بود شما هم "" رد کنید تا خطا نده . ( یا هر کار دلخواه )

موفق باشید

بیتافرهی
جمعه 19 تیر 1388, 19:30 عصر
برای رفع اون خطا ،من از کد زیربرای هر کدام از پارامترها استفاده کردم ولی باز هم خطا می دهد.:ناراحت:


if (Convert.ToDateTime(selectedRow.Cells[9].Text )!= null)
{
sql_comm.Parameters.AddWithValue("@time_of_end", Convert.ToDateTime(selectedRow.Cells[9].Text));
}
else
{
sql_comm.Parameters.AddWithValue("@time_of_end", (object)DBNull.Value);

}

خطارا روی کدی که قرمز کردم ،میدهد.

String was not recognized as a valid DateTime.ضمنا در sql خاصیت null بودن ،تیک خورده است.

milade
شنبه 20 تیر 1388, 08:00 صبح
خطارا روی کدی که قرمز کردم ،میدهد.
سلام .
ببین خوب معلومه که گفته DateTime نیست .
دیباگ کن ببین بعد از Convert اون چه مقداری میگیره .

یک text box بیشتر نداریم و اطلاعات هم مشخصه اما در بین راه eror زیر رو می ده اگه امکانش هست سریعتر کمک کنید:
اگه روی لوکال هست یه بار دیگه SQL نصب کن .
اگه هاست هست باید با یوزر پسورد بانک کانکت بشی چرا که در هاست User Instance=True بی معنی هست .

موفق باشید

kamrannazari
شنبه 20 تیر 1388, 08:31 صبح
من از اين كد استفاده مي كنم


public static string IfNullReturnEmpty(string var)
{
string st = var;
if (st == null) st = "";
else
if (st == string.Empty)
st = "";
return st;
}