使用OleDbConnection进行更新时出现问题

时间:2017-11-23 14:17:49

标签: c#

我尝试使用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();
}

2 个答案:

答案 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,则应该查找错误。