1

データベース テーブルの列を取得し、それぞれを文字列または文字列配列に格納する方法を考えていました。次のコードがありますが、機能しないと思います。asp.net で指定されている既定のテーブルを使用しています。このテーブルに問題なく書き込むことができましたが、そこから選択して取得した値を保存する方法がわかりません。これが私のコードビハインドにあるものです

    string connection = ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString;
    SqlConnection conn = null;
    conn = new SqlConnection(connection);
    conn.Open();
    using (SqlCommand cmd = new SqlCommand())
    {

        string query = String.Format("SELECT column_name FROM USER_TAB_COLUMN WHERE table_name = 'TestTable'");
        cmd.Connection = conn;
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = query;
        columns.Text = cmd.ExecuteNonQuery().ToString();
        conn.Close();
    }

エラーはInvalid object name 'USER_TAB_COLUMN'です。私はこれを削除して使用しようとしましたが"SELECT column_name FROM TestTable"、それについて不平を言いcolumn_nameます。ちなみにColumnsはテキストボックスです。

4

7 に答える 7

2

非常に単純に、U は以下のコードのように実行できます。

DataTable table = new DataTable();
foreach (DataColumn column in table .Columns)
{
    Console.Write("Item: ");
    Console.Write(column.ColumnName);
    Console.Write(" ");
    Console.WriteLine(row[column]);
}
于 2016-08-16T09:14:10.837 に答える
1

定義していない限りUSER_TAB_COLUMN、MySQL のテーブルまたはビューではありません。

列名を取得するには、ビューをクエリしinformation_schema.columnsます。

例えば

foo.barテーブル内の列名のリストを取得するには:

SELECT column_name 
  FROM information_schema.columns
 WHERE table_schema = 'foo'
   AND table_name = 'bar'

(同じ table_name が複数のデータベースに表示される可能性があるため、単一のテーブルから列名を確実に取得するには、テーブルが存在するデータベースを指定する必要があります。これにより、クエリの効率も向上します。 MySQL がチェックする必要があるデータベースを制限するためです。)

「現在の」データベース内のテーブルの列を確認するには、次のDATABASE()関数を利用できます。

SELECT column_name 
  FROM information_schema.columns
 WHERE table_schema = DATABASE()
   AND table_name = 'bar'

SELECT * FROM bar(これは、現在のデータベース接続から参照されるテーブルになります。)

于 2013-06-27T21:09:50.270 に答える