Показать все значения таблицы данных в текстовом поле - PullRequest
0 голосов
/ 24 сентября 2019

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

Моя таблица данныхимеет два столбца col1 и col2. Я хочу показать значение этого столбца в текстовом поле. Я хочу показать текстовое поле, похожее на это col1 col2 @ID int, @addition varchar (max), @Mail_ID varchar (max)

private void Button5_Click(object sender, EventArgs e)
        {
            if (checkedListBox1.CheckedItems.Count > 0)
            {
                textBox5.Text = String.Empty;
                string strSQLConn = "Server =" + textBox1.Text + "; Initial Catalog =" + textBox2.Text + "; User ID =" + textBox3.Text + "; Password = " + textBox4.Text + ";";
                SqlConnection SQLConn = new SqlConnection(strSQLConn);
                SQLConn.Open();
                foreach (var item in checkedListBox1.CheckedItems)
                {
                    DataRowView row = item as DataRowView;
                    SqlCommand SQLcmd2 = new SqlCommand("WITH cte AS (SELECT '@' + COLUMN_NAME AS c1, CASE DATA_TYPE WHEN 'VARCHAR' THEN 'varchar(max)' WHEN 'NVARCHAR' THEN 'nvarchar(max)' WHEN 'INT' THEN 'int' WHEN 'DATETIME' THEN 'Datetime()' WHEN 'Float' THEN 'float' END AS c2, ROW_NUMBER() OVER(ORDER BY DATA_TYPE) AS rn, COUNT(*) OVER() AS cnt FROM INFORMATION_SCHEMA.COLUMNS  WHERE TABLE_NAME = '" + row["Table_Name"] + "') SELECT c1 As col1, c2 +CASE WHEN rn<cnt THEN ',' ELSE '' END AS col2 FROM cte;", SQLConn);

                    SQLCmd.CommandType = CommandType.Text;
                    SqlDataAdapter Da2 = new SqlDataAdapter(SQLcmd2);
                    DataTable dt2 = new DataTable();
                    Da2.Fill(dt2);                 
                    StringBuilder result = new StringBuilder();
                    foreach (DataRow dr in dt2.Rows)
                    {
                        foreach (DataColumn dc in dt2.Columns)
                        {
                            result.Append(dr[dc].ToString());
                        }
                    }

                    textBox5.Text = result.ToString();
                    textBox5.Text += "Create Proc SP_Insert_"+ row["Table_Name"] + Environment.NewLine +"Declare"+ " ( " + dt2.Rows[0]["col1"].ToString()
                }

1 Ответ

1 голос
/ 24 сентября 2019

Когда вы делаете это:

textBox5.Text = result.ToString();

Заменяет любое предыдущее значение из предыдущих строк.Вместо этого сделайте что-то вроде этого:

if (textBox5.Text != string.empty) textBox5.Text += environment.NewLine;
textBox5.Text += result.ToString();

Также (только что заметил) вы сбрасываете результат для каждой строки.Переместите эту строку за пределы цикла:

StringBuilder result = new StringBuilder();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...