C# 在文本框中显示所有数据表值
我想在文本框中显示我的数据表列值,但它只显示一行值。我的查询只返回两列,我想在文本框中显示两列,类似于datatable 我的数据表有两列col1和col2。我想在文本框中显示该列的值 我想显示与此类似的文本值 col1 col2 @ID int, @附加varcharmax, @邮件ID varcharmaxC# 在文本框中显示所有数据表值,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
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;我的查询只返回两行,一行是列名,另一行是数据类型