MSSQL server 2005-проблема в типе данных (smalldatetime), в то время как его поле имеет 5 smalldatetime
Дорогие все,
В моей таблице с именем tbltest есть 5 столбцов с типом данных smalldatetime и другие столбцы. И у меня возникла очень интересная проблема, когда я вставляю значение datetime.
Имя полей моего столбца Датировано, Начальное Время, Конечное Время, OnAirStartTime, OnAirEndTime.
И в моем коде операции вставки нет никаких проблем:
db.Adapter("INSERT INTO tbltest (Dated,StartTime,EndTime,OnAirStartTime,OnAirEndTime,DurationStart,DurationOnAir,DeviceType,UnitName,VendorName,ActiveNetwork,SIM,ProfileUsed,Bitrate,ServerPort,CameraType,EventName,Division,Location,Stutus,Remarks,ReporterName,CameramanName,TechnicianName) VALUES ('" + Convert.ToDateTime(this.mysql.dataSet.Tables["liveoperation7"].Rows[i]["Dated"].ToString()).ToString() + "'," + "'" + Convert.ToDateTime(this.mysql.dataSet.Tables["liveoperation7"].Rows[i]["StartTime"].ToString()).ToString() + "'," + "'" + Convert.ToDateTime(this.mysql.dataSet.Tables["liveoperation7"].Rows[i]["EndTime"].ToString()).ToString() + "'," + "'" + Convert.ToDateTime(this.mysql.dataSet.Tables["liveoperation7"].Rows[i]["OnAirStartTime"].ToString()).ToString() + "'," + "'" + Convert.ToDateTime(this.mysql.dataSet.Tables["liveoperation7"].Rows[i][5].ToString()).ToString() + "'," + "'" + Convert.ToInt32(this.mysql.dataSet.Tables["liveoperation7"].Rows[i]["DurationStart"].ToString()) + "'," //+ "'" + Convert.ToDateTime(this.mysql.dataSet.Tables["liveoperation7"].Rows[i][5].ToString()).ToString() + "'," + "'" + Convert.ToInt32(this.mysql.dataSet.Tables["liveoperation7"].Rows[i]["DurationOnAir"].ToString()) + "'," + "'" + this.mysql.dataSet.Tables["liveoperation7"].Rows[i]["DeviceType"].ToString() + "'," + "'" + this.mysql.dataSet.Tables["liveoperation7"].Rows[i]["UnitName"].ToString() + "'," + "'" + this.mysql.dataSet.Tables["liveoperation7"].Rows[i]["VendorName"].ToString() + "'," + "'" + this.mysql.dataSet.Tables["liveoperation7"].Rows[i]["ActiveNetwork"].ToString() + "'," + "'" + Convert.ToInt32(this.mysql.dataSet.Tables["liveoperation7"].Rows[i]["SIM"].ToString()) + "'," + "'" + this.mysql.dataSet.Tables["liveoperation7"].Rows[i]["ProfileUsed"].ToString() + "'," + "'" + this.mysql.dataSet.Tables["liveoperation7"].Rows[i]["Bitrate"].ToString() + "'," + "'" + this.mysql.dataSet.Tables["liveoperation7"].Rows[i]["ServerPort"].ToString() + "'," + "'" + this.mysql.dataSet.Tables["liveoperation7"].Rows[i]["CameraType"].ToString() + "'," + "'" + this.mysql.dataSet.Tables["liveoperation7"].Rows[i]["EventName"].ToString() + "'," + "'" + this.mysql.dataSet.Tables["liveoperation7"].Rows[i]["Division"].ToString() + "'," + "'" + this.mysql.dataSet.Tables["liveoperation7"].Rows[i]["Location"].ToString() + "'," + "'" + this.mysql.dataSet.Tables["liveoperation7"].Rows[i]["Stutus"].ToString() + "'," + "'" + this.mysql.dataSet.Tables["liveoperation7"].Rows[i]["Remarks"].ToString() + "'," + "'" + this.mysql.dataSet.Tables["liveoperation7"].Rows[i]["ReporterName"].ToString() + "'," + "'" + this.mysql.dataSet.Tables["liveoperation7"].Rows[i]["CameramanName"].ToString() + "'," + "'" + this.mysql.dataSet.Tables["liveoperation7"].Rows[i]["TechnicianName"].ToString() + "')");
Передача 5 значений datetime:
Дата = 2016-10-05 00: 00:00
StartTime = 2016-10-05 13:53:00
EndTime = 2016-10-05 13:55:00
OnAirStartTime = 2016-10-05 13:53:00
OnAirEndTime = 10/5/2016 13:54:30
>Но есть вставка в файл OnAirEndTime значения поля EndTime.
Есть ли какие-либо проблемы с совпадением имен полей ?
Или есть ли какое-либо ограничение в MSSQL 2005, что не должно быть более 4 полей с smalldatetime типы данных ?
Что я уже пробовал:
Я просто изменил тип данных OnAirEndTime как varchar, чем его точное значение вставки. Но почему я должен менять тип данных ?
Пожалуйста, помогите мне сохранить smalldatatime в качестве типа данных, сколько мне нужно в таблице.
Спасибо.
[no name]
Использование правильного параметризованного запроса может помочь вам отследить вашу ошибку.
Dave Kreskowiak
Ваш код представляет собой серьезную проблему безопасности, поскольку он подвержен атакам SQL-инъекций. Преобразуйте это в параметризованный запрос вместо мусора конкатенации строк, который у вас есть сейчас.
Это также позволит вам иметь гораздо больше контроля над тем, как ваши данные передаются на сервер, и одновременно решить вашу проблему.