Insérez DateTime dans l'Accès

Le problème:
J'essaie d'insérer une date de temps dans une base de données access à l'aide de l'interface Oledb en C#.

Piratage solution: Générer mon sur insérer une chaîne de caractères sans l'aide de la commande.Propriétés

Je peux insérer du texte dans la base de données sans problème, mais lorsque j'essaie de type datetime, je me retrouve avec cette erreur: System.Les données.OleDb.OleDbException {"type de Données incompatible dans l'expression des critères."}

Il y a plusieurs postes de semblable à cela, mais hélas pas de solution de travail.

Voici mon code:

void TransferData()
{
string instCmd = Get_InsertCommand(0); //hard coded table 0 for testing
Fill_ProductTable_ToInsert();
con.Open();
//It would be nice not to have to separate the date indexes
int[] textIndex = { 0, 1, 2, 3, 4, 7 };
int[] dateIndex = { 5, 6 };
try
{
foreach (DataRow row in DataToStore.Tables[0].Rows)
{
OleDbCommand command = new OleDbCommand();
command.Connection = con;
command.CommandText = instCmd;
foreach(int j in textIndex)
command.Parameters.AddWithValue("@" + j, row[j]);
foreach (int j in dateIndex)
{
//TESTING CODE
///////////////////////////////////////////////////////////////////////////
string input = "#\'" +DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") +"\'#";
command.Parameters.AddWithValue("@" + j,    input.ToString());
Program.WriteLine(input.ToString());
///////////////////////////////////////////////////////////////////////////
}
command.ExecuteNonQuery();
}
}
finally
{
con.Close();
}
}
string Get_InsertCommand(int i)
{
string sqlIns = "INSERT INTO " + DataToStore.Tables[0].TableName + " (";
string temp = "VALUES (";
for (int j = 0; j < expected_header[i].Length - 1; j++)
{
sqlIns += expected_header[i][j] + ", ";
temp += "@" + j + ", ";
}
int lastIndex = expected_header[i].Length -1;
sqlIns += expected_header[i][lastIndex] + ") ";
temp += "@" + lastIndex + ")";
sqlIns += temp;
return sqlIns;
}

À l'intérieur de la zone appelée " test de code, j'ai essayé de chaque permutation de la date de l'heure à laquelle je pouvais penser.
J'ai essayé tous les formats avec # et'
J'ai essayé l'un de ces formats: aaaa-MM-jj, aaaammjj, aaaa\MM\jj, aaaa/MM/jj
J'ai aussi essayé ToOADate()
Et ToString(), ToShortDateString()

J'ai aussi essayé le réglage de la base de données pour accepter ANSI-92 Sql

Je suis à cours d'idées.

Remarque: Ce code est mis en place pour faire face à de multiples tables à partir de plusieurs bases de données, l'esprit, les boucles...

InformationsquelleAutor user1642357 | 2012-10-16