我有一个来自SQL请求的数据表.虽然我真的在使用OLEDB对着一个表,但即使我从我的SQL服务器获取表,我也有同样的问题.
如果我填充数据表然后查询DataColumns – 他们都说AllowDBNull == true和allowNull == true.但是,如果我看一下SSMS中的表格,它会另有说明.
string selectStmt= "Select * from foobar; "
DataSet NewData = new DataSet();
using (SqlConnection DataConn = new SqlConnection(MyConnectionString))
{
SqlDataAdapter DataAdapter = new SqlDataAdapter(selectStmt, DataConn );
var Results = DataAdapter.Fill(NewData, tableName);
}
DataColumn Col = NewData.Tables[0].Columns[0];
// Col.AllowDBNull is always true as is Col.AllowNull
我似乎也无法弄清楚在哪里获得字符串字段的长度.
这使得在我尝试上传数据之前实现一些简单的客户端错误检查有点困难.
如果我只处理基于SQL Server的表,我可以使用Microsoft.SqlServer.Management.Sdk和Microsoft.SqlServer.Management.Smo.既然我不是,那就出局了.
解决方法:
尝试
var Results = DataAdapter.FillSchema(NewData, SchemaType.Source, tableName);
看看是否能为您提供所需的架构详细信息.