Добавление данных в базу данных с использованием C# в asp.net

Мне нужно добавить вещи в мою базу данных, используя txtbox и кнопку (btnAdd), это мой код, но CommandType.Text; часть имеет ошибку, и я не могу это исправить.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;

namespace _21542890_F
{
     public partial class Add_Product : System.Web.UI.Page
    {
        SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Dylan\Documents\Company.mdf;Integrated Security=True;Connect Timeout=30");
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void lbtnHome_Click(object sender, EventArgs e)
        {
            Response.Redirect("Home Page.aspx");
        }

        protected void btnAdd_Click(object sender, EventArgs e)
        {
            con.Open();
            SqlCommand cmd = con.CreateCommand();
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "insert into Company values('"+txtProductName.Text+"','"+txtProductPrice.Text+"')";
            cmd.ExecuteNonQuery();
            con.Close();
        }
    }
}

3 ответа

Это может быть проблема с вашим синтаксисом SQL, вы уверены, что у вас есть только эти два столбца внутри таблицы Company? Если нет, вам нужно указать имена столбцов, иначе оператор SQL не будет выполнен.

Я бы начал с string.format, чтобы посмотреть, где мы находимся...

string.format("insert into Company values('{0}','{1}')", txtProductName.Text,
txtProductPrice.Text);

Вы не должны ссылаться на текстовые поля непосредственно в своем запросе, но вместо этого должны использовать параметризованные входные данные, чтобы избежать внедрения. Он не позволяет никому отправлять код / ​​sql, который сам по себе является исполняемым.

Посмотрите на этот пример от Microsoft:

private static void UpdateDemographics(Int32 customerID,
    string demoXml, string connectionString)
{
    // Update the demographics for a store, which is stored  
    // in an xml column.  
    string commandText = "UPDATE Sales.Store SET Demographics = @demographics "
        + "WHERE CustomerID = @ID;";

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlCommand command = new SqlCommand(commandText, connection);
        command.Parameters.Add("@ID", SqlDbType.Int);
        command.Parameters["@ID"].Value = customerID;

        // Use AddWithValue to assign Demographics. 
        // SQL Server will implicitly convert strings into XML.
        command.Parameters.AddWithValue("@demographics", demoXml);

        try
        {
            connection.Open();
            Int32 rowsAffected = command.ExecuteNonQuery();
            Console.WriteLine("RowsAffected: {0}", rowsAffected);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
}

Это проблема безопасности. Насколько ваш код в настоящее время; пожалуйста, включите сообщение об ошибке / где оно ломается. Как уже говорили другие, если столбцы, в которые вы вводите данные на вашем сервере SQL, не в порядке и / или в них больше столбцов, чем вы вводите значения, вам необходимо сначала сообщить серверу, какие столбцы вы используете. вставка значений в.

Это выглядит примерно так:

"INSERT Region (RegionID, RegionDescription) VALUES (5, 'NorthWestern')";

В вашем текущем коде это будет так:

cmd.CommandText = "insert into Company (Product_Name, Product_Price)  VALUES ('"+txtProductName.Text+"','"+txtProductPrice.Text+"')";

Пройдя эти два пункта, нам действительно нужно больше информации!

Что же касается ваших данных, почему вы вставляете информацию о продукте в запись компании? Если нет конкретного случая использования того, что вы делаете, вам следует подумать о нормализации и создании таблицы продуктов для хранения этой информации.

Другие вопросы по тегам