0

我想提取我的表名并将其保存到变量中,这是我的 cod,它返回 3 个答案:学生、老师和分数。我如何更改它以将这些树表名称保存为 3 个变量。谢谢你。

try
{
  SqlDataReader myreader = null;
  SqlCommand mycommand = new SqlCommand("select * FROM information_schema.tables WHERE table_type = 'BASE TABLE'", myconnect);
  myreader = mycommand.ExecuteReader();
  while (myreader.Read())
  {
    Console.WriteLine(myreader[2].ToString());
  }
}
4

4 回答 4

1

一个简单的内置方法是使用Connection.GetSchema

using (var con = new System.Data.SqlClient.SqlConnection(conStr))
{
    con.Open();
    DataTable schemaTable = con.GetSchema("Tables");
    IList<string> allTableNames = schemaTable.AsEnumerable()
        .Where(r => r.Field<string>("TABLE_TYPE") == "BASE TABLE")
        .Select(r => r.Field<string>("TABLE_NAME"))
        .ToList();
}

现在你有一个List<string>包含所有表名的表,你可以通过索引器或循环访问,或者创建一个逗号分隔的列表string.Join

string tNames = string.Join(",", allTableNames);
Console.Write("all tables in the given database: " + tNames);
于 2012-12-06T10:50:42.827 回答
0

你可以使用这个:

string tableName ="" ; // Variable to stroe the table names
string connectionString = ""; //Your connectionstring
// get records from the table
string commandString =""; //Your query
// create the data set command object
// and the DataSet
SqlDataAdapter DataAdapter =new SqlDataAdapter(commandString, connectionString);
DataSet DataSet = new DataSet( );

// fill the DataSet object
DataAdapter.Fill(DataSet, "Customers");
// Get the one table from the DataSet
DataTable dataTable = DataSet.Tables[0];
// for each row in the table, display the info
foreach (DataRow dataRow in dataTable.Rows)
 {

  tableName = dataRow[0].tostring();
  //...
  }
于 2012-12-06T10:42:45.123 回答
0

如果您想为将来的用户或不同的会话保存结果,那么您可以使用以下任何方法

第一个使用“插入”查询将结果一一保存在您专门为保存数据而创建的不同表中,您可以将插入命令/语句直接放入 for 循环

第二种方法使用xml存储值非常简单且内存友好

于 2012-12-06T10:44:39.617 回答
0

我修改了@Doctor 代码以使用 ArrayList 将表名的数量存储在单个变量中。

ArrayList alTableName  = new ArrayList(); // Variable to stroe the table names
string connectionString = ""; //Your connectionstring
// get records from the table
string commandString =""; //Your query
// create the data set command object
// and the DataSet

SqlDataAdapter DataAdapter =new SqlDataAdapter(commandString, connectionString);
DataSet DataSet = new DataSet( );

// fill the DataSet object
DataAdapter.Fill(DataSet, "Customers");

// Get the one table from the DataSet
DataTable dataTable = DataSet.Tables[0];

// for each row in the table, display the info
foreach (DataRow dataRow in dataTable.Rows)
{

    alTableName.Add(dataRow[0].tostring());
    //...
}
于 2012-12-06T11:00:00.680 回答