通过ADO.NET取得的DataTable,Dataset中DataColumn的MaxLength属性有时取不到想要的值,比如有个varchar类型的字段,长度应该是100,但是返回的确是-1。
当然可以通过其他方式取得表的Schame信息,但这样多了一步。
通过查资料发现这是微软的一个BUG。解决办法很简单,设置一下SqlDataAdapter的MissingSchemaAction属性:
string strQuery = "SELECT * FROM tbl_MyTable"; objConn = new SqlConnection(strConnString); objConn.Open(); objCmd = new SqlCommand(strQuery, objConn); objDA = new SqlDataAdapter(objCmd); objDA.MissingSchemaAction = MissingSchemaAction.AddWithKey; objDS = new DataSet(); int iCount = objDA.Fill(objDS);