我用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();
}
答案 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();
之前打开连接,就像更新表单一样。