J'ai un tableau avec des colonnes name
, qty
, rate
. Maintenant, je dois ajouter une nouvelle colonne COLNew
entre les name
y qty
colonnes. Comment ajouter une nouvelle colonne entre deux colonnes ?
Réponses
Trop de publicités?J'étais confronté au même problème et la deuxième méthode proposée dans la réponse acceptée, comme indiqué dans les commentaires, peut être problématique lorsqu'il s'agit de clés étrangères.
Ma solution consiste à exporter la base de données vers un fichier sql en veillant à ce que les instructions INSERT incluent les noms des colonnes. Je le fais en utilisant DB Browser for SQLite qui a une fonction pratique pour cela. Après cela, il vous suffit de modifier l'instruction create table et d'insérer la nouvelle colonne à l'endroit voulu, puis de recréer la base de données.
Dans les systèmes de type *nix, il s'agit simplement de quelque chose de l'ordre de
cat db.sql | sqlite3 database.db
Je ne sais pas si cela est réalisable avec de très grandes bases de données, mais cela a fonctionné dans mon cas.
J'ajoute rarement des réponses à des questions vieilles de 11 ans. Cela dit, la réponse qui a reçu beaucoup de votes contient une ligne de code trompeuse. Je dis trompeuse parce que je l'ai essayée et n'ai pas réussi. Voici la ligne de code à laquelle je fais référence.
ALTER TABLE {tableName} RENAME TO TempOldTable
Voici la ligne que j'ai utilisée lors de ma première tentative d'ajout d'une colonne dans une table de base de données qui avait déjà été créée. Cela a ÉCHOUÉ, mais la question du POURQUOI est peut-être plus pertinente. En tout cas, voici la ligne de code qui a échoué.
Dim tb As String = "IncomeTable"
Dim sqlCmd As String = "$ALTER TABLE" '{tb}' "ADD COLUMN itNumVisit INTEGER"
Voici donc le code final qui ajoute une nouvelle colonne, dans mon cas un type INTEGER.
Private Sub btnCopyTable_Click(sender As Object, e As EventArgs) Handles btnCopyTable.Click
Dim sqlCmd As String = "ALTER TABLE IncomeTable ADD COLUMN itNumVisit INTEGER"
Try
Using conn As New SQLiteConnection($"Data Source = '{gv_dbName}';Version=3;")
conn.Open()
Using cmd As New SQLiteCommand(sqlCmd, conn)
cmd.ExecuteNonQuery()
End Using
End Using
Catch ex As Exception
MsgBox("It Failed")
End Try
End Sub
Remarquez que la STRING sqlCmd est une seule et même chaîne. Juste au cas où quelqu'un aurait essayé la réponse acceptée !
- Réponses précédentes
- Plus de réponses