65.9K
CodeProject 正在变化。 阅读更多。
Home

根据 SQL 列大小动态设置 TextBox.MaxLength

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.25/5 (4投票s)

2007年1月25日

CPOL
viewsIcon

45940

根据 SQL 列大小动态设置 TextBox.MaxLength。

引言

你有没有尝试过更新 SQL Server 表中的 varchar 列,当字符串的长度超过列大小时?这是行不通的…… 通常如何解决? 你指定

myEditBox.MaxLength = 100;

如果你的 SQL 开发者更改了列大小但没有通知你怎么办?

解决方案

public class SQLHelper
{
    static public int GetSize(string csConnectionString, string csTableName, 
                              string csColumnName, int iDefault)
    {
        int iSize = iDefault;
        String csCommand =
            @"select CHARACTER_MAXIMUM_LENGTH from INFORMATION_SCHEMA.COLUMNS 
                WHERE TABLE_NAME = @TABLE_NAME AND COLUMN_NAME = @COLUMN_NAME";
        try
        {
            SqlConnection pConn = new SqlConnection(csConnectionString);
            pConn.Open();

            SqlCommand pCommand = new SqlCommand(csCommand, pConn);
            pCommand.Parameters.AddWithValue("@TABLE_NAME", csTableName);
            pCommand.Parameters.AddWithValue("@COLUMN_NAME", csColumnName);
            SqlDataReader pReader = pCommand.ExecuteReader();
            if (pReader.Read())
            {
                object pSize = pReader.GetValue(0);
                if (pSize != DBNull.Value)
                {
                    iSize = Convert.ToInt32(pSize);
                }
            }
            pReader.Close();
            pConn.Close();
        }
        catch (Exception em)
        {
            MessageBox.Show(em.Message, "SQL Error");
        }
        return iSize;
    }


    static public int GetSize(string csConnectionString, 
                      string csTableName, string csColumnName)
    {
        return GetSize(csConnectionString, csTableName, csColumnName, -1);
    }
}

用法

myTextBox.MaxLength = SQLHelper.GetSize(ConnectionString, TableName, ColumnName);
© . All rights reserved.