SqlDataAdapter获取表中每列的属性,必须加上sda.FillSchema(ds, SchemaType.Source);
private DataTalbe sqlCon(string sqlStr)
{
string conStr = txtConStr.Text.Trim();
using(SqlConnetcion con = new SqlConnection(conStr))
{
con.Open();
using(SqlCommand cmd = new SqlCommand(sqlStr, con))
{
DataSet ds = new DataSet();
SqlDataAdapter sda = new SqlDataAdapter(cmd);
sda.FillSchema(ds, SchemaType.Source);
sda.Fill(ds);
DataTable dt = ds.Tables[0];
return dt;
}
}
}
如果SqlDataAdapter中不使用sda.FillSchema(ds, SchemaType.Source),则在获取每列属性的时候很多属性是获取不到的,比如:
// 为值类型的列加上?标识符,则可以赋值null
private string GetDbType(DataColumn dc)
{
if(dc.AllowDBNull && dc.DataType.IsValueType)
{
return dc.DataType + “?”;
}
else
{
return dc.DataType.ToString();
}
}