DataAdapter.FillSchema
MS SQL からテーブルのスキーマを取得するために使用しています。残念ながら、これは列のデフォルト値を返しません。何百ものテーブルを調べる必要があるため、スキーマの一部としてこの値を迅速かつ効率的に取得する方法はありますか?
ありがとう!
DataAdapter.FillSchema
MS SQL からテーブルのスキーマを取得するために使用しています。残念ながら、これは列のデフォルト値を返しません。何百ものテーブルを調べる必要があるため、スキーマの一部としてこの値を迅速かつ効率的に取得する方法はありますか?
ありがとう!
デフォルト値は、行挿入時にのみ決定されます。
別の方法として、 Information_schemaを利用できます
SELECT TABLE_NAME, COLUMN_NAME, COLUMN_DEFAULT
FROM AdventureWorks2012.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Person';
次のクエリを試してください。
SELECT object_definition(default_object_id) AS definition
FROM sys.columns
WHERE name ='ColumnName'
AND object_id = object_id('TableName')
テーブルスキーマを取得するには、このようなことを試してください。
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の引用を閉じる
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'