尝试使用 C# 将数据插入 MS Access 数据库,但插入命令不起作用
Posted
技术标签:
【中文标题】尝试使用 C# 将数据插入 MS Access 数据库,但插入命令不起作用【英文标题】:Trying to insert data into MS Access database using C# but insert command is not working 【发布时间】:2020-04-30 03:10:52 【问题描述】:我的插入命令出错。我正在尝试将来自 html 页面上的文本框的用户输入数据添加到我已经创建并连接的访问数据库中。我的插入命令的语法有问题。
这是我的 HTML 页面
<form name="insert" method="post" action="insertinventory.aspx">
<center>
<h1> FLOATEEZ Add Inventory </h1>
Item Number: <input type="text" name="txtnum"> <br>
Item Name: <input type="text" name="txtname"> <br>
Item Description: <input type="text" name="txtdescription"> <br>
Item Price: <input type="text" name="txtprice"> <br>
Item Quantity on Hand: <input type="text" name="txtqoh"> <br>
Item Picture: (text only) <input type="text" name="txtpicture"> <br><br>
<input type="submit" value="Submit">     <input type="reset">
</center>
</form>
这是我的 aspx 页面减去我的数据库信息
<%@ Page Language="C#" Debug="true" %>
<%@ Import Namespace="System.Data.Odbc" %>
<%
Response.Write("<html><head><title>Insert into Inventory </title></head></body>");
Response.Write("<body bgcolor=lightblue>");
OdbcConnection myconn;
OdbcCommand mycmd;
OdbcDataReader myreader;
myconn= new OdbcConnection( I removed this part );
mycmd = new OdbcCommand("insert into inventory
(Itemnum,Itemname,Itemdescription,Itemprice,Itemqoh,Itempicture) values
('"+ txtnum.Text +"','"+ txtname.Text +"','"+ txtdescription.Text
+"','"+ txtprice.Text +"','"+ txtqoh.Text +"','"+ txtpicture.Text
+"')",myconn);
myreader.Close();
myconn.Close();
%>
<br>
<center> <a href ="Company.html" > Back to our Homepage </a> </center>
【问题讨论】:
【参考方案1】:一定要使用参数!您从用户那里获得的每个值都使用一个问号。
以下示例取自https://www.mikesdotnetting.com/article/26/parameter-queries-in-asp-net-with-ms-access。 (一个很好的资源。)
string ConnString = Utils.GetConnString();
string SqlString = "Insert Into Contacts (FirstName, LastName) Values (?,?)";
using (OleDbConnection conn = new OleDbConnection(ConnString))
using (OleDbCommand cmd = new OleDbCommand(SqlString, conn))
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("FirstName", txtFirstName.Text);
cmd.Parameters.AddWithValue("LastName", txtLastName.Text);
conn.Open();
cmd.ExecuteNonQuery();
【讨论】:
【参考方案2】:需要将连接绑定到命令,并调用命令执行语句,例如:
...
mycmd.Connection = myconn;
mycmd.ExecuteNonQuery();
myconn.Close();
无需阅读器。
更好的操作数据库的方法是:
using(OdbcConnection myconn = new OdbcConnection(connectionString))
using(OdbcCommand mycmd = OdbcCommand(your code here))
mycmd.Connection = myconn;
mycmd.ExecuteNonQuery();
对于using
关键字,它会自动处理连接和命令实例。
【讨论】:
以上是关于尝试使用 C# 将数据插入 MS Access 数据库,但插入命令不起作用的主要内容,如果未能解决你的问题,请参考以下文章
插入数十万行时,MySQL 与 MS Access 相比非常慢