1

尝试更新记录不知道为什么我收到错误 异常详细信息:System.Data.OleDb.OleDbException:没有为一个或多个必需参数提供值。

这是我的代码,请指导我。

  public static string lasttable;
  public static string newtable;

  newtable = "c" + cont.ToString();
  lasttable = input;

 string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\AGENTJ.AGENTJ-PC\Documents\Visual Studio 2010\WebSites\mfaridalam\App_Data\mfaridalam1.accdb;    Persist Security Info=False;";
      OleDbConnection conn = new OleDbConnection(connectionString);
                    conn.Open();
        string query = "UPDATE [LastInfo] SET [LastAlbum]=@newtable WHERE [LastAlbum]=@lasttable";
        OleDbCommand comd = new OleDbCommand();
        comd.Parameters.Add("@LastAlbum", OleDbType.VarChar);
        comd.Parameters["@LastAlbum"].Value = newtable;
        comd.CommandText = query;
        comd.Connection = conn;
        comd.ExecuteNonQuery();
        conn.Close();   
4

1 回答 1

1

您正在使用 OleDb,而 OleDb 并不关心参数名称。
但是,您需要为命令文本中存在的每个占位符添加一个参数,并按照它们出现的顺序。
您有两个参数 (@newtable@lasttable),但您只添加了一个参数(并且您错误地命名它,但是,正如我所说,这对 OleDb 无关紧要)。

您需要添加第二个参数@lasttable

  string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\AGENTJ.AGENTJ-PC\Documents\Visual Studio 2010\WebSites\mfaridalam\App_Data\mfaridalam1.accdb;    Persist Security Info=False;";
  using(OleDbConnection conn = new OleDbConnection(connectionString))
  {
      conn.Open();
      string query = "UPDATE [LastInfo] SET [LastAlbum]=@newtable WHERE [LastAlbum]=@lasttable";
      OleDbCommand comd = new OleDbCommand();

      comd.Parameters.Add("@newTable", OleDbType.VarChar);
      comd.Parameters["@newTable"].Value = newtable;

      comd.Parameters.Add("@lastTable", OleDbType.VarChar);
      comd.Parameters["@lastTable"].Value = lasttable;

      comd.CommandText = query;
      comd.Connection = conn;
      comd.ExecuteNonQuery();
  }
于 2013-07-21T23:13:56.127 回答