作为GUID插入到sql表列中

时间:2010-03-18 13:57:14

标签: c# tsql ado.net

我尝试过使用唯一名称的ado.net create table columnName。作为uniquename,我使用new Guid()

    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异常,Boolean breakConnection)      System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception,Boolean breakConnection)

现在问题,我该如何修复它,或者如何使用不同的方式创建唯一的列?

3 个答案:

答案 0 :(得分:7)

您需要使用[...]来转义包含减号的列名,或者更好的是:不要创建具有随机名称的列(或表)。

答案 1 :(得分:0)

尝试用下划线替换破折号

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

另外,你不应该以这种方式创建sql。您应该使用parameterized commands

答案 2 :(得分:0)

这将格式化没有“ - ”符号的guid:

string columnName = Guid.ToString("N")

但是创建具有随机名称的列是不好的做法,你确定你采用了正确的方法吗?