Je voudrais simplement utiliser un OdbcConnection/ODBCCommand et utiliser un SQL Mettre à jour la requête
Il existe un pilote de base de données JET que vous devriez être en mesure d'utiliser pour établir une connexion de base de données à une base de données MSAccess à l'aide de l'objet ODBCConeection.
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\\PathTo\\Your_Database_Name.mdb; User Id=admin; Password=";
using (OdbcConnection connection =
new OdbcConnection(connectionString))
{
// Suppose you wanted to update the Salary column in a table
// called Employees
string sqlQuery = "UPDATE Employees SET Salary = Salary * Factor";
OdbcCommand command = new OdbcCommand(sqlQuery, connection);
try
{
connection.Open();
command.ExecuteNonQuery();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
// The connection is automatically closed when the
// code exits the using block.
}
Vous pouvez utiliser ces sites pour vous aider à générer une chaîne de connexion:
EDIT - Exemple d'utilisation d'un lecteur de données pour faire défiler les enregistrements afin de préciser la règle commerciale
Je devrais noter que l'exemple suivant pourrait être amélioré de certaines manières (particulièrement si le pilote de base de données supporte des requêtes paramétrées). Je voulais seulement donner un exemple relativement simple pour illustrer le concept.
using (OdbcConnection connection =
new OdbcConnection(connectionString))
{
int someNumber;
int employeeID;
OdbcDataReader dr = null;
OdbcCommand selCmd = new OdbcCommand("SELECT EmployeeID, SomeNumber FROM Employees", connection);
OdbcCommand updateCmd = new OdbcCommand("", connection);
try
{
connection.Open();
dr = selCmd.ExecuteReader();
while(dr.Read())
{
employeeID = (int)dr[0];
someNumber = (int)dr[1];
updateCmd.CommandText = "UPDATE Employees SET SomeNumber= " + GetBusinessRule(someNumber) + " WHERE employeeID = " + employeeID;
updateCmd.ExecuteNonQuery();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
// Don't forget to close the reader when we're done
if(dr != null)
dr.Close();
}
// The connection is automatically closed when the
// code exits the using block.
}
Une instruction SQL UPDATE * affecte * tous les enregistrements d'une table (sauf si vous ajoutez une condition de recherche, c'est-à-dire une clause WHERE). Pourquoi pensez-vous que vous devez parcourir les dossiers? – onedaywhen
Je pense que je devrais passer en revue les dossiers, puisque la mise à jour implique des logiques commerciales complexes qui ne peuvent pas être exécutées contre le serveur, sth. Comme column1 = ApplyBussinessRule (Column2) où il n'y a aucun moyen d'implémenter ApplyBussinessRule sur le serveur. - Peter 52 secondes – Peter
Avec le serveur signification databaseserver ou databaseapp comme msAccess – Peter