2016-05-22 7 views
0

Ich erhalte den Fehler "Keine Werte für einen oder mehrere erforderliche Parameter angegeben" Bitte helfen Sie. Für Nid.Text ist der Wert "N712".Keine Werte für einen oder mehrere erforderliche Parameter

private void Form1_Load(object sender, EventArgs e) 
     { 
      OleDbConnection cont1 = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=H:\vsual\Database3.accdb"); 
      OleDbCommand cmd1 = new OleDbCommand("select distinct UserName from Users where [email protected] ", cont1); 
      OleDbCommand cmd2 = new OleDbCommand("select distinct QueueName from Users where [email protected] ", cont1); 
      OleDbCommand cmd3 = new OleDbCommand("select * from Issues", cont1); 
      cmd1.Parameters.AddWithValue("@UID", Nid.Text); 
      cmd2.Parameters.AddWithValue("@UID", Nid.Text); 
      cont1.Open(); 
      OleDbDataReader rdr1= cmd1.ExecuteReader(); 
      while(rdr1.Read()) 
      { 
       txtName.Text = rdr1[0].ToString(); 
      } 
      OleDbDataReader rdr2 = cmd2.ExecuteReader(); 
      while (rdr2.Read()) 
      { 
       txtQueue.Text= rdr2[0].ToString(); 
      } 
      txtName.Enabled = false; 
      txtQueue.Enabled = false; 

      OleDbDataAdapter da = new OleDbDataAdapter(); 
      DataSet ds = new DataSet(); 
      da.SelectCommand = cmd3; 
      da.Fill(ds); 
      cmbIssue.DataSource = ds.Tables[0]; 
      cmbIssue.ValueMember = "Issues"; 
      cmbIssue.DisplayMember = "Issues"; 
      cmbIssue.Enabled = true; 

     } 

Alles, was ich vom Internet habe, ist ein Problem mit SQL-Anweisung. Bitte helfen Sie mir, dieses Problem zu lösen.

+0

Versuchen Sie bewegen 'cont1.Open();' Recht vor 'OleDbCommand' verwenden. –

+0

Können Sie versuchen, wie folgt: '" Wählen Sie eindeutigen Benutzernamen von Benutzern mit UID =? "' – Berkay

Antwort

0

Ich habe versucht, Ihren Code zu testen und bekam den gleichen Fehler, aber dann meine Datenbank auf Ihre Abfrage und es hat gut funktioniert.

Nach dem Löschen einer Spalte aus der zu testenden Tabelle wurde der Fehler erneut angezeigt. Ich denke, in diesem Fall ist es nur eine irreführende Fehlermeldung, und in Ihrer Datenbank fehlt tatsächlich eine Spalte, auf die Sie in Ihrer Abfrage verweisen (im Gegensatz zu einem Problem mit Ihrem Parameter).

z.B. Löschen der QueueName-Spalte von Benutzern brach cmd2 mit der Nachricht, die Sie angegeben haben.

Sehen Sie sich Ihre Datenbank an und stellen Sie sicher, dass die Spalten Ihrer Suchanfrage entsprechen. Ihre Tabelle sollte die Spalten UID, UserName, QueueName haben und Ihre Issues Tabelle sollte eine Issues Spalte haben.

Aktualisierung: Hinzufügen von Bildern der Daten, die ich verwendet, um Ihren Code erfolgreich auszuführen. Bitte sehen Sie nach, ob etwas mit Ihren Daten nicht übereinstimmt. Überprüfen Sie insbesondere die Datentypen.

Benutzer Schema:

Users schema

Benutzerdaten:

Users data

Schema Probleme:

Issues schema

Daten Probleme:

Issues data

+0

Datenbank ist korrekt. 'Benutzer 'Tabelle hat Spalten' UID', 'UserName',' QueueName' und 'Issues' Tabelle hat Spalte' Issues'. – Deb

+0

Ich habe meine Antwort aktualisiert. – Tone

0

Dies könnte helfen, aber nicht sicher.

Der OLE DB .NET-Provider unterstützt keine benannten Parameter zum Übergeben von Parametern an eine SQL-Anweisung oder eine gespeicherte Prozedur, die von einem OleDbCommand aufgerufen wird, wenn CommandType auf Text festgelegt ist. In diesem Fall muss der Fragezeichen (?) Platzhalter verwendet werden. Zum Beispiel:

SELECT * FROM Customers WHERE CustomerID = ? 

daher bei dem die Reihenfolge OleDbParameter Objekte werden das OleDbParameterCollection hinzugefügt muss direkt an die Position des Fragezeichen Platzhalter für den Parameter in dem Befehlstext entspricht.

Quelle: https://msdn.microsoft.com/en-us/library/system.data.oledb.oledbcommand.parameters(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1

+1

Es war mein schlechtes.Die Adresse der Datenbank zeigte auf die alte Datenbank. Also wurde meine geänderte Datenbank nicht abgerufen. Jetzt funktioniert alles gut. Vielen Dank für Ihre Hilfe. – Deb

Verwandte Themen