【发布时间】:2016-08-19 03:30:36
【问题描述】:
按照本教程 http://www.sqlite.org/foreignkeys.html 我需要一个包含 3 个表的数据库,但是我无法修复有关“SQL 逻辑错误....靠近外国”的消息
Private Sub CreateDataBase()
Dim conn = New SQLiteConnection("Data Source=MyDataBase.sqlite;Version=3")
Try
Using (conn)
conn.Open()
'3 Tables I need to create
Dim mainTable = "CREATE TABLE IF NOT EXISTS users (userID INTEGER PRIMARY KEY, name VARCHAR(20))"
Dim tableA = "CREATE TABLE IF NOT EXISTS tableA (ItemA VARCHAR(20), user INTEGER) FOREIGN KEY(user) REFERENCES users (userID)"
Dim tableB = "CREATE TABLE IF NOT EXISTS tableB (ItemB VARCHAR(20), user INTEGER) FOREIGN KEY(user) REFERENCES users (userID)"
Dim cmdConexion As SQLiteCommand = New SQLiteCommand(mainTable, conn)
'Try for the mainTable
Try
cmdConexion.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.ToString())
End Try
'Set and Try for tableA
cmdConexion.CommandText = tableA
Try
cmdConexion.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.ToString())
End Try
'Set and Try for tableB
cmdConexion.CommandText = tableB
Try
cmdConexion.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.ToString())
End Try
End Using
Catch ex As Exception
MsgBox(ex.ToString())
End Try
End Sub
相同的代码仅适用于 mainTable。
我试过这样的一行
Pragma("foreign_keys") = 1
甚至
cmdConexion.CommandText = "PRAGMA foreign_keys = ON"
但我仍然无法修复错误。
SQL 行或 Pragma on 的错误在哪里?
注意: 另外,是否有另一种方法可以在同一个 Try - Catch 上执行 SQL Create Table,或者更好地为每个表执行一个 Try - Catch?
【问题讨论】: