Member 12850701 Ответов: 1

Я не могу добавить данные в свой SQL


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace StudensDetails
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'database1DataSet1.Table' table. You can move, or remove it, as needed.
            this.tableTableAdapter1.Fill(this.database1DataSet1.Table);
            // TODO: This line of code loads data into the 'database1DataSet.Table' table. You can move, or remove it, as needed.
            this.tableTableAdapter.Fill(this.database1DataSet.Table);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            SqlConnection cn = new SqlConnection(global::StudensDetails.Properties.Settings.Default.Database1ConnectionString);
            try
            {
                string sql = "INSERT INTO [Table] (Student_ID,StudentName) values(" + textBox1.Text + ",N'" + textBox2.Text + "')";
                SqlCommand exeSql = new SqlCommand(sql, cn);
                cn.Open();
                exeSql.ExecuteNonQuery();

                MessageBox.Show("Add New Record Done.", "Messeg", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message , "Error" , MessageBoxButtons.OK , MessageBoxIcon.Error);
            }
            finally
            {
                cn.Close();
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            this.tableTableAdapter.Fill(this.database1DataSet.Table);
        }
    }
}


Что я уже пробовал:

Я стараюсь много времени я не могу добавить

StM0n

- Простите, что спрашиваю, но что вы пробовали?
* Есть ли сообщения об ошибках?
* Есть ли в вашей базе данных таблица под названием [Table]?
* Есть ли у них правильные столбцы, которые вы указали?
* Знаете ли вы о том, что ваш код открыт для SQL-инъекций?

Помогите нам помочь вам :)

Suvendu Shekhar Giri

Вы пробовали отлаживать?

Я подозреваю, что ваше имя таблицы должно быть чем-то вроде "Студенты" или так, и вы просто забыли заменить это в ВСТАВЛЯТЬ запрос.

В этом случае ваш запрос должен выглядеть следующим образом-

INSERT INTO [Students] (Student_ID,StudentName) values ... 

1 Ответов

Рейтинг:
0

OriginalGriff

Для начала, не делай этого так! Никогда не объединяйте строки для построения SQL-команды. Это оставляет вас широко открытыми для случайной или преднамеренной атаки SQL-инъекции, которая может уничтожить всю вашу базу данных. Вместо этого используйте параметризованные запросы.

using (SqlConnection con = new SqlConnection(strConnect))
    {
    con.Open();
    using (SqlCommand cmd = new SqlCommand("INSERT INTO [Table] (StudentId, StudentName) VALUES (@ID, @NM)", con))
        {
        cmd.Parameters.AddWithValue("@ID", textBox1.Text);
        cmd.Parameters.AddWithValue("@NM", textBox2.Text);
        cmd.ExecuteNonQuery();
        }
    }

Как только вы это сделаете, проверьте строку подключения. Попробуйте настроить соединение в VS с помощью панели обозревателя серверов:
1) Откройте Проводник Сервера.
2) щелкните правой кнопкой мыши "подключения к данным" и выберите " Добавить соединение"
3) в следующем диалоговом окне выберите источник данных и базу данных, укажите информацию о безопасности и нажмите кнопку "проверить соединение".
4) когда соединение заработает, нажмите кнопку " ОК"
5) выделите свою базу данных на панели обозревателя серверов и посмотрите на панель свойств. Будет показан рабочий пример строки подключения, которую вы можете скопировать и вставить в свое приложение или конфигурационный файл.
Затем проверьте свои имена и столбцы: "таблица" - маловероятное имя для таблицы, и два столбца, на которые вы ссылаетесь, используют разные соглашения об именовании, поэтому вполне вероятно, что один из них также неверен.
Проверьте типы данных: они текстовые? То есть в SQL Server они объявлены как VARCHAR или NVARCHAR? Насколько они велики? Являются ли они INT или вместо этого плавают?

И посмотрите на исключение: используйте отладчик, чтобы проверить, что он говорит, что происходит - сообщение об ошибке SQL может быть бесполезным, но они дают подсказки.


Member 12850701

Я использую код, который вы мне дали , но результат все тот же, я нажимаю кнопку Добавить, но база данных не обновляется

OriginalGriff

И что же? Что вы нашли для всех остальных вещей, которые я предложил?

Member 12850701

нет ответа при нажатии на тестовое соединение