Ich bin neu in ADO.NET. Ich habe mit ständigen Änderungen in meinem Datensatz zu meiner SQLite-Datenbank zu kämpfen.Persistente Änderungen in Datensatz zu SQLite-Datenbank
Es hat eine Tabelle "Kategorie", die drei Felder haben:.. CategoryID (int), Kategorie (varchar (100), Eltern (int) Mutter null seine
ich eine neue Zeile einzufügen versuchen . in meiner Datenbank ich habe den folgenden Code
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SQLite;
using System.Text;
namespace QS_Optimized
{
class UsingDataset
{
static DataSet dataset;
static SQLiteConnection conn;
static UsingDataset()
{
conn = new SQLiteConnection("data source = ..\\sqlitedb_amrit.db");
dataset = new DataSet("MyDataset");
}
public static void UpdateFromDB()
{
SQLiteDataAdapter sqda = new SQLiteDataAdapter("Select Category.* from Category where Parent = 0", conn);
sqda.Fill(dataset, "Category");
//dataset.Tables["Category"].Columns["CategoryID"].AllowDBNull = false;
//dataset.Tables["Category"].Columns["CategoryName"].AllowDBNull = false;
// Insert command
SQLiteCommand cmdInsert = new SQLiteCommand();
cmdInsert.Connection = conn;
cmdInsert.CommandText = @"Insert into Category('CategoryID','CategoryName','Parent') values" +
@"(@id,@name,@parent)";
cmdInsert.Parameters.Add(new SQLiteParameter("@id",DbType.Int64));
cmdInsert.Parameters.Add(new SQLiteParameter("@name",DbType.String));
cmdInsert.Parameters.Add(new SQLiteParameter("@parent",DbType.Int64));
sqda.InsertCommand = cmdInsert;
// Add Datarows to dataset;
DataTable tbl = dataset.Tables["Category"];
DataRow drw = tbl.NewRow();
drw[0] = 64;
drw[1] = "TestCategory";
drw[2] = 0;
tbl.Rows.Add(drw);
sqda.Update(dataset,"Category");
}
public static void Main()
{
UpdateFromDB();
}
}
}
Als ich es ausführen, ich eine Ausnahme erhalten.
Category.Categoryname nicht NULL sein kann
. Warum kommt dieser Fehler? Ich glaube nicht, ich bin ein null
Auch das Einfügen, wenn ich nulls in dieser bestimmten Spalte ermöglichen (Änderung der Datenbank durchgeführt), fügt dieser Code eine neue Zeile
(64, NULL, NULL)
in die Tabelle in der Datenbank. Ich habe bereits 63 Datensätze in der Tabelle jetzt