首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

MaxLength 数据库的字段长度有关问题

2012-02-26 
MaxLength 数据库的字段长度问题我的取数据:PublicFunctionExecuteSingleQuery(ByValstrSQLSelectAsString

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 属性。

热点排行