Salve, vorrei fare un file binario come fosse un database, con le sue chiamate INSERT INTO, SELECT , UPDATE, DELETE,
Mi dite come posso fare?
Il codice del file binario vi allego qui:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
namespace RubricaTelefonica
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void LoadFile (object sender, EventArgs e)
{
//richiama il metodo per l'impostazione
//del DataGridView
Imposta_DGV();
//controlla se il file esiste
if (File.Exists("Rubrica.rub"))
CaricaFile(); //se esiste carico il dgv con tutti i dati
//disabilita il bottone salva
btnSalva.Enabled = false;
}
private void Imposta_DGV()
{
//imposta il numero di campi per
//il DataGridView dgv
DGV.ColumnCount = 3;
//imposta le intestazioni dei 3 campi
DGV.Columns[0].Name = "Nome";
DGV.Columns[1].Name = "Numero";
DGV.Columns[2].Name = "Città";
}
private void CaricaFile()
{
//crea uno stream in lettura
FileStream fs = new FileStream("Rubrica.rub", FileMode.Open);
//crea un formattatore binario
BinaryFormatter binfor = new BinaryFormatter();
//carica nella matrice i dati contenuti nel file
string[,] griglia = (string[,])binfor.Deserialize(fs);
//chiudi lo stream
fs.Close();
//popola il dgv con i dati del file
for (int riga = 0; riga < griglia.GetLength(0) - 1; riga++)
{
//vettore temporaneo che contiene
//una riga alla volta della matrice
string[] tmp ={ griglia[riga, 0], griglia[riga, 1], griglia[riga, 2] };
//aggiungi il vettore al DataGridView
DGV.Rows.Add(tmp);
}
//imposta il testo del GroupBox
grpbDGV.Text = "Nella rubrica sono presenti " + (DGV.Rows.Count - 1) + " voci";
}
private void btnIns_Click(object sender, EventArgs e)
{
//vettore temporaneo che contiene i dati inseriti
string[] tmp ={ txtNome.Text, txtTel.Text, txtCitta.Text };
//aggiungilo al dgVDataGridView
DGV.Rows.Add(tmp);
//abilita il bottone Salva
btnSalva.Enabled = true;
//imposta il testo del GroupBox
grpbDGV.Text = "Nella rubrica sono presenti " + (DGV.Rows.Count - 1)
+ " voci";
//reimposta i tre textbox
txtNome.Text = "Cognome e nome";
txtTel.Text = "Numero di telefono";
txtCitta.Text = "Città";
}
private void btnSalva_Click(object sender, EventArgs e)
{
//conta quante righe possiede
//il DataGridView
int righe = DGV.Rows.Count;
//crea una matrice che conterrà i valori delle celle
string[,] griglia = new string[righe, 3];
//i due cicli annidati seguenti
//estraggono le informazioni dal DataGridView
//e le memorizzano nella matrice che poi
//sarà seralizzata
for (int riga = 0; riga < righe - 1; riga++)
for (int col = 0; col < 3; col++)
griglia[riga, col] = DGV.Rows[riga].Cells[col].Value.ToString();
//crea uno stream in modalità scrittura
FileStream fs = new FileStream("Rubrica.rub", FileMode.Create);
//crea il formattatore
BinaryFormatter binfor = new BinaryFormatter();
//serializza la matrice
binfor.Serialize(fs, griglia);
//chiudo il flusso
fs.Close();
//disabilita il pulsante
btnSalva.Enabled = false;
//ridisegna tutto il DataGridView
DGV.Update();
}
private void DGV_CellClick(object sender, DataGridViewCellEventArgs e)
{
//abilita il pulsante
//Salva
btnSalva.Enabled = true;
}
private void DGV_RowsRemoved(object sender, DataGridViewRowsRemovedEventArgs e)
{
//aggiorna il messaggio del controllo GroupBox grpBdgv
grpbDGV.Text = "Nella rubrica sono presenti " + (DGV.Rows.Count - 1) + " voci";
}
}
}
è una semplice rubrica che usa file binari .rub, ma vorrei prendere spunto per usare e creare programmi che non devono avere SQL Server, e MySql e Sql.Lite.
Ma vorrei crearmelo uno io leggero,piccolo, veloce e chiamato da una classe, "pearDB.cs"
Mi dite come fare?
grazie mille.
EDIT . SCUSATE MA HO SBAGLIATO SEZIONE. ...
ME LO POTETE SPOSTARE NELLA SEZIONE GIUSTA.