如何从数据库中获取正确的 DataColumn 属性
How to Get correct DataColumn Properties from DB
我正在使用 ADO.NET。当我想将数据保存到 SQL 中的 table 时,我需要检索此 table 中的列信息。通过信息,我的意思是列最大大小(我想从 nvarchar(10)
列中获取 10
)和 NULL
或 NOT NULL
。
我正在使用下一个代码:
var selectFromCmd = SqlCommandFactory.CreateCommand("select top 0 * from [dbo]." + destTableName, SqlConnection, SqlTransaction);
var dataAdapter = new SqlDataAdapter(selectFromCmd);
var destinationTable = new DataTable();
dataAdapter.Fill(destinationTable);
然后我得到 DataColumn
像这样:
var column = destinationTable.Columns["MyColumn"]
但是 AllowDBNull
总是 true
和 MaxLength
始终是 -1
,即使此列是 string
那么,我怎样才能在 ADO.NET 中获得有关列属性的正确信息?
对于此查询,我宁愿使用系统目录视图。像这样....
SELECT c.name ColumnName
,t.Name Datatype
,c.max_length MaxLength
,c.is_nullable
FROM sys.columns c
INNER JOIN sys.types t ON c.user_type_id = t.user_type_id
WHERE c.object_id = object_id('Customers') --<-- your table name
我正在使用 ADO.NET。当我想将数据保存到 SQL 中的 table 时,我需要检索此 table 中的列信息。通过信息,我的意思是列最大大小(我想从 nvarchar(10)
列中获取 10
)和 NULL
或 NOT NULL
。
我正在使用下一个代码:
var selectFromCmd = SqlCommandFactory.CreateCommand("select top 0 * from [dbo]." + destTableName, SqlConnection, SqlTransaction);
var dataAdapter = new SqlDataAdapter(selectFromCmd);
var destinationTable = new DataTable();
dataAdapter.Fill(destinationTable);
然后我得到 DataColumn
像这样:
var column = destinationTable.Columns["MyColumn"]
但是 AllowDBNull
总是 true
和 MaxLength
始终是 -1
,即使此列是 string
那么,我怎样才能在 ADO.NET 中获得有关列属性的正确信息?
对于此查询,我宁愿使用系统目录视图。像这样....
SELECT c.name ColumnName
,t.Name Datatype
,c.max_length MaxLength
,c.is_nullable
FROM sys.columns c
INNER JOIN sys.types t ON c.user_type_id = t.user_type_id
WHERE c.object_id = object_id('Customers') --<-- your table name