0

次のように 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 ]

どうしてか分かりません...

誰でも知っていますか?

4

3 に答える 3

2

あなたはそれを長い道のりでやらなければならないと思います:

SELECT character_maximum_length
FROM information_schema.columns
WHERE table_name = 'docentry'
AND column_name = 'filename'
于 2011-03-24T15:49:27.600 に答える
1

@HadleyHopeのプロバイダー固有のソリューションのほかに、すべてのデータベースで機能するソリューションがあります(少なくとも、OleDB経由でmssql2005、oracle10、SQlite3、およびMsAccessで試しました。確認するマシンにsqlceはありません): DbConnection.GetSchema()

このコードは MsSql で機能します。

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

「AllColumns」が SqlCeConnection 呼び出しでサポートされていないcon = new SqlConnection() 場合は、サポートされているプロパティのリストを取得するために置き換える必要があります。con.GetSchema()

詳細については、GetSchema - ADO.NET 2.0 の DbConnection.GetSchema - データベース接続からデータベース テーブル列ビューなどを取得するおよびmsdn DbConnection.GetSchema()を参照してください。

于 2011-03-24T16:28:39.960 に答える
-1

テーブルと列の名前は引用符で囲む必要があります。

SELECT COL_LENGTH('docEntry', 'fileName')
于 2011-03-24T15:42:31.740 に答える