Hi 
Al geruime tijd zit ik hier te spelen met databinding. Het lukt mij niet goed om een database-kolom NOT NULL (Default (null)) te vullen met een standaard waarde vanuit een Windows form d.m.v. databinding.
De situatie:
- Database server = MySql
- Een database met een table met twee kolommen:
ID (PrimaryKey, bigint(20), autoincrement)
Title (varchar (255), NOT NULL, Default = (null)
- Een windows form met twee objecten:
* BindingSource (bindingSource1)
* BindingNavigator (bindingNavigator1). De BindingSource = bindingSource1
Objecten in code:
- Een MySqlConnection
- Een MySqlDataAdapter met SelectCommand en InsertCommand
- Een DataSet
- DataSet wordt met MySqlDataAdapter gevuld.
De table bevat het kolom 'Title' welke NOT NULL is en default (null).
Nu heb ik op het formulier een textbox. Databinding doe ik dan als volgt:
En nu komt het probleem. Wanneer de gebruiker aan row aanmaakt, en niks intikt in het textbox, dan verschijnt de melding: Column 'Title' does not allow nulls.
Wat op zich logisch is, want er wordt (null) gestuurd naar de onderliggende data source. Maar graag zou ik een default NULL value willen meegeven wanneer men niks intikt.
Wat ik nu niet snap is:
- bij het Binding object geef ik een b.NullValue op. Deze wordt wel in de tekstbox geplaatst, maar niet "gebruikt". Pas wanneer ik als gebruiker tekst intik, wordt dit wel "herkend". Wat is de achterliggende logica dat de NullValue waarde niet wordt gebruikt?
- Op welke manier kan ik het beste omgaan om een standaard waarde mee te geven voor de achterliggende data source wanneer de gebruiker niks invoert, ter voorkoming dat een (null) waarde wordt meegegeven aan de data source?
Alvast bedankt voor jullie hulp!
Al geruime tijd zit ik hier te spelen met databinding. Het lukt mij niet goed om een database-kolom NOT NULL (Default (null)) te vullen met een standaard waarde vanuit een Windows form d.m.v. databinding.
De situatie:
- Database server = MySql
- Een database met een table met twee kolommen:
ID (PrimaryKey, bigint(20), autoincrement)
Title (varchar (255), NOT NULL, Default = (null)
- Een windows form met twee objecten:
* BindingSource (bindingSource1)
* BindingNavigator (bindingNavigator1). De BindingSource = bindingSource1
Objecten in code:
- Een MySqlConnection
- Een MySqlDataAdapter met SelectCommand en InsertCommand
- Een DataSet
- DataSet wordt met MySqlDataAdapter gevuld.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| conn = new MySqlConnection();
conn.ConnectionString = " ";
da = new MySqlDataAdapter();
da.SelectCommand = new MySqlCommand();
da.SelectCommand.Connection = conn;
da.SelectCommand.CommandText = "SELECT ID, Title FROM titles";
da.InsertCommand = new MySqlCommand();
da.InsertCommand.Connection = conn;
da.InsertCommand.CommandText = "INSERT INTO titles (Title) VALUES (?Title)";
da.InsertCommand.Parameters.Add("?Title", MySqlDbType.VarChar, 255, "Title");
ds = new DataSet("DataSet");
da.FillSchema(ds, SchemaType.Source, "titles");
da.Fill(ds, "titles");
bindingSource1.DataSource = ds.Tables[0]; |
De table bevat het kolom 'Title' welke NOT NULL is en default (null).
Nu heb ik op het formulier een textbox. Databinding doe ik dan als volgt:
code:
1
2
3
| Binding b = new Binding("Text", bindingSource1, "Title");
b.NullValue = "Standaard waarde";
textBox1.DataBindings.Add(b); |
En nu komt het probleem. Wanneer de gebruiker aan row aanmaakt, en niks intikt in het textbox, dan verschijnt de melding: Column 'Title' does not allow nulls.
Wat op zich logisch is, want er wordt (null) gestuurd naar de onderliggende data source. Maar graag zou ik een default NULL value willen meegeven wanneer men niks intikt.
Wat ik nu niet snap is:
- bij het Binding object geef ik een b.NullValue op. Deze wordt wel in de tekstbox geplaatst, maar niet "gebruikt". Pas wanneer ik als gebruiker tekst intik, wordt dit wel "herkend". Wat is de achterliggende logica dat de NullValue waarde niet wordt gebruikt?
- Op welke manier kan ik het beste omgaan om een standaard waarde mee te geven voor de achterliggende data source wanneer de gebruiker niks invoert, ter voorkoming dat een (null) waarde wordt meegegeven aan de data source?
Alvast bedankt voor jullie hulp!