我无法通过文本框在 ms access 数据库中插入数据[关闭]
Posted
技术标签:
【中文标题】我无法通过文本框在 ms access 数据库中插入数据[关闭]【英文标题】:i cant insert data in ms access database through textbox [closed] 【发布时间】:2013-02-27 06:50:07 【问题描述】:我有一个数据库,我使用 MS ACCESS 2007。我想通过文本框将数据插入数据库。我在下面有此代码,但出现错误。
OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\Sisc-stronghold\mis!\wilbert.beltran\DataBase\DataStructure.accdb");
private void button1_Click(object sender, EventArgs e)
try
OleDbCommand cmd = new OleDbCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "INSERT INTO Accountstbl (Username, Password)" + "VALUES ('" + textBox1.Text + "','" + textBox2.Text + "')";
cmd.Parameters.AddWithValue("@Username", textBox1.Text);
cmd.Parameters.AddWithValue("@Password", textBox2.Text);
cmd.Connection = con;
con.Open();
cmd.ExecuteNonQuery();
catch (Exception ex)
textBox1.Text = ex.ToString();
这里是错误
System.Data.OleDb.OleDbException:INSERT INTO 语句中的语法错误。 在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult 小时) 在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams,对象和 executeResult) 在 System.Data.OleDb.OleDbCommand.ExecuteCommandText(对象和执行结果) 在 System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior 行为,对象和 executeResult) 在 System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior 行为,字符串方法) 在 System.Data.OleDb.OleDbCommand.ExecuteNonQuery() 在 C:\Documents and Settings\12-014s\My Documents\applications\Database\WindowsFormsApplication1\Form3.cs:line 34 中的 VirginiTEAcorp.Form3.button1_Click(Object sender, EventArgs e) 处
【问题讨论】:
“但我遇到了错误。” - 什么错误? 您已经创建了参数,但没有使用它们! .....为什么? @MitchWheat - 感谢您的提醒。 【参考方案1】:你声明了参数但没有使用,如果你使用下面的语句则不需要使用参数
cmd.CommandText = "INSERT INTO Accountstbl (Username, Password)" + "VALUES ('" + textBox1.Text + "','" + textBox2.Text + "')";
但是如果你想使用参数那么你需要改变命令文本如下...
cmd.CommandText = "INSERT INTO Accountstbl (Username, Password) VALUES (@UserName,@Password)";
【讨论】:
SQL注入有人吗? @Amol Kolekar - 非常感谢。它有效:) @bert:不客气【参考方案2】:也许你可以试试这个代码
private void button1_Click(object sender, EventArgs e)
try
cmd = new OleDbCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "INSERT INTO userinfo (FirstName, LastName, Age, Address, Course)" + "VALUES (@First_Name, @Last_Name, @Age, @Address, @Course)";
cmd.Parameters.AddWithValue("@First_Name", textBox1.Text);
cmd.Parameters.AddWithValue("@Last_Name", textBox2.Text);
cmd.Parameters.AddWithValue("@Age", textBox3.Text);
cmd.Parameters.AddWithValue("@Address", textBox5.Text);
cmd.Parameters.AddWithValue("@Course", textBox5.Text);
cmd.Connection = conn;
conn.Open();
clear();
cmd.ExecuteNonQuery();
MessageBox.Show("Data Added!");
conn.Close();
dataholder();
catch (Exception ex)
MessageBox.Show(ex.ToString());
如果你要声明参数。您可能必须以某种方式使用它们。希望对你有帮助:)
【讨论】:
:) 非常感谢。它有效。以上是关于我无法通过文本框在 ms access 数据库中插入数据[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
TextFormat="Rich Text" 的文本框在 2013 年不起作用
MS Access 报告:如何根据显示的文本在文本框中添加换行符