» »

vb mysql dataset update

vb mysql dataset update

korenje3 ::

Zakaj mi update ne dela?


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]

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?

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]

korenje3 ::

torej kaj moram storiti?

korenje3 ::

Ok imam 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š.

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...

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?

Zgodovina sprememb…

  • spremenil: korenje3 ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[c#] in sql baza

Oddelek: Programiranje
161292 (791) japol
»

[VB] datagridview

Oddelek: Programiranje
351860 (1243) korenje3
»

[C#,SQL]

Oddelek: Programiranje
51161 (1074) JanOlMajti
»

[Visual C#] TableAdapter

Oddelek: Programiranje
61060 (936) detroit
»

problem v C#

Oddelek: Programiranje
211896 (1611) dvojka

Več podobnih tem