Forum » Programiranje » vb mysql dataset update
vb mysql dataset update
korenje3 ::
Zakaj mi update ne dela?
Ta reč mi ne updejta sql baze, če spremenim vrednost. Dobim nek error.
Update requires a valid UpdateCommand when passed DataRow collection with modified rows.
brokersdata in fxts.brokersdata je isto.
Public brokersdata As New DataSet Public brokeradapter As New MySqlDataAdapter("SELECT broker, server, port FROM brokers", sqlcon) 'nekje v programu... brokersdata.Tables.Clear() brokeradapter.Fill(brokersdata, "brokers") DataGridView1.DataSource = fxts.brokersdata DataGridView1.DataMember = "brokers" 'now to update database fxts.brokeradapter.Update(fxts.brokersdata, "brokers")
Ta reč mi ne updejta sql baze, če spremenim vrednost. Dobim nek error.
Update requires a valid UpdateCommand when passed DataRow collection with modified rows.
brokersdata in fxts.brokersdata je isto.
cekr ::
Moraš narediti tudi ukaz za Update.
Sinclair ZX Spectrum [Zilog Z80A - 3.5 MHz, 48kB, dvojni kasetofon,
TV-OUT, radirke, Sinclair-Basic], Sinclair ZX-81 [Z80A, 3.25MHZ, 1kB]
TV-OUT, radirke, Sinclair-Basic], Sinclair ZX-81 [Z80A, 3.25MHZ, 1kB]
Zgodovina sprememb…
- spremenilo: cekr ()
korenje3 ::
kako to misliš?
pa še to. Ali je možnost, brez da bi delal clear na bazo v spominu, preden dam fill? Recimo da začnem z prazno bazo, in da bi dajal sam update iz mysql na lokalno bazo? Al borajo bit vsi rowi generirani prej?
drugje pišejo da moram napravit primary key v table. kaj to pomeni?
pa še to. Ali je možnost, brez da bi delal clear na bazo v spominu, preden dam fill? Recimo da začnem z prazno bazo, in da bi dajal sam update iz mysql na lokalno bazo? Al borajo bit vsi rowi generirani prej?
drugje pišejo da moram napravit primary key v table. kaj to pomeni?
Zgodovina sprememb…
- spremenil: korenje3 ()
cekr ::
Brez primarnega ključa ti sploh ne bo delalo.
Sinclair ZX Spectrum [Zilog Z80A - 3.5 MHz, 48kB, dvojni kasetofon,
TV-OUT, radirke, Sinclair-Basic], Sinclair ZX-81 [Z80A, 3.25MHZ, 1kB]
TV-OUT, radirke, Sinclair-Basic], Sinclair ZX-81 [Z80A, 3.25MHZ, 1kB]
korenje3 ::
Ok imam tako.
Kako sedaj dodam nove stvari v mysql bazo direktno iz dataset, po tem ko je dodano v datagridview1?
Imam pa tako...
brokeradapter.SelectCommand = New MySqlCommand("SELECT broker, server, port, zap FROM brokers", sqlcon) brokeradapter.InsertCommand = New MySqlCommand("INSERT INTO brokers (broker, server, port, zap) VALUES (@broker, @server, @port, @zap)", sqlcon) brokeradapter.UpdateCommand = New MySqlCommand("UPDATE brokers SET broker=@broker, server=@server, port=@port WHERE zap=@zap", sqlcon) brokeradapter.DeleteCommand = New MySqlCommand("DELETE FROM brokers WHERE broker=@broker, server=@server, port=@port, zap=@zap", sqlcon) brokeradapter.UpdateCommand.Parameters.Add("@broker", MySqlDbType.VarChar, 100, "broker") brokeradapter.UpdateCommand.Parameters.Add("@server", MySqlDbType.VarChar, 50, "server") brokeradapter.UpdateCommand.Parameters.Add("@port", MySqlDbType.Int16, 6, "port") brokeradapter.UpdateCommand.Parameters.Add("@zap", MySqlDbType.Int16, 6, "zap")
Kako sedaj dodam nove stvari v mysql bazo direktno iz dataset, po tem ko je dodano v datagridview1?
Imam pa tako...
Dim anyRow As DataRow = fxts.brokersdata.Tables("brokers").NewRow anyRow("server") = TextBox1.Text anyRow("broker") = TextBox3.Text anyRow("port") = TextBox2.Text anyRow("zap") = "1" fxts.brokersdata.Tables("brokers").Rows.Add(anyRow)
dolenc ::
Ob spremembi dataseta/dataTejbla, moraš nekako povedat, da je do spremembe prišlo, taka bedna fora vb.net-a, ampak ponavadi moraš to naredit. To narediš takoj po tem, ko napolniš dataset/data table, tako, da ve kaj je original stanje in kaj ti spreminjaš.
Potem moraš dataset "boundat" na dataGridView.
Update pa izvedeš običajno na dataAdapterju, na katerega je vnaprej nakačena komanda(update, select, delete, insert, kar pač hočeš on sam izbere katero bo izbral, glede na novo stanje data tejbla in prejšno stanje)
Ker sta dataGridView in dataset boundana se bo sprememba enega odražala na drugem, ob updejtu pa se bo preneslo še na bazo.
Tkole nekako, sedaj moraš pa samo še vse prav zmetat skupaj :), upam da nisem kaj pozabil.
PS... Korenje, veliko sreče pri aplikaciji, sem videl kaj delaš. Sem se že jaz nekaj podobnega lotil pa se mi je kar hitro zataknilo, tako da če ti rata izpeljat, bo kar lep dosežek :)
Dim dt As DataTable = dataset.Tables(imeTabele) For Each row As DataRow In dt.Rows row.SetAdded() Next
Potem moraš dataset "boundat" na dataGridView.
Private bs1 As New BindingSource() adapter.SelectCommand = ukaz 'Nafilas adapter s tem ukazom dt.TableName = "imeSvojeTabele" adapter.Fill(dt) 'Iz adapterja nafilas dataSet(ds) 'Source za gridView bindingSource1.DataSource = dt 'Binda podatke kot dataSource, to skrbi za sinhronizacijo podatkov DataGridView1.DataSource = bs1 'binda bound na datagrid(juhej)
Update pa izvedeš običajno na dataAdapterju, na katerega je vnaprej nakačena komanda(update, select, delete, insert, kar pač hočeš on sam izbere katero bo izbral, glede na novo stanje data tejbla in prejšno stanje)
'updejt na bazo Dim updVrstice As Integer = dataAdapter.Update(ds, imeTabele)
Ker sta dataGridView in dataset boundana se bo sprememba enega odražala na drugem, ob updejtu pa se bo preneslo še na bazo.
Tkole nekako, sedaj moraš pa samo še vse prav zmetat skupaj :), upam da nisem kaj pozabil.
PS... Korenje, veliko sreče pri aplikaciji, sem videl kaj delaš. Sem se že jaz nekaj podobnega lotil pa se mi je kar hitro zataknilo, tako da če ti rata izpeljat, bo kar lep dosežek :)
Zgodovina sprememb…
- spremenil: dolenc ()
korenje3 ::
dolenc, mislim da mi je vizuelni interface že boundal dataset in datagridview. Namreč ko vpišem v datagridview...
Dim anyRow As DataRow = fxts.brokersdata.Tables("brokers").NewRow
anyRow("server") = TextBox1.Text
anyRow("broker") = TextBox3.Text
anyRow("port") = TextBox2.Text
anyRow("zap") = "1"
fxts.brokersdata.Tables("brokers").Rows.Add(anyRow)
Mi doda pač to kar želim.
Problem je sedaj to prenesti na mysql bazo.
fxts.brokeradapter.Update(fxts.brokersdata, "brokers")
Ta ukaz mi da error: Fatal error encountered during command execution.
Mysql log ne kaže nobene aktivnosti.
Update normalno ne dela, če nič ne spremenim. Če spremenim, poskuša updejtat... Update dela, če so vrednosti že v mysql bazi... in potem če jih spreminjam.
ne dela samo, če dam insert new row...
Dim anyRow As DataRow = fxts.brokersdata.Tables("brokers").NewRow
anyRow("server") = TextBox1.Text
anyRow("broker") = TextBox3.Text
anyRow("port") = TextBox2.Text
anyRow("zap") = "1"
fxts.brokersdata.Tables("brokers").Rows.Add(anyRow)
Mi doda pač to kar želim.
Problem je sedaj to prenesti na mysql bazo.
fxts.brokeradapter.Update(fxts.brokersdata, "brokers")
Ta ukaz mi da error: Fatal error encountered during command execution.
Mysql log ne kaže nobene aktivnosti.
Update normalno ne dela, če nič ne spremenim. Če spremenim, poskuša updejtat... Update dela, če so vrednosti že v mysql bazi... in potem če jih spreminjam.
ne dela samo, če dam insert new row...
Zgodovina sprememb…
- spremenil: korenje3 ()
korenje3 ::
Sem že našel...
Tole sem pozabil dodati...
brokeradapter.InsertCommand.Parameters.Add("@broker", MySqlDbType.VarChar, 100, "broker")
brokeradapter.InsertCommand.Parameters.Add("@server", MySqlDbType.VarChar, 50, "server")
brokeradapter.InsertCommand.Parameters.Add("@port", MySqlDbType.Int16, 6, "port")
brokeradapter.InsertCommand.Parameters.Add("@zap", MySqlDbType.Int16, 6, "zap")
A mogoče veš kako je najbolje označit določene rowe?
Recimo če bom dodajal ali brisal stvari...
Je najbolje ustvarit nov column z neko ID številko, ki bi bila zaporedna in unikatna?
Tole sem pozabil dodati...
brokeradapter.InsertCommand.Parameters.Add("@broker", MySqlDbType.VarChar, 100, "broker")
brokeradapter.InsertCommand.Parameters.Add("@server", MySqlDbType.VarChar, 50, "server")
brokeradapter.InsertCommand.Parameters.Add("@port", MySqlDbType.Int16, 6, "port")
brokeradapter.InsertCommand.Parameters.Add("@zap", MySqlDbType.Int16, 6, "zap")
A mogoče veš kako je najbolje označit določene rowe?
Recimo če bom dodajal ali brisal stvari...
Je najbolje ustvarit nov column z neko ID številko, ki bi bila zaporedna in unikatna?
Zgodovina sprememb…
- spremenil: korenje3 ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [c#] in sql bazaOddelek: Programiranje | 1385 (884) | japol |
» | [VB] datagridviewOddelek: Programiranje | 1949 (1332) | korenje3 |
» | [C#,SQL]Oddelek: Programiranje | 1257 (1170) | JanOlMajti |
» | [Visual C#] TableAdapterOddelek: Programiranje | 1148 (1024) | detroit |
» | problem v C#Oddelek: Programiranje | 1976 (1691) | dvojka |