Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在文本框中显示所有数据表值_C#_Asp.net_Windows - Fatal编程技术网

C# 在文本框中显示所有数据表值

C# 在文本框中显示所有数据表值,c#,asp.net,windows,C#,Asp.net,Windows,我想在文本框中显示我的数据表列值,但它只显示一行值。我的查询只返回两列,我想在文本框中显示两列,类似于datatable 我的数据表有两列col1和col2。我想在文本框中显示该列的值 我想显示与此类似的文本值 col1 col2 @ID int, @附加varcharmax, @邮件ID varcharmax private void Button5_Click(object sender, EventArgs e) { if (checkedListB

我想在文本框中显示我的数据表列值,但它只显示一行值。我的查询只返回两列,我想在文本框中显示两列,类似于datatable

我的数据表有两列col1和col2。我想在文本框中显示该列的值 我想显示与此类似的文本值 col1 col2 @ID int, @附加varcharmax, @邮件ID varcharmax

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()
                }
执行此操作时:

textBox5.Text = result.ToString();
它将替换上一行中的任何上一个值。 相反,可以这样做:

if (textBox5.Text != string.empty) textBox5.Text += environment.NewLine;
textBox5.Text += result.ToString();
还刚刚发现了这一点,你重置了每一行的结果。将此行移到循环外:

StringBuilder result = new StringBuilder();

我使用了你提到的同样的sa,但我还是得到了类似这样的东西@IDint、@additionalvarcharmax、@Mail\u idvarcharmax你把第二行的=改成+=了吗?您是否已通过代码检查您的查询是否实际返回多行?如果textBox5.Text!=string.Empty textBox5.Text+=Environment.NewLine;textBox5.Text+=result.ToString;我的查询只返回两行,一行是列名,另一行是数据类型