2010-03-18 6 views
0

J'ai essayé avec ado.net créer une table columnName avec un nom unique. comme uniquename J'utilise new Guid()insérer dans la colonne de la table SQL comme 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(); 

et il échoue:

System.Data.SqlClient.SqlException: syntaxe incorrecte près '-'. в System.Data.SqlClient.SqlConnection.OnError (Exception SqlException, Boolean breakConnection) в System.Data.SqlClient.SqlInternalConnection.OnError (exception SqlException, Boolean breakConnection)

maintenant question, comment puis-je corriger , ou comment pouvez utiliser une manière différente de créer une colonne unique?

+0

Qu'est-ce que convertColumnType? –

+2

Êtes-vous en train d'essayer d'ajouter dynamiquement des colonnes à une table et de lui donner une valeur guid? ** ne le fais pas ** c'est une très mauvaise idée! –

+0

alors vous essayez de créer une colonne où le nom est un GUID? –

Répondre

7

Vous devez utiliser [...] pour échapper le nom de colonne qui contient des signes moins, ou mieux encore: ne créez pas de colonnes (ou tables) avec des noms aléatoires.

0

essayez de remplacer les tirets par des underscores

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

En outre, vous ne devriez pas créer sql de cette façon. Vous devriez utiliser parameterized commands.

0

Cela format Guid sans « - » signes:

string columnName = Guid.ToString("N") 

Mais il est une mauvaise pratique de créer des colonnes avec des noms aléatoires, êtes-vous sûr un aller dans le bon sens?

Questions connexes