5

DataAdapter.FillSchemaMS SQL からテーブルのスキーマを取得するために使用しています。残念ながら、これは列のデフォルト値を返しません。何百ものテーブルを調べる必要があるため、スキーマの一部としてこの値を迅速かつ効率的に取得する方法はありますか?

ありがとう!

4

4 に答える 4

7

デフォルト値は、行挿入時にのみ決定されます。

別の方法として、 Information_schemaを利用できます

SELECT TABLE_NAME, COLUMN_NAME, COLUMN_DEFAULT
FROM AdventureWorks2012.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Person';
于 2012-05-01T05:33:38.307 に答える
1

次のクエリを試してください。

SELECT object_definition(default_object_id) AS definition
FROM   sys.columns
WHERE  name      ='ColumnName'
AND    object_id = object_id('TableName')
于 2012-05-04T20:38:59.660 に答える
0

テーブルスキーマを取得するには、このようなことを試してください。

public partial class Form1 : Form
{
    //create connectionString variable
    const string conString = @"Data Source=.\SQLEXPRESS; Initial Catalog=DBTest; Integrated Security=SSPI";

    SqlConnection cn = null;
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        this.getTableSchema();
    }

 //function to get the schemas from the Tables in MSSQLSERVER
    private void getTableSchema()
    {
        try
        {

            cn = new SqlConnection(conString);
            cn.Open();

            //call the getSchema Method of the SqlConnection Object passing in as a parameter the schema to retrieve
             DataTable dt = cn.GetSchema("tables");

           //Binded the retrieved data to a DataGridView to show the results.
            this.dataGridView1.DataSource = dt;


        }
        catch (Exception)
        {

            throw;
        }
    }


}

編集:conStringの引用を閉じる

于 2012-05-01T05:30:40.833 に答える
0

FillSchemaを使用してそれを行う方法はありません。詳細については、以下のリンクを確認して くださいhttp://msdn.microsoft.com/en-us/library/229sz0y5.aspx

INFORMATION_SCHEMAはあなたが見るべき場所です。INFORMATION_SCHEMAには、データベース構造の詳細を表示できる多くのシステムビューが含まれています。例えば

INFORMATION_SCHEMA.TABLES:データベース内のテーブルのリストを表示しますINFORMATION_SCHEMA.COLUMNS:データベースのすべてのテーブル内の列とその属性のリストを表示します。詳細については、以下の場所をご覧ください。

http://msdn.microsoft.com/en-us/library/ms186778.aspx

クエリを使用してデフォルト値を取得するには、次のクエリを使用できます。

SELECT *
FROM INFORMATION_SCHEMA.Columns
WHERE TABLE_NAME = 'YourTableName'
于 2012-05-06T19:10:20.850 に答える