我尝试使用ADO net创建Update语句。我正在使用Access 2010和C sharp,但它不起作用,它没有任何错误。
public static OleDbConnection FileConnexion()
{
try
{
string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" +
"Data Source=..//..//AdoNetTesteRequete//Teste.accdb";
OleDbConnection conn = new OleDbConnection(connectionString);
conn.Open();
return conn;
}
catch (Exception e)
{
Console.WriteLine("L'erreur suivante a été rencontrée :" + e.Message);
return null;
}
}
public void Modifier(Inscription ins)
{
string req = "UPDATE inscription set Adresse=@Adresse,Tele=@Tele where Nom=@Nom and Prenom=@Prenom";
OleDbConnection connexion = FicheConnexion.FileConnexion();
OleDbCommand conn = new OleDbCommand(req, connexion);
conn.Parameters.AddWithValue("@Nom", ins.Nom);
conn.Parameters.AddWithValue("@Prenom", ins.Prenom);
conn.Parameters.AddWithValue("@Adresse", ins.Adresse);
conn.Parameters.AddWithValue("@Tele", ins.Tele);
conn.ExecuteNonQuery();
connexion.Close();
}
答案 0 :(得分:2)
可能存在参数序列的问题。
string req = "UPDATE inscription set Adresse=@Adresse,Tele=@Tele where Nom=@Nom and Prenom=@Prenom";
OleDbConnection connexion = FicheConnexion.FileConnexion();
OleDbCommand conn = new OleDbCommand(req, connexion);
conn.Parameters.AddWithValue("@Adresse", ins.Adresse);
conn.Parameters.AddWithValue("@Tele", ins.Tele);
conn.Parameters.AddWithValue("@Nom", ins.Nom);
conn.Parameters.AddWithValue("@Prenom", ins.Prenom);
以与查询相同的顺序添加参数,可能会解决您的问题。
答案 1 :(得分:0)
您可以检查where语句是否返回一行。 如果更新查询中没有错误,则可能只是没有对应的行。在这种情况下,ADO.NET将不会引发错误。
检查是否返回0或1:
string req = "UPDATE inscription set Adresse=@Adresse,Tele=@Tele where Nom=@Nom and Prenom=@Prenom";
using(OleDbConnection connexion = FicheConnexion.FileConnexion())
{
using(OleDbCommand conn = new OleDbCommand(req, connexion))
{
conn.Parameters.AddWithValue("@Nom", ins.Nom);
conn.Parameters.AddWithValue("@Prenom", ins.Prenom);
int count = Convert.ToInt32( conn.ExecuteScalar());
}
如果cound不为0,则应该查找错误。