Я добавляю объект к DataTable, который является частью коллекции Tables DataSet. Затем я вызываю Update на DataAdapter, связанном с вышеупомянутым DataTable. Однако, когда я вызываю Update, он выдает исключение, говорящее, что «NOT NULL constraint failed failed: proxies.port». Я поделюсь используемым мной кодом для создания базы данных, загрузки ее данных и даже конструктора объекта Proxy, который я использую. Сначала правильно ответить получает галочку :)Устранение ограничений SQLite SQLite при вызове Update on DataAdapter?
Спасибо!
Public Sub CreateDB()
Dim dbLocation As String = My.Application.Info.DirectoryPath & "\data.s3db"
SQLiteConnection.CreateFile(dbLocation)
Using conn As New SQLiteConnection("DataSource=" & dbLocation & ";Version=3;")
Using cmd As New SQLiteCommand(conn)
conn.Open()
cmd.CommandText = "CREATE TABLE proxies (
ip Text Not NULL,
port Integer Not NULL,
countryName Text Not NULL,
pingTime Integer Not NULL,
status Text Not NULL,
PRIMARY KEY (ip, port),
unique(ip, port)
);
CREATE TABLE [judges] (
[id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
[url] TEXT UNIQUE NOT NULL,
[pingTime] INTEGER NOT NULL,
[status] TEXT NOT NULL
);
CREATE TABLE [tests] (
[id] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
[url] TEXT NULL,
[validationText] TEXT NOT NULL,
[invalidationText] TEXT NOT NULL,
[status] TEXT NOT NULL
)"
cmd.ExecuteNonQuery()
conn.Close()
End Using
End Using
End Sub
И я загрузке данных в суб следующим образом:
Public Sub LoadDataFromDB()
Using connection As New SQLiteConnection(dbConnectionString)
dbDataSet.Tables.Add("proxies")
dbProxyAdapter.Fill(dbDataSet.Tables("proxies"))
Dim cmdBuilder As New SQLiteCommandBuilder(dbProxyAdapter)
dbProxyAdapter.InsertCommand = cmdBuilder.GetInsertCommand
Dim proxy As New Proxy("1.1.1.1:12345")
dbDataSet.Tables("proxies").Rows.Add(proxy)
dbProxyAdapter.Update(dbDataSet.Tables("proxies"))
End Using
End Sub
Proxy Объект Конструктор
Public Sub New(proxy As String)
If System.Text.RegularExpressions.Regex.IsMatch(proxy, "(\d{1,3}\.){3}\d{1,3}:\d{2,5}") Then
Me.IP = proxy.Split(":")(0)
Me.Port = proxy.Split(":")(1)
Me.PingTime = 0
Me.Status = ProxyStatus.Unknown
Me.CountryName = "Unknown"
Else
Throw New Exception("Invalid proxy string '" & proxy & "'")
End If
End Sub
Вы должны показать свою команду обновления, чтобы решить проблему –