Данные не вставляются в базу данных mysql в веб-приложении asp. net c# - PullRequest
0 голосов
/ 30 марта 2020

Я пытаюсь вставить простые данные в базу данных mysql одним нажатием кнопки, но всякий раз, когда я пытаюсь это сделать, нажатие кнопки обрабатывается, но данные не вставляются, а также отсутствуют исключения или ошибки. У меня есть база данных, хранящаяся на моем локальном хосте с точно таким же именем таблицы и именем столбца, но это создает проблему. Не знаю, проблема кажется.

файл testing.aspx

 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="testing.aspx.cs" Inherits="CricketAnalysis2.testing" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
        </div>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <p>
            <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
        </p>
    </form>
</body>
</html>

файл testing.aspx.cs

using System;
using MySql.Data.MySqlClient;
using System.Data;

namespace CricketAnalysis2
{
    public partial class testing : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            MySqlConnection con = new MySqlConnection(@"Data Source=localhost;port=3306;Initial Catalog=cricdb;User Id=root;password=''");
            con.Open();
            MySqlCommand cmd1 = con.CreateCommand();
            cmd1.CommandType = CommandType.Text;
            cmd1.CommandText = "INSERT INTO drug VALUES ('"+TextBox1.Text+"')";
            con.Close();
        }
    }
}

1 Ответ

2 голосов
/ 30 марта 2020

Проблема в том, что вы не выполняете команду. Вам нужно вызвать метод ExecuteNonQuery() так:

cmd1.ExecuteNonQuery();

Кроме того, ваш запрос в настоящее время открыт для sql инъекции, чтобы избежать необходимости использовать параметризованные запросы, а также использовать блок using для убедитесь, что объект расположен правильно.

var connectionString = "Data Source=localhost;port=3306;Initial Catalog=cricdb;User Id=root;password=''\"";
var query = "INSERT INTO DRUG VALUES(@ParameterName)";
using (var con = new MySqlConnection(connectionString))
{
  using (var cmd = new MySqlCommand(query, con))
  {
     cmd.Parameters.Add("@ParameterName", MySqlDbType.VarChar).Value = TextBox1.Text;

     con.Open();
     cmd.ExecuteNonQuery();
   }
}
...