FILE 'LEGGI.ASPX.CS'
(il codice che implementa la connessione al database)

using System;
using System.IO;
using System.Text;

using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.Odbc;

public partial class LeggiQuery : System.Web.UI.Page
{
struct RigaTabella
{
public int stato;
public Int32 rowid;
public string campo1;
public string campo2;
public string campo3;
public string campo4;
public string campo5;
};

static OdbcConnection cn = null;
static DataTable table = null;
static DataRow row = null;
static Int64 TotaleRighe = 1;
static Int32 IndexRighe = 0;
static Int32 NumeroRighe = 1;
static int statoMaschera = 0;
static int statoRecord = 0;
static RigaTabella[] recTe = new RigaTabella[1000000];

protected void Page_Load(object sender, EventArgs e)
{
//TextBox6.Text = TextBox6.Text + "Page Load";
Connessione();
}

protected void Connessione()
{
if (cn == null)
cn = new OdbcConnection("Dsn=anagrafe;database=anagrafe;opt ion=0;port=0;server=localhost;uid=root");
}

protected void PulisciMaschera()
{
TextBox1.Text = "";
TextBox2.Text = "";
TextBox3.Text = "";
TextBox4.Text = "";
TextBox5.Text = "";
TextBox6.Text = "";
TotaleRighe = 1;
IndexRighe = 0;
NumeroRighe = 1;
statoMaschera = 0;
statoRecord = 0;
recTe = new RigaTabella[1000000];
}

protected void PulisciCampiMaschera()
{
TextBox1.Text = "";
TextBox2.Text = "";
TextBox3.Text = "";
TextBox4.Text = "";
TextBox5.Text = "";
TextBox6.Text = "";
statoRecord = 0;
++TotaleRighe;
IndexRighe = (Int32) TotaleRighe - 1;
NumeroRighe = IndexRighe;
}

protected void EseguiQuery()
{
OdbcCommand cmd;
OdbcDataAdapter adapter;
DataSet dataset;
string QueryString;
string QueryCount;

QueryCount = "SELECT count(*) FROM anagrafe.nucleo_fam_e_convivenze";
QueryString = "SELECT `rowid`,`1`,`2`,`3`,`4`,`5` FROM anagrafe.nucleo_fam_e_convivenze";

dataset = new DataSet();
adapter = new OdbcDataAdapter(QueryCount, cn);
cmd = new OdbcCommand(QueryCount, cn);
statoMaschera = 0;

try
{
cn.Open();
}
catch
{
cn.Close();
cn.Open();
}

adapter.Fill(dataset); //l'errore me lo genera qui
table = dataset.Tables[0];
row = table.Rows[0];
TotaleRighe = (Int64)row[0];

cn.Close();
dataset.Dispose();
adapter.Dispose();
cmd.Dispose();

if (TotaleRighe > 0)
{
statoMaschera = 2;
IndexRighe = 0;
NumeroRighe = 1;

TextBox6.Text = "Record ritrovati: " + TotaleRighe.ToString();

dataset = new DataSet();
adapter = new OdbcDataAdapter(QueryString, cn);
cmd = new OdbcCommand(QueryString, cn);

try
{
cn.Open();
}
catch
{
cn.Close();
cn.Open();
}

adapter.Fill(dataset);
table = dataset.Tables[0];
row = table.Rows[0];

recTe[0].stato = 4;
recTe[0].rowid = (Int32) row[0];
recTe[0].campo1 = row[1].ToString();
recTe[0].campo2 = row[2].ToString();
recTe[0].campo3 = row[3].ToString();
recTe[0].campo4 = row[4].ToString();
recTe[0].campo5 = row[5].ToString();

statoRecord = 4;
TextBox1.Text = recTe[0].campo1;
TextBox2.Text = recTe[0].campo2;
TextBox3.Text = recTe[0].campo3;
TextBox4.Text = recTe[0].campo4;
TextBox5.Text = recTe[0].campo5;
}
else
{
TextBox6.Text = "Nessun record ritrovato";
}
}

protected void RecordPrecedente()
{
if (statoRecord > 0)
{
if (statoRecord == 1 || statoRecord == 2)
{
recTe[IndexRighe].stato = statoRecord;
recTe[IndexRighe].campo1 = TextBox1.Text;
recTe[IndexRighe].campo2 = TextBox2.Text;
recTe[IndexRighe].campo3 = TextBox3.Text;
recTe[IndexRighe].campo4 = TextBox4.Text;
recTe[IndexRighe].campo5 = TextBox5.Text;
}
--IndexRighe;
while (IndexRighe >= 0)
{
if (recTe[IndexRighe].stato == 3)
{
--IndexRighe;
continue;
}
--NumeroRighe;
TextBox1.Text = recTe[IndexRighe].campo1;
TextBox2.Text = recTe[IndexRighe].campo2;
TextBox3.Text = recTe[IndexRighe].campo3;
TextBox4.Text = recTe[IndexRighe].campo4;
TextBox5.Text = recTe[IndexRighe].campo5;
statoRecord = recTe[IndexRighe].stato;
TextBox6.Text = "Record N° " + NumeroRighe.ToString();
break;
}
if (IndexRighe < 0)
{
++IndexRighe;
TextBox6.Text = "Primo record";
}
}
else
{
if (TotaleRighe > 0)
{
--TotaleRighe;
--NumeroRighe;
--IndexRighe;
TextBox1.Text = recTe[IndexRighe].campo1;
TextBox2.Text = recTe[IndexRighe].campo2;
TextBox3.Text = recTe[IndexRighe].campo3;
TextBox4.Text = recTe[IndexRighe].campo4;
TextBox5.Text = recTe[IndexRighe].campo5;
statoRecord = recTe[IndexRighe].stato;
TextBox6.Text = "Record N° " + NumeroRighe.ToString();
}
}
}

protected void RecordSuccessivo()
{
if (statoRecord > 0)
{
if (statoRecord == 1 || statoRecord == 2)
{
recTe[IndexRighe].stato = statoRecord;
//recTe[IndexRighe].rowid = (Int32)row[0];
recTe[IndexRighe].campo1 = TextBox1.Text;
recTe[IndexRighe].campo2 = TextBox2.Text;
recTe[IndexRighe].campo3 = TextBox3.Text;
recTe[IndexRighe].campo4 = TextBox4.Text;
recTe[IndexRighe].campo5 = TextBox5.Text;
}
++IndexRighe;
if (IndexRighe > (TotaleRighe - 1))
{
PulisciCampiMaschera();
//++TotaleRighe;
//++NumeroRighe;
}
else
{
while (IndexRighe <= (TotaleRighe - 1))
{
if (recTe[IndexRighe].stato == 3)
{
++IndexRighe;
continue;
}
++NumeroRighe;
if (recTe[IndexRighe].stato == 0)
{
row = table.Rows[IndexRighe];
recTe[IndexRighe].stato = 4;
recTe[IndexRighe].rowid = (Int32) row[0];
recTe[IndexRighe].campo1 = row[1].ToString();
recTe[IndexRighe].campo2 = row[2].ToString();
recTe[IndexRighe].campo3 = row[3].ToString();
recTe[IndexRighe].campo4 = row[4].ToString();
recTe[IndexRighe].campo5 = row[5].ToString();
}
TextBox1.Text = recTe[IndexRighe].campo1;
TextBox2.Text = recTe[IndexRighe].campo2;
TextBox3.Text = recTe[IndexRighe].campo3;
TextBox4.Text = recTe[IndexRighe].campo4;
TextBox5.Text = recTe[IndexRighe].campo5;
statoRecord = recTe[IndexRighe].stato;
TextBox6.Text = "Record N° " + NumeroRighe.ToString();
break;
}
}
}
else
TextBox6.Text = "Prima devi valorizzare il campo";
}

protected void QueryClick(object sender, EventArgs e)
{
EseguiQuery();
}

protected void SalvaClick(object sender, EventArgs e)
{
OdbcCommand cmd;
string insertSQL;
string deleteSQL;
string updateSQL;

try
{
cn.Open();
}
catch
{
cn.Close();
cn.Open();
}

if (statoMaschera == 1)
{
RecordSuccessivo();
RecordPrecedente();
IndexRighe = 0;
while (IndexRighe < TotaleRighe)
{
if (recTe[IndexRighe].stato == 1)
{
insertSQL = "INSERT into anagrafe.nucleo_fam_e_convivenze (`1`,`2`,`3`,`4`,`5`) values ('" + recTe[IndexRighe].campo1 + "','" +
recTe[IndexRighe].campo2 + "','" +
recTe[IndexRighe].campo3 + "','" +
recTe[IndexRighe].campo4 + "','" +
recTe[IndexRighe].campo5 + "')";

cmd = new OdbcCommand(insertSQL, cn);
cmd.ExecuteNonQuery();
cmd.Dispose();
}
if (recTe[IndexRighe].stato == 2)
{
updateSQL = "UPDATE anagrafe.nucleo_fam_e_convivenze set `1` = '" + recTe[IndexRighe].campo1 + "'," +
"`2` = '" + recTe[IndexRighe].campo2 + "'," +
"`3` = '" + recTe[IndexRighe].campo3 + "'," +
"`4` = '" + recTe[IndexRighe].campo4 + "'," +
"`5` = '" + recTe[IndexRighe].campo5 + "' " +
"where `rowid` = " + recTe[IndexRighe].rowid;
cmd = new OdbcCommand(updateSQL, cn);
cmd.ExecuteNonQuery();
cmd.Dispose();
}
if (recTe[IndexRighe].stato == 3)
{
deleteSQL = "DELETE from anagrafe.nucleo_fam_e_convivenze where `rowid` = " + recTe[IndexRighe].rowid;
cmd = new OdbcCommand(deleteSQL, cn);
cmd.ExecuteNonQuery();
cmd.Dispose();
}

++IndexRighe;
}
EseguiQuery();
}
}

protected void CancellaClick(object sender, EventArgs e)
{
if (statoRecord == 2 || statoRecord == 4)
{
statoMaschera = 1;
statoRecord = 3;
recTe[IndexRighe].stato = statoRecord;
RecordSuccessivo();
}
}

protected void NextRecordClick(object sender, EventArgs e)
{
RecordSuccessivo();
}

protected void PreviousRecordClick(object sender, EventArgs e)
{
RecordPrecedente();
}

protected void NuovoRecordClick(object sender, EventArgs e)
{
PulisciCampiMaschera();
}