错误:查询值的数目和目的地字段的数目不相同-我做错了什么
本文关键字:什么 错了 目的地 查询 字段 错误 | 更新日期: 2023-09-27 18:29:16
我一直在寻找这个错误的解决方案,但没有什么能解决我的问题。在下面的SQL代码中,我有和值一样多的项。我真的不知道我做错了什么?
我的访问数据库有以下列(除了和ID之外,每个都是"短文本")
- ID
- 电子邮件
- 肯沃特
- vorname
- nachname
- telefonnummer
- strasse
- 请
- ort
- aktivierungscode
EDIT:我取了一个有日期的列,因为我不知道如何将其实现到sql代码中。。。尽管如此,我还是犯了同样的错误。我还按照别人的建议添加了参数
代码:
public class webUser
{
private string _vorname;
private string _nachname;
private string _eMail;
private string _kennwort;
private string _strasse;
private string _plz;
private string _ort;
private string _telefonnummer;
private string _aktivierungscode;
public webUser()
{
//
// TODO: Add constructor logic here
//
}
public string eMail
{
get { return _eMail; }
set { _eMail= value; }
}
public string kennwort
{
get {return kennwort; }
set { _kennwort = value; }
}
public string vorname
{
get { return _vorname; }
set { _vorname = value; }
}
public string nachname
{
get { return _nachname; }
set { _nachname = value; }
}
public string strasse
{
get { return _strasse; }
set { _strasse = value; }
}
public string plz
{
get { return _plz; }
set { _plz = value; }
}
public string ort
{
get { return _ort; }
set { _ort = value; }
}
public string telefonnummer
{
get { return _telefonnummer; }
set { _telefonnummer = value; }
}
public string aktivierungscode
{
get { return _aktivierungscode; }
set { _aktivierungscode = value; }
}
public bool checkUser(string eMail)
{
string sql = "SELECT eMail, kennwort FROM Benutzerdatenbank WHERE eMail ='" + eMail + "'";
string conStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + System.Web.HttpContext.Current.Server.MapPath("~/App_Data/Benutzerdatenbank.accdb");
OleDbConnection con = new OleDbConnection(conStr);
con.Open();
OleDbDataAdapter da = new OleDbDataAdapter(sql, con);
DataSet ds = new DataSet();
da.Fill(ds);
con.Close();
if (ds.Tables[0].Rows.Count == 1)
return true;
else
return false;
}
public bool addUser(string eMail, string kennwort)
{
//Hinzufügen eines neuen Benutzers in der Tabelle 'tblUser'
//Ergebniswert: WAHR=Hinzufügen hat funktioniert
// FALSCH=Hinzufügen hat nicht funktioniert (eMail Adresse existiert bereits in der DB)
//1. Prüfen, ob der Benutzer bereits in der DB existiert; wenn ja => Abbruch
if (this.checkUser(eMail) == true)
{
return false; //eMail existiert bereits
}
else
{
//Datensatz anlegen: eMail, passwort, enabled, aktivierungscode
//30-stelligen-Aktivierungscode erzeugen
string zeichen = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghjiklmnopqrstuvwxyz0123456789";
string aktivierungscode = "";
Random rnd = new Random();
for (int i = 1; i < 62; i++)
{
aktivierungscode = aktivierungscode + zeichen.Substring(rnd.Next(0, zeichen.Length - 1), 1);
}
string sql = "INSERT INTO Benutzerdatenbank (eMail, kennwort, vorname, nachname, telefonnummer, strasse, plz, ort, aktivierungscode) VALUES ('" +
eMail + "','" + kennwort + "','" + vorname + "','" + nachname + "','" + telefonnummer + "','" + "','"+ strasse + "','" + plz + "','" + ort + "','" + aktivierungscode + "');";
//Benutzer anlegen (Datensatz in DB anfügen = INSERT-Anweisung ausführen
string conStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + System.Web.HttpContext.Current.Server.MapPath("~/App_Data/Benutzerdatenbank.accdb");
OleDbConnection con = new OleDbConnection(conStr); //neues Verbindungsobjekt
OleDbCommand cmd = new OleDbCommand(sql, con);
con.Open();
cmd.ExecuteNonQuery(); //Ausführen einer Datenmanipulationsanweisung (INSERT, UPDATE; DELETE)
con.Close();
//Versenden des Bestätigungslinks (erst später)
return true;
}
}
public void ReadUser(string eMail, string kennwort)
{
string sql = "SELECT * FROM Benutzerdatenbank WHERE eMail='" + eMail + "' AND kennwort ='" + kennwort + "'";
string conStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + System.Web.HttpContext.Current.Server.MapPath("~/App_Data/Benutzerdatenbank.accdb");
OleDbConnection con = new OleDbConnection(conStr);
con.Open();
OleDbDataAdapter da = new OleDbDataAdapter(sql, con);
DataSet ds = new DataSet();
da.Fill(ds);
con.Close();
if (ds.Tables[0].Rows.Count == 1)
{
this.eMail = (string)ds.Tables[0].Rows[0]["eMail"];
this.vorname = (string)ds.Tables[0].Rows[0]["vorname"];
this.nachname = (string)ds.Tables[0].Rows[0]["nachname"];
this.strasse = (string)ds.Tables[0].Rows[0]["strasse"];
this.plz = (string)ds.Tables[0].Rows[0]["plz"];
this.ort = (string)ds.Tables[0].Rows[0]["ort"];
this.telefonnummer = (string)ds.Tables[0].Rows[0]["telefonnummer"];
}
else
{
this.eMail = "";
this.vorname = "";
this.nachname = "";
}
}
}
INSERT
子句中有10列,VALUES
子句中有11个值。
我认为这是kennwort+"',0,'"+vorname中的'0'问题所在。