Вставьте данные в SQL, используя C# - PullRequest
1 голос
/ 28 апреля 2020

Я продолжаю получать проблему

"Необработанное исключение типа 'System.Data.SqlClient.SqlException' произошло в System.Data.dll" "на SDA.SelectCommand.ExecuteNonQuery () ; ".

В чем здесь проблема?

SqlConnection con = new SqlConnection(@"Data Source=LAPTOP-LD5OK96E\SQLEXPRESS;Initial Catalog=TRANSACTION_RATE TABLE; Integrated Security=True");

    private void label1_Click(object sender, EventArgs e)
    {

    }

    private void button1_Click(object sender, EventArgs e)
    {
        con.Open();
        String query = "INSERT INTO TRANSACTION_RATE TABLE (Trans_id,Transaction_type,Transact_rate,Transact_description) VALUES('" + textBox1.Text + "','" + textBox2.Text + "''" + textBox3.Text + "''" + textBox4.Text + "')";
        SqlDataAdapter SDA = new SqlDataAdapter(query, con);
        SDA.SelectCommand.ExecuteNonQuery();
        con.Close();
        MessageBox.Show("Success!");

1 Ответ

3 голосов
/ 28 апреля 2020

У вас есть одно ключевое слово TABLE после названия вашей таблицы, вам нужно удалить его. в качестве второго примечания, вы должны знать, что этот тип конкатенации строк избегается, и он открыт для атаки SQL Injection :

String query = "INSERT INTO TRANSACTION_RATE (Trans_id,Transaction_type,Transact_rate,Transact_description) VALUES (@Trans_id, @Transaction_type,@Transact_rate, @Transact_description)";


SDA.SelectCommand.Parameters.Add("@Trans_id", SqlDbType.NVarChar, 50).Value = textBox1.Text;
SDA.SelectCommand.Parameters.Add("@Transaction_type", SqlDbType.NVarChar, 50).Value = textBox2.Text;
SDA.SelectCommand.Parameters.Add("@Transact_rate", SqlDbType.NVarChar, 50).Value = textBox3.Text;
SDA.SelectCommand.Parameters.Add("@Transact_description", SqlDbType.NVarChar, 50).Value = textBox4.Text;

В случае, если ваша таблица была названа на самом деле TRANSACTION_RATE TABLE вы должны экранировать имя так:

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