Ich habe eine Tabelle mit Spalten name
, qty
, rate
. Jetzt muss ich eine neue Spalte hinzufügen COLNew
zwischen den name
y qty
Spalten. Wie kann ich eine neue Spalte zwischen zwei Spalten einfügen?
Antworten
Zu viele Anzeigen?Ich stand vor dem gleichen Problem und die zweite Methode, die in der akzeptierten Antwort vorgeschlagen wurde, kann, wie in den Kommentaren erwähnt, problematisch sein, wenn es um Fremdschlüssel geht.
Meine Abhilfe besteht darin, die Datenbank in eine SQL-Datei zu exportieren und dabei sicherzustellen, dass die INSERT-Anweisungen Spaltennamen enthalten. Ich verwende dazu DB Browser für SQLite die eine praktische Funktion dafür hat. Danach müssen Sie nur noch die Anweisung create table bearbeiten und die neue Spalte dort einfügen, wo Sie sie haben wollen, und die Datenbank neu erstellen.
In *nix-ähnlichen Systemen ist es einfach etwas in der Art von
cat db.sql | sqlite3 database.db
Ich weiß nicht, inwieweit dies bei sehr großen Datenbanken möglich ist, aber in meinem Fall hat es funktioniert.
Ich füge nur selten Antworten auf 11 Jahre alte Fragen hinzu. Allerdings enthält die Antwort mit den vielen Stimmen eine irreführende Codezeile. Ich sage irreführend, weil ich es versucht habe und keinen Erfolg hatte. Hier ist die Code-Zeile, auf die ich mich beziehe.
ALTER TABLE {tableName} RENAME TO TempOldTable
Dies ist die Zeile, die ich in meinem ersten Versuch, eine Spalte in eine DB-Tabelle hinzuzufügen, die bereits erstellt wurde, ausprobiert habe. Es ist fehlgeschlagen, aber WARUM könnte eine bessere Frage sein. Wie auch immer, hier ist die fehlgeschlagene Zeile des Codes.
Dim tb As String = "IncomeTable"
Dim sqlCmd As String = "$ALTER TABLE" '{tb}' "ADD COLUMN itNumVisit INTEGER"
Hier ist also der endgültige Code, der eine neue Spalte hinzufügt, in meinem Fall vom Typ 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
Beachten Sie, dass der STRING sqlCmd ein einziger String ist. Nur für den Fall, dass jemand die akzeptierte Antwort ausprobiert hat!
- See previous answers
- Weitere Antworten anzeigen