Я создаю базовое приложение для инвентаризации клиентов, и при преобразовании кода из SQL Server в MS Access (в котором я немного менее разбираюсь) я столкнулся с ошибкой «Несоответствие типов данных», когдапытаясь выполнить базовую вставку.
Я рассмотрел несколько подобных вопросов здесь и дважды проверил руководство по синтаксису msdn, но не могу найти причину, по которой написанный мной скрипт генерирует эту ошибку,Я несколько раз менял свой код, чтобы попытаться обеспечить правильный тип данных (в конце концов я получил явную типизацию и позже добавил значение).На самом деле я даже взял строку и вставил ее в MS Access (без пробелов и двойных кавычек), и она, кажется, прекрасно работает с заданными значениями.На данный момент, я действительно и действительно озадачен, и мне интересно, может ли это быть просто причуда с адаптером Oledb?Любая помощь будет оценена.Спасибо.
// SQL query defined elsewhere:
public static readonly string sqlAddCustomerNotes = "INSERT INTO CustomerNotes (Customer_ID, Notes, NotesDate) "
+ "VALUES(@Customer_ID, @Notes, @NotesDate);";
// end sql query
// data access function
public static void addNotes(int customerID, string notes, DateTime notesDate)
{
string query = Scripts.sqlAddCustomerNotes;
using (
OleDbCommand dbCommand = new OleDbCommand()
{
Connection = new OleDbConnection(ConnectionAccess.connString),
CommandType = CommandType.Text,
CommandText = query,
Parameters =
{
new OleDbParameter("@Customer_ID", OleDbType.Integer),
new OleDbParameter("@Notes", OleDbType.LongVarChar),
new OleDbParameter("@NotesDate", OleDbType.DBTimeStamp)
}
}) // end using parenthetical
{ // begin using scope
dbCommand.Parameters[0].Value = customerID;
dbCommand.Parameters[1].Value = notes;
dbCommand.Parameters[2].Value = notesDate;
foreach (OleDbParameter param in dbCommand.Parameters)
{ // replace ambiguous null values with explicit DBNulls.
if (param.Value == null)
{
param.Value = DBNull.Value;
}
}
dbCommand.Connection.Open();
int rowsAffected = dbCommand.ExecuteNonQuery();
dbCommand.Connection.Close();
Console.WriteLine($"Rows affected: {rowsAffected}");
}
} // end addCustomerNotes
/*
table "CustomerNotes" has the following columns:datatypes
CustomerNotes_ID: AutoNumber
Customer_ID: Number
Notes: Memo
NotesDate: Date/Time
CreateDate: Date/Time
test case (in code) was:
@Customer_ID = 5
@Notes = "customer might change last name to simpson."
@NotesDate = {6/26/2019 12:05:39 PM}
*/