Большая проблема при попытке построить запрос при объединении строк. Это ОГРОМНАЯ вещь для воздействия SQL -инъекции. Лучший способ сделать это - использовать ПАРАМЕТРИЗОВАННЫЕ запросы, и вы можете просмотреть все и найти их, вы, вероятно, просто не знали о них.
Обычно в вашем запросе вы используете "?" в качестве заполнителя для нужного параметра, затем добавьте объект параметра с фактическим значением / типом данных, и запрос OleDb поместит его на свое место и будет иметь правильный тип данных, поэтому вам не нужно беспокоиться о форматировании строки от даты в порядке c.
Также, для имен, что, если бы у вас было имя человека «О'Коннер». Вы только что завершили строку запроса и в противном случае потерпите неудачу. Вы бы сильно почесали голову.
Сказав все это, давайте вернемся к вашему запросу, сделаем его немного более читаемым и параметризуем его ...
Вы ссылаетесь на ms- доступ как к базе данных, так и к OleDb, что подразумевает, что вы пишете либо C#, либо VB, возможно, другое. Я продемонстрирую использование C#, вы можете при необходимости изменить язык разработки.
using(OleDbConnection connection1 = new OleDbConnection( WhateverYourConnectionString )
{
connection1.Open();
using(OleDbCommand sqlcmd = new OleDbCommand("", connection1))
{
// simplified query and you can see the "?" place-holders
sqlcmd.CommandText =
@"INSERT INTO Orders
( OrderDate,
MemberID,
CityID,
OrderAdress,
CreditCardID,
OrderStatus )
VALUES
( ?,
?,
?,
?,
?,
'Not sent' )";
// Now, add your parameters in the SAME ORDER as the "?" in the query
sqlcmd.Parameters.AddWithValue("parmForDate", o.OrderDate );
sqlcmd.Parameters.AddWithValue("parmForMember", o.MemberID );
sqlcmd.Parameters.AddWithValue("parmForCity", o.CityID );
sqlcmd.Parameters.AddWithValue("parmForAddress", o.OrderAddress );
sqlcmd.Parameters.AddWithValue("parmForCard", o.CreditCardID );
// since the last parameter is fixed, you can put that in explicitly.
// you can similarly put fixed field of other strings, numbers.
// Now you can execute it
sqlcmd.ExecuteNonQuery();
}
connection1.Close()
}