我尝试过使用唯一名称的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)
现在问题,我该如何修复它,或者如何使用不同的方式创建唯一的列?
答案 0 :(得分:7)
您需要使用[...]
来转义包含减号的列名,或者更好的是:不要创建具有随机名称的列(或表)。
答案 1 :(得分:0)
尝试用下划线替换破折号
var sysColumnName = Guid.NewGuid.ToString().Replace('-', '_');
另外,你不应该以这种方式创建sql。您应该使用parameterized commands。
答案 2 :(得分:0)
这将格式化没有“ - ”符号的guid:
string columnName = Guid.ToString("N")
但是创建具有随机名称的列是不好的做法,你确定你采用了正确的方法吗?