Вставьте значения из нескольких текстовых полей в один столбец, но создайте новую строку для каждого значения текстового поля - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть программа C# для вставки данных в базу данных SQL Server. В базе данных есть столбец, и, конечно же, с помощью вставки данных можно создать несколько строк. В моей программе Winforms у меня есть несколько текстовых полей, которые получают данные из другой таблицы, каждое текстовое поле получает разные данные. Я хочу вставить данные из каждого текстового поля в один и тот же столбец. Однако мне нужно, чтобы каждое значение текстового поля было go в отдельной строке. Вот так

ColumnName
-------------------
Value from textbox1
Value from textbox2

Это мой код. Проблема в том, что он вставляет значения из 2 текстовых полей в тот же столбец, как я хочу, но в той же строке.

Это код:

string str = ConfigurationManager.ConnectionStrings["Connection"].ConnectionString;
SqlConnection con = new SqlConnection(str);
con.Open();

_ = TextBox1Text;
_ = TextBox1Text ;

String commandText = "INSERT INTO SQLTableName (ColumnName) VALUES (@ColumnName)";

if (con.State == ConnectionState.Open)
{
    SqlCommand cmmd = new SqlCommand(commandText, con);

    cmmd.Parameters.Add("@ColumnName", SqlDbType.Text);

    cmmd.Parameters["@ColumnName"].Value = TextBox1.Text + ' ' + TextBox2.Text;
}

Может кто-нибудь помочь мне выяснить, как это сделать?

РЕДАКТИРОВАТЬ:

Я изменил код, как предложено в комментариях и ответе. Однако, когда он вводит данные в базу данных, он сохраняет значение из textbox1 в одну строку, но значение из текстового поля 2 сохраняется дважды по одному в каждой строке.

String commandText = "INSERT INTO MyTable (ColumnName)Values(@ColumnName)";
if (con.State == ConnectionState.Open)
{
    SqlCommand cmmd = new SqlCommand(commandText, con)
    cmmd.Parameters.Add("@ColumnName", SqlDbType.Nvarchar, -1);
    cmmd.Parameters["@ColumnName"].Value = TextBox1.Text;
    cmmd.ExecuteNonQuery();
    cmmd.Parameters["@ColumnName"].Value = TextBox2.Text;
    cmmd.ExecuteNonQuery();
} 

1 Ответ

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

Вам необходимо заменить строку

cmmd.Parameters["@ColumnName"].Value = TextBox1.Text + ' ' + TextBox2.Text;

следующим:

cmmd.Parameters["@ColumnName"].Value = TextBox1.Text;
cmmd.ExecuteNonQuery();
cmmd.Parameters["@ColumnName"].Value =  TextBox2.Text;
cmmd.ExecuteNonQuery();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...