PDA

View Full Version : [VB.NET] Inserire un nuovo record


OrcaAssassina
10-02-2008, 17:53
Per inserire un nuovo record posso seguire questa sintassi:

Dim command As New OleDb.OleDbCommand
command = New OleDbCommand("INSERT INTO DvdStorico (Titolo,NCD) VALUES(?,?)", Conn)

command.Parameters.Add("@Titolo", OleDbType.Char, 50).Value = Me.txtTitolo.Text
command.Parameters.Add("@NCD", OleDbType.Char, 50).Value = Me.txtNCD.Text
command.ExecuteNonQuery()

-------------------------------------------------------------

cosi facendo scrivo direttamente nel DB, però se ho una griglia con i dati non mi vengono agiornati.

Oppure posso inserire un nuovo record nel dataset e poi fare l'UPDATE di tutto il dataset

1) Come faccio nel primo casa ad aggirornare una griglia inserendo direttamente il record nel DB
2) Qual'è la strada migliore per inserire un nuovo record?? Scriverlo direttamente nel db oppure salvarlo nel dataset e aggiornare il tutto.

Ciao e grazieeeeeeeeeeee

animeserie
12-02-2008, 15:18
Per inserire un nuovo record posso seguire questa sintassi:

Dim command As New OleDb.OleDbCommand
command = New OleDbCommand("INSERT INTO DvdStorico (Titolo,NCD) VALUES(?,?)", Conn)

command.Parameters.Add("@Titolo", OleDbType.Char, 50).Value = Me.txtTitolo.Text
command.Parameters.Add("@NCD", OleDbType.Char, 50).Value = Me.txtNCD.Text
command.ExecuteNonQuery()

-------------------------------------------------------------

cosi facendo scrivo direttamente nel DB, però se ho una griglia con i dati non mi vengono agiornati.

Oppure posso inserire un nuovo record nel dataset e poi fare l'UPDATE di tutto il dataset

1) Come faccio nel primo casa ad aggirornare una griglia inserendo direttamente il record nel DB
2) Qual'è la strada migliore per inserire un nuovo record?? Scriverlo direttamente nel db oppure salvarlo nel dataset e aggiornare il tutto.

Ciao e grazieeeeeeeeeeee

Ciao,
programmo in C#, ma esso e VB sono molto simili (anche per il fatto che il framework è quello :) )
comunque:
Consiglio 1: usa il DataSet il + possibile
Consiglio 2: per griglia cosa intendi ? un controllo DataGrid o DataGridview per caso?
Quando utilizzo il datagridview, prima agisco sul Dataset, e , successivamente aggiorno il Datasource del datagridview ponendolo uguale al dataset:
Ad esempio (in C#, ma è semplicissimo adattarlo a VB):
DataSet mioDataSet = new DataSet();
SqlConnection connessione = new SqlConnection();
con.ConnectionString = "stringa di connessione";
SqlCommand com = new SqlCommand("selezione bla bla bla");
SqlDataAdapter adatt = new SqlDataAdapter();
adatt.SelectCommand = com;
adatt.Fill(mioDataSet);
dataGridView1.DataSource = mioDataSet;
dataGridView1.DataMember = mioDataSet.Tables[0].TableName;

Potresti anche usare un BindingSource comunque... specie se ti affidi molto al copia/incolla dei controlli WinForms.
Spero di esserti stato un minimo d'aiuto :)

animeserie
12-02-2008, 15:21
Uhmmm
mi sa che ho dimenticato di scriverti del metodo Refresh e Update di Datagridview...
In questo momento sto lavorando su Java e ho perso un pò di smalto su .NEt :D
Comunque se non risolvi stasera ti controllo dal Pc di casa ;)

OrcaAssassina
12-02-2008, 15:28
Ok ti ringrazio, ora provo

Cmq tu dici ci aggiungere il record nel dataset e poi fare update del dataset che automaticamente scrive nel DB vero

animeserie
12-02-2008, 15:33
Ok ti ringrazio, ora provo

Cmq tu dici ci aggiungere il record nel dataset e poi fare update del dataset che automaticamente scrive nel DB vero

Il DataSet ha poi anche un metodo AcceptChanges che serve per memorizzare effettivamente i cambiamenti. Ripeto, ci ho perso un pò di lucidità per via che adesso lavoro in java (ma dalla settimana prox forse torno a .NET).
Cmq, stasera ti controllo meglio su qualche prog del mio harddisk

OrcaAssassina
12-02-2008, 15:38
Il DataSet ha poi anche un metodo AcceptChanges che serve per memorizzare effettivamente i cambiamenti. Ripeto, ci ho perso un pò di lucidità per via che adesso lavoro in java (ma dalla settimana prox forse torno a .NET).
Cmq, stasera ti controllo meglio su qualche prog del mio harddisk

Visto che ci sei, fammi qualche copia incolla di codice cosi lo provo

1) Inserire nuovo record su dataset
2) Modificare un record su dataset
3) Eliminare un record su dataset
4) Aggiornamento del dataset con scrittura su DB

Ti ho chiesto troppo????

Se puoi ti ringrazio....se non hai tempo non importa

Ciao e grazieeeeeeeee

animeserie
12-02-2008, 16:36
Visto che ci sei, fammi qualche copia incolla di codice cosi lo provo

1) Inserire nuovo record su dataset
2) Modificare un record su dataset
3) Eliminare un record su dataset
4) Aggiornamento del dataset con scrittura su DB

Ti ho chiesto troppo????

Se puoi ti ringrazio....se non hai tempo non importa

Ciao e grazieeeeeeeee

Ciao, si si, te lo faccio stasera, li riprendo dal PC di casa :)
Ovviamente in C#, ma tanto il procedimento è quello ;)

animeserie
12-02-2008, 18:16
Allora, ho recuperato adesso un programmino con cui gestisco una libreria semplicissima.
Ho utilizzato il BindingSource.
Dunque, l'inserimento, modifica e cancellazione le lascio fare completamente grafiche (ho solo aggiunto un ErrorProvider per gestire obbligatorietà e formato di alcuni campi di testo).
Ciò che faccio per conto mio è la Select. Ti incollo un frammento:


public void Cerca()
{
string stringaConnessione = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\Data\libreria.mdb;";
string query = "Select * from libri where titolo like @titolo " +
"AND autori LIKE @autori " +
"AND casaed LIKE @casaed "+//+
"AND qta < @qta";

OleDbConnection connessione = new OleDbConnection(stringaConnessione);

OleDbDataAdapter adatt = new OleDbDataAdapter();
adatt.SelectCommand = new OleDbCommand();
adatt.SelectCommand.Connection = connessione;
adatt.SelectCommand.CommandText = query;
DataSet mioDataSet = new DataSet();

// inserisco parametry per query
adatt.SelectCommand.Parameters.AddWithValue("titolo", "%"+txtFindTitolo.Text+"%");
adatt.SelectCommand.Parameters.AddWithValue("autori", "%" + txtFindAutori.Text + "%");
adatt.SelectCommand.Parameters.AddWithValue("casaed", "%" + txtFindCasaEd.Text + "%");

if (isNumeric(txtFindQta.Text))
adatt.SelectCommand.Parameters.AddWithValue("qta", Int32.Parse(txtFindQta.Text));
else adatt.SelectCommand.Parameters.AddWithValue("qta", Int32.MaxValue);

connessione.Open();
adatt.Fill(mioDataSet, "libri");
connessione.Close();
libriBindingSource.DataSource = mioDataSet;

libriDataGridView.DataSource = libriBindingSource;

libriDataGridView.Enabled = true;

// Visualizzo in textbox il numero di risultati ottenuti
textBox1.Text = mioDataSet.Tables[0].Rows.Count.ToString();
}


Il libriBindingSource viene creato da VisualStudio.