У меня есть хранимая процедура SQL, которая использует команду openrowset, извлекает значения из листа Excel и вставляет их в базу данных.
Я создал приложение C#, которое будет вызывать процедуру и выполнять ее.
ПРОБЛЕМА!
Когда я выполняю процедуру из студии управления SQL, ошибок нет. Это происходит прекрасно. Но когда я запускаю его через приложение С#, я получаю сообщение об ошибке: «Ошибка преобразования при преобразовании даты и/или времени из символьной строки».
Код
SQL-запрос (только часть вставки)
insert into tbl_item ([Item code],[Dt Created])
select[Item code] ,
case when [Dt Created] is null or [Dt Created]='' then null when ISDATE(CONVERT(nvarchar,CONVERT(datetime, [Dt Created],103))) =1 then CONVERT(datetime, [Dt Created],103) else null end as [Dt Created]
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0; Database=C:\Upload\Report.xlsx;HDR=YES;IMEX=1;',
'select * from [Sheet1$]')
Код C#
public int updateItem()
{
SqlCommand cmd; cmd = new SqlCommand("usp_updateItem", conn);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter returnParameter = cmd.Parameters.Add("RetVal", SqlDbType.Int);
returnParameter.Direction = ParameterDirection.ReturnValue;
try
{
if (conn.State.Equals(ConnectionState.Closed))
conn.Open();
cmd.ExecuteNonQuery();
ret = Convert.ToInt32(returnParameter.Value);
}
catch (Exception e)
{
err = "Error: " + e.Message;
return -1;
}
finally
{
conn.Close();
}
return ret;
}