0

Мне нужно вставить строку на моем SQL Server через VS 2008, и мои коды идут следующим образом;Передача Datetime в SQLCommand

conn = New SqlConnection 
      conn.ConnectionString = String.Format("Data Source={0}; Integrated Security=True; Database={1};", Datasource, Database) 

sqlcmd = conn.CreateCommand() 
      sqlcmd.CommandText = String.Format("Insert into WWF_Test (Name, Address, Quantity, CreditCardNo, LogMsg, Date_Time) values ({0}, {1}, {2}, {3}, {4}, {5})", _ 
               CustomerName, CustomerAdd, Quantity, CreditCardNum, Now, message) 

      Using conn 
       conn.Open() 
       sqlcmd.ExecuteNonQuery() 
       conn.Close() 
      End Using 

В перспективе, у меня исключение с колонками DATE_TIME (типа DateTime в SQL Server), в результате чего часть времени бросает ошибку. Подобно;

{"Incorrect syntax near '10'."} --> where Now = 11/11/2013 10:50:24 

У меня отсутствует конверсия? Учитывая, что мне нужна дата и время, я думаю, что это должно было принять это. Любая помощь plz.

ответ

1

Не используйте string.Format для ввода параметров в ваш SQL для начала.

Вместо этого используйте параметризованный SQL и укажите значения для этих параметров. Это позволит избежать SQL Injection Attacks, а также поможет избежать ненужных и проблемных преобразований строк.

Так что вы хотите что-то вроде:

sqlcmd.CommandText = "Insert into WWF_Test (Name, Address, Quantity, CreditCardNo, LogMsg, Date_Time) values (@Name, @Address, @Quantity, @CreditCardNo, @LogMsg, @Date_Time)" 

sqlcmd.Parameters.Add("@Name", SqlDbTypes.NVarChar).Value = CustomerName 
sqlcmd.Parameters.Add("@Address", SqlDbTypes.NVarChar).Value = CustomerAdd 
etc 

... используя SqlDbTypes.DateTime, где это необходимо. Таким образом, вам не нужно беспокоиться о том, как значение DateTime будет представлено в SQL, потому что это не в SQL. Это возможно, что водитель преобразует его в текст, чтобы передать его, но даже если это так, это означает, что водительский номер отвечает за его правильное решение. Скорее всего, он будет использовать двоичное представление в любом случае.

+0

Это работает, спасибо;) –

Смежные вопросы