C#和Access数据库不会插入/保存我的数据

时间:2018-03-17 08:56:03

标签: c# ms-access access

我用C#和MS Access编写了一个应用程序。我有我的表单登录,它的工作原理。好。我有一个插入语句,不会抛出任何错误,但我输入textbox的所有内容都没有插入到我的数据库中,当我想进行更新时,它返回与插入相同的内容声明,我的意思是没有错误,但没有插入或更新行。

string stringcon = System.Configuration.ConfigurationManager.ConnectionStrings["rent"].ConnectionString;

private void validateaddmember_button_Click(object sender, EventArgs e)
{
    addmember.Visible = false;

    MemoryStream ms = new MemoryStream();
    pictureBox4.Image.Save(ms, pictureBox4.Image.RawFormat);
    byte[] a = ms.GetBuffer();
    ms.Close();

    OleDbConnection con = new OleDbConnection(stringcon);
    OleDbCommand cmd = new OleDbCommand();
    cmd.Connection = con;

    con.Open();
    cmd.CommandText = "INSERT INTO [team]([Firstname],[Lastname],[Email],[Password],[Function],[Role],[Registerdata],[Personaldescription],[Phonenumber],[Picture]) VALUES(@f,@l,@e,@p,@fu,@r,@reg,@per,@ph,@pic) ";

    cmd.Parameters.AddWithValue("@f", firstname_textbox.Text);
    cmd.Parameters.AddWithValue("@l", lastname_textbox.Text);
    cmd.Parameters.AddWithValue("@e", email_textbox.Text);
    cmd.Parameters.AddWithValue("@ph", phone_textbox.Text);
    cmd.Parameters.AddWithValue("@fu", function_textbox.Text);
    cmd.Parameters.AddWithValue("@r", role_dropbox.selectedValue);
    cmd.Parameters.AddWithValue("@reg", DateTime.Now.ToString("dd-MM-yyyy HH: mm:ss"));
    cmd.Parameters.AddWithValue("@per", richTextBox1.Text);
    cmd.Parameters.AddWithValue("@p", repeatpassword_textbox.Text);
    cmd.Parameters.AddWithValue("@pic", a);

    cmd.ExecuteNonQuery();
    con.Close();
}

在这里,我有其他形式的更新。

string stringcon = System.Configuration.ConfigurationManager.ConnectionStrings["rent"].ConnectionString;

private void bunifuFlatButton1_Click(object sender, EventArgs e)//login method
{
    OleDbConnection con = new OleDbConnection(stringcon);
    OleDbCommand cmd2 = new OleDbCommand();

    cmd2.Parameters.Clear();
    cmd2.Connection = con;

    cmd2.CommandText ="update [team] set [Numberoflogin] = [Numberoflogin] + 1 where [Email]=@LEMAIL";

    cmd2.Parameters.AddWithValue("@LEMAIL", materialSingleLineTextField1.Text);

    con.Open();
    cmd2.ExecuteNonQuery();
    con.Close();
}

1 个答案:

答案 0 :(得分:0)

除了marc_s的重要注意事项 - 你切换了手机和密码,请确保修复它 - 你只需要在sql字符串中@。所以不是

cmd.Parameters.AddWithValue("@f", firstname_textbox.Text);

cmd.Parameters.AddWithValue("Firstname", firstname_textbox.Text);

使用字段名称(名字)。 @f只是一个标记。使用Access,您可以像这样编写sql字符串:

cmd.CommandText = "INSERT INTO [team]([Firstname],[Lastname],[Email],
    [Password],[Function],[Role],[Registerdata],[Personaldescription],
    [Phonenumber],[Picture]) VALUES(?,?,?,?,?,?,?,?,?,?)";

所以当你添加参数值时,请使用字段名称。

您也可以在cmd.ExecuteNonQuery();之前打开连接,就像更新表单一样。