Windows Forms注册表单运行时报错,请求排查问题(附代码)
Windows Forms注册表单插入数据运行时错误排查
开发基于Windows Forms的注册表单项目,运行代码时触发OleDb相关异常,但代码编辑器无语法报错提示。
原代码:
private void button1_Click(object sender, EventArgs e) { using (OleDbConnection connection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\RAV21001310\\OneDrive\\Database1.accdb;")) { try { connection.Open(); using (OleDbCommand command = new OleDbCommand("insert into tblUser (Username,Password,Gender,Age,FirstName,Last name) values('"+username.Text+"','"+password.Text+"','"+gender.Text+"','"+age Text+"','"+FirstName.Text+"','"+lastname.Text+"')")) { command.ExecuteNonQuery(); var login = new login(); login.Show(); this.Close(); } } catch(Exception ex) { MessageBox.Show("error " + ex); } } }
问题排查与修复:
- 字段名语法错误:Access数据库中,包含空格的字段名必须用方括号包裹,原SQL里的
Last name需改为[Last name] - 控件引用拼写错误:代码中
age Text存在空格,应为age.Text,此错误会导致运行时无法找到目标控件 - 未关联数据库连接:创建
OleDbCommand时未指定关联的数据库连接对象,需在构造方法中传入connection参数 - SQL注入风险(优化项):直接拼接用户输入到SQL语句中存在严重安全隐患,建议改用参数化查询
修正后的代码示例:
private void button1_Click(object sender, EventArgs e) { using (OleDbConnection connection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Users\\RAV21001310\\OneDrive\\Database1.accdb;")) { try { connection.Open(); // 参数化查询避免注入,同时修正字段名语法 string sql = "INSERT INTO tblUser (Username, Password, Gender, Age, FirstName, [Last name]) VALUES (?, ?, ?, ?, ?, ?)"; using (OleDbCommand command = new OleDbCommand(sql, connection)) { // 绑定参数 command.Parameters.AddWithValue("@Username", username.Text); command.Parameters.AddWithValue("@Password", password.Text); command.Parameters.AddWithValue("@Gender", gender.Text); // 转换Age为数值类型,匹配数据库字段类型 command.Parameters.AddWithValue("@Age", int.Parse(age.Text)); command.Parameters.AddWithValue("@FirstName", FirstName.Text); command.Parameters.AddWithValue("@LastName", lastname.Text); command.ExecuteNonQuery(); var login = new login(); login.Show(); this.Close(); } } catch (Exception ex) { MessageBox.Show("错误信息:" + ex.Message); } } }
内容的提问来源于stack exchange,提问作者Abdi L
相关产品推荐
相关产品推荐

