Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 错误:查询值和目标字段的数量不相同-我做错了什么?_C#_Sql_Asp.net - Fatal编程技术网

C# 错误:查询值和目标字段的数量不相同-我做错了什么?

C# 错误:查询值和目标字段的数量不相同-我做错了什么?,c#,sql,asp.net,C#,Sql,Asp.net,我一直在寻找解决这个错误的方法,但什么也解决不了我的问题。在下面的SQL代码中,我有和值一样多的项。我真的不知道我做错了什么 我的access数据库有以下列,除和ID外,所有内容都是短文本 身份证件 电子邮件 甘草 沃名称 纳希纳姆 电传打字机 斯特拉斯 请 奥特 aktivierungscode 编辑:我选择了有日期的专栏,因为我不知道如何在sql代码中实现它。。。不过,我还是犯了同样的错误。我还按照某人的建议添加了参数 代码: }INSERT子句中有10列,values子句中有11个值 我认

我一直在寻找解决这个错误的方法,但什么也解决不了我的问题。在下面的SQL代码中,我有和值一样多的项。我真的不知道我做错了什么

我的access数据库有以下列,除和ID外,所有内容都是短文本

身份证件 电子邮件 甘草 沃名称 纳希纳姆 电传打字机 斯特拉斯 请 奥特 aktivierungscode 编辑:我选择了有日期的专栏,因为我不知道如何在sql代码中实现它。。。不过,我还是犯了同样的错误。我还按照某人的建议添加了参数

代码:

}INSERT子句中有10列,values子句中有11个值


我认为这是kennwort+中的“0”,0,+vorname是问题所在。

请使用参数化查询。您能解释一下您的确切意思吗?我们在学校就是这么做的。。。我不太明白链接tbh:/上的解释。通过在您喜爱的搜索引擎上搜索bobby表或SQL注入,您应该能够找到有关使用字符串连接构建SQL查询问题的详细解释。您必须使用参数,否则Stackoverflow.com填充将受到影响aneurysms@Alexei列文科夫,好吧,我去看看。谢谢!非常感谢,但现在我发现条件表达式中的数据类型不匹配。您需要根据数据值验证所有列数据类型。如果问题未解决,请打开另一个问题,并提供详细信息。如果对你有用,请接受我的回答。嗯,对不起,我只是在学校,还没有很多知识。根据数据值验证所有列数据类型到底意味着什么?很抱歉,如果我被打扰了,例如,如果一个字段类型是number,并且如果您试图插入字符串值,那么它是数据类型不匹配。您可以转到表定义,获取所有10个字段的数据类型,然后与要传递的值进行比较,看看是否存在这种不匹配。哦,好的,我现在就知道了。我想问题在于我将日期声明为私有字符串geburtsdatum而不是私有日期时间geburtsdatum。。。是这样吗?如果是这样,我如何将其实现到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 = "";
    }
}