Попытка вставить данные в базу данных MS Access с помощью C#, но команда вставки не работает - PullRequest
0 голосов
/ 30 апреля 2020

Я получаю ошибку с моей командой вставки. Я пытаюсь добавить входные данные пользователей из текстовых полей на странице 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"> &nbsp &nbsp <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>

Ответы [ 2 ]

1 голос
/ 30 апреля 2020

обязательно используйте параметры! знак вопроса используется для каждого значения, которое вы получаете от пользователя.

пример ниже взят из 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();    
  }    
}
0 голосов
/ 30 апреля 2020

Вам необходимо привязать соединение к команде и вызвать оператор выполнения команды, например:

...
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 оно будет автоматически удалять экземпляр соединения и команды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...