Я читаю CSV-файл через OleDBConnection, получаю целочисленные значения для некоторых полей и сохраняю в БД SQL. У меня есть столбец с именем Q3
, который обнуляется .
Когда я пытаюсь сделать следующее, это работает хорошо:
create table #temp (num int);
insert into #temp (num) values (null);
Однако у меня есть следующий код в asp.net 4.5, который не работает:
SQLDatabase sql = new SQLDatabase();
SQLParamList sqlParams = new SQLParamList();
int? Q3 = null;
Q3 = CheckNumericContent(r, dr, "Q3"); //Q3 empty cell for the row in csv.
sqlParams.Add("@Q3", Q3); //Q3 is still null here.
sql.ExecStoredProcedureDataTable("[spInsert_Data]", sqlParams);
Код функции CheckNumericContent
здесь:
private int? CheckNumericContent(int r, DataRow dr, string columnname)
{
int ret = -1;
if (dr[columnname] != null && !String.IsNullOrEmpty(dr[columnname].ToString()))
{
try
{
if (!Int32.TryParse(dr[columnname].ToString(), out ret))
{
ErrorMessage = ErrorMessage + string.Format("Row {0}: {1) is not numeric.\n", r.ToString(), columnname);
}
}
catch (Exception ex)
{
ErrorMessage = ErrorMessage + "some error: "+ex.ToString();
}
return ret;
}
else
{
return null;
}
}
хранимая процедура spInsert_Data: (Sql Server 2014):
CREATE PROCEDURE spInsert_Data
@Q3 int
AS BEGIN
insert into tblMyData (Q3) values (@Q3);
END
Этот код работает хорошо, если Q3 не равен нулю. Когда Q3 равен нулю, что означает, что для строки Q3 нет данных для строки в CSV, он выдает ошибку:
Процедура или функция 'spInsert_Data' ожидает параметр '@ Q3', который
не был поставлен.
Изображение ошибки приведено ниже. Что не так и как я могу это исправить? Любая помощь будет оценена!