2010-03-18 55 views
0

我試着用ado.net創建具有唯一名稱的表columnName。作爲uniquename我用new Guid()作爲GUID插入sql表列

Guid sysColumnName = new Guid(); 
    sysColumnName = Guid.NewGuid(); 

    string stAddColumn = "ALTER TABLE " + tableName + " ADD " + sysColumnName.ToString() + " " + convertedColumnType + " NULL"; 
    SqlCommand cmdAddColumn = new SqlCommand(stAddColumn, con); 
    cmdAddColumn.ExecuteNonQuery(); 
    con.Close(); 

和失敗:

System.Data.SqlClient.SqlException:附近有語法錯誤 ' - '。 вSystem.Data.SqlClient.SqlConnection.OnError(SqlException異常,布爾breakConnection) вSystem.Data.SqlClient.SqlInternalConnection.OnError(SqlException異常,布爾breakConnection)

現在的問題,如何解決呢,或者如何使用不同的方式來創建獨特的列?

+0

什麼是conversionColumnType? – 2010-03-18 14:00:10

+2

您是否正試圖動態添加列到表中,並將該列命名爲guid值? **不要這樣做**這是一個非常糟糕的主意! – 2010-03-18 14:02:25

+0

所以你想創建一個名稱是GUID的列? – 2010-03-18 14:02:52

回答

7

您需要使用[...]轉義包含減號的列名稱,或者更好:請勿使用隨機名稱創建列(或表)。

0

嘗試用下劃線

var sysColumnName = Guid.NewGuid.ToString().Replace('-', '_'); 

而且更換破折號,你不應該以這種方式創建SQL。你應該使用parameterized commands。 「 - 」

0

這將制,沒有招牌的GUID:

string columnName = Guid.ToString("N") 

但它是不好的做法,用隨機的名字創建列,你確定你是要以正確的方式?