如何找出SQL Server CE列的长度

时间:2011-03-24 15:20:15

标签: c# sql-server-ce col

我使用SQL Server CE创建了一个表格,如下所示:

SqlCeCommand createTableCmd = new SqlCeCommand();
createTableCmd.CommandText = "Create table docEntry (id nvarchar (70) not null PRIMARY KEY, "
                + "parent nvarchar(70), "
                + "lmt bigint not null, "
                + "fileName nvarchar(70) not null)";

表名是docEntry,我需要找到的列宽是fileName列。

目的是检测列宽是否为70,如果是,我需要将其扩展到其他大小,否则请将其保留。

我试过

SELECT COL_LENGTH(docEntry, fileName)

它引起了异常:

  

发现了SqlCeException:
  列名无效。 [节点名称(如果有)=,列名= docEntry]

我不知道为什么......

有谁知道?

3 个答案:

答案 0 :(得分:2)

认为你必须做很多事情:

SELECT character_maximum_length
FROM information_schema.columns
WHERE table_name = 'docentry'
AND column_name = 'filename'

答案 1 :(得分:1)

<击> 除了来自@HadleyHope的提供商特定解决方案之外,还有一个适用于所有Dabases的解决方案(至少我通过OleDB尝试使用mssql2005,oracle10,SQlite3和MsAccess。我的机器上没有sqlce来验证): 的 DbConnection.GetSchema()

<击>

此代码适用于MsSql。

        using (DbConnection con = new SqlConnection())
        {
            con.ConnectionString = ...;
            con.Open();
            DataTable tabeWithSchemaInfo = con.GetSchema("AllColumns");

您必须替换con = new SqlConnection() 如果“AllColumns”不受SqlCeConnection调用con.GetSchema()支持以获取支持的属性列表。

有关详细信息,请参阅GetSchema - DbConnection.GetSchema in ADO.NET 2.0 - Retrieve Databases Tables Columns Views etc. from Database Connectionmsdn DbConnection.GetSchema()

答案 2 :(得分:-1)

表和列名称必须在引号中:

SELECT COL_LENGTH('docEntry', 'fileName')