0

SQLite でテーブル/列を動的に作成するために使用できるクラスを開発しようとしています。次のようにクラスを作成しました。

public class NewColumns
{
    public string ClmName;

    public Types NewType { get; set; }

    public void SetName(string NewColumn)
    {
        ClmName = NewColumn;
    }
}

public enum Types
{
    INTEGER = 0,
    REAL = 1,
    NUMERIC = 2,
    TEXT = 3,
    BLOB = 4,
}

public static bool CreateTable(string DBPath, string TableName, params NewColumns ClumnName)
{
    bool succ = false;
    mDBcon.ConnectionString = "Data Source=" + DBPath + ".db3";
    mDBcon.Open();
    cmd = new SQLiteCommand(mDBcon);
    cmd.CommandText = "CREATE TABLE IF NOT EXISTS " + TableName + " (ISBN VARCHAR(15), Tag VARCHAR(15));";
    cmd.ExecuteNonQuery();
    return succ;
}

次のように、新しい値をクラスに渡したいと思います。

clsSqlite.CreateTable("test", "newTable", new clsSqlite.NewColumns { ClmName = "", NewType.INTEGER });

しかし、上記のコードの「NewType」は列挙値を認識せず、列挙値「INTEGER」を手動で入力すると次のエラーが発生します。

初期化子メンバー宣言が無効です

助けてくれてありがとう。

よろしく、

4

2 に答える 2

2
clsSqlite.CreateTable(
    "test", 
    "newTable", 
    new clsSqlite.NewColumns { ClmName = "", NewType = Types.INTEGER });

NewTypeはあなたのプロパティの名前で、列挙型は呼び出されますTypes

于 2012-07-19T11:27:32.330 に答える
0

列挙型をクラス定義の外に移動すると問題ありません。

将来、あなたや他の人を混乱させる可能性があるため、enum に Types 以外の名前を使用することを検討してください。

また、変数をプロパティに変更します。

于 2012-07-19T11:26:46.860 に答える