2012-07-19 85 views
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」手動:

無效的初始成員宣告

在此先感謝您的幫助。

Regards,

回答

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

NewType是你的財產的名稱,枚舉被稱爲Types

+0

完美,我的愚蠢的錯誤,所有的作品都很好的知道。謝謝。我還有一個方程式,如果你能幫我解決這個問題,我也會很感激,爲了檢索枚舉值,我使用了這個方法:enumValue.ToString(),它工作正常,但是安全或者我應該使用diffident方法? – sam 2012-07-19 11:50:12

+0

我認爲沒關係..但是這不會返回枚舉的*值*,但它的*名稱* – 2012-07-21 18:00:20

0

將類的定義之外的枚舉移動,你會沒事的。

您可能會考慮使用另一個名稱而不是類型爲您的枚舉,因爲它可能會混淆你和其他人在未來。

並且還將您的變量更改爲屬性。

+0

感謝您的提醒,它的一切工作正常,我也已經改變類型的名稱。 – sam 2012-07-19 11:55:25