MaxLength 数据库的字段长度问题
我的取数据:
Public Function ExecuteSingleQuery(ByVal strSQLSelect As String) As System.Data.DataSet Implements IDBService.ExecuteSingleQuery
Dim pDtApt As New SqlDataAdapter(strSQLSelect, m_connSQLDB)
Dim dsReturn As DataSet = New DataSet
Try
pDtApt.Fill(dsReturn, GetTableNameFormStr(strSQLSelect))
Catch ex As Exception
MessageFactory.ErrorLog.Handler(ex.ToString)
'Debug.WriteLine(ex.ToString)
End Try
ExecuteSingleQuery = dsReturn
pDtApt.Dispose()
End Function
然后如何
dsReturn.Tables(0).Columns(1).MaxLength
取出的所有字段都是-1的,这是怎么回事。能不能告诉我如何解决,取得数据库的字段长度?
[解决办法]
'更改字段通用函数
Sub ModColumn(TableName,ColumnName,ColumnType)
On Error Resume Next
Conn.Execute( "Alter Table "&TableName& " Alter Column "&ColumnName& " "&ColumnType& " ")
If Err Then
Call InnerHtml( "UpdateInfo ", "更改 "&TableName& " 表中字段属性 <font color= 'blue '> 错误 </font> ,请手动将数据库中 <B> "&ColumnName& " </B> 字段更改为 <B> "&ColumnType& " </B> 属性,原因 " & Err.Description)
Err.Clear
Else
Call InnerHtml( "UpdateInfo ", "更改 "&TableName& " 表中字段属性 "&ColumnName& " 成功 ")
End If
End Sub
调用格式:
Call ModColumn( "[Dv_BbsNews] ", "Title ", "varchar(250) null ")
[解决办法]
SQL语句: "Alter Table "&TableName& " Alter Column "&ColumnName& " "&ColumnType& " "
可以更改的.
[解决办法]
你可以用 Connection.OpenSchema( "Columns ", new string[]{ "库名 ", "所有者 ", "表名 ", "列名 "}); 取
也可以用 SELECT * FROM sys.columns WHERE object_id = OBJECT_ID( '库名.所有者.表名 ') AND name = '列名 ' 取
[解决办法]
pDtApt.FillSchema(dsReturn, SchemaType.Mapped)是可以映射表结构的,不过对于数字型,text\Ntext型数据,本身本不需要指定数据长度,所以dsReturn.Tables(0).Columns(1).MaxLength =-1可能是这一列的数据类型为数字型或者是text\ntext
[解决办法]
试试:如果通过,请给我全分
Public Function ExecuteSingleQuery(ByVal strSQLSelect As String) As System.Data.DataSet Implements IDBService.ExecuteSingleQuery
Dim pDtApt As New SqlClient.SqlDataAdapter(strSQLSelect, m_connSQLDB)
pDtApt.MissingMappingAction = 4
Dim dsReturn As DataSet = New DataSet
Try
pDtApt.Fill(dsReturn, GetTableNameFormStr(strSQLSelect))
Catch ex As Exception
MessageFactory.ErrorLog.Handler(ex.ToString)
'Debug.WriteLine(ex.ToString)
End Try
ExecuteSingleQuery = dsReturn
pDtApt.Dispose()
End Function
[解决办法]
DataTable中的MaxLength属性是你自己建立数据表时用来设置数据宽度,初始值为-1.
他的值不能从数据库中取得,只能你手动的输入.
[解决办法]
[解决办法]
用maxlength(datalen(XXX))求出
[解决办法]
设置MissingSchemaAction 属性为AddWithKey
adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
但是对于非文本列,则忽略 MaxLength 属性。