RaouL_BennetH
10-12-2007, 10:18
Ciao a tutti :)
Sto cercando di crearmi una classe generalizzata per le comuni operazioni sui db.
Al momento sono giunto a questo risultato (parziale)
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
namespace ClassUtil
{
public class DataBaseClass
{
private string connectionString = ConfigurationManager.ConnectionStrings["ClassUtil.Properties.Settings.dbConnectionString"].ToString();
private MySqlConnection cn;
private MySqlDataAdapter mda;
private MySqlCommand cmd;
private MySqlParameter[] p;
private int numberOfParameters;
private string commandString;
private int recordReturned;
private bool opState;
private string serverIp;
private int serverPort;
private string userId;
private string userPasswd;
private string databaseName;
public DataBaseClass()
{
}
#region connectionParameters
public string ServerIP
{
get
{
return serverIp;
}
set
{
serverIp = value;
}
}
public int ServerPort
{
get
{
return serverPort;
}
set
{
serverPort = value;
}
}
public string UserID
{
get
{
return userId;
}
set
{
userId = value;
}
}
public string UserPassw
{
get
{
return userPasswd;
}
set
{
userPasswd = value;
}
}
public string DatabaseName
{
get
{
return databaseName;
}
set
{
databaseName = value;
}
}
#endregion
#region DbCommandsProperties
public int NumberOfParameters
{
get
{
return numberOfParameters;
}
set
{
numberOfParameters = value;
}
}
public string CommandString
{
get
{
return commandString;
}
set
{
commandString = value;
}
}
public int GeneralQueryAction()
{
try
{
cmd = new MySqlCommand(commandString, cn);
recordReturned = cmd.ExecuteNonQuery();
cn.Close();
return recordReturned;
}
catch (MySqlException ex)
{
MessageBox.Show(ex.Message.ToString());
}
}
public void BindMyData(DataGridView d, BindingNavigator b)
{
try
{
mda = new MySqlDataAdapter(commandString, cn);
DataTable dt = new DataTable();
mda.Fill(dt);
BindingSource bs = new BindingSource();
bs.DataSource = dt;
b.BindingSource = bs;
d.DataSource = bs;
cn.Close();
}
catch (MySqlException ex)
{
MessageBox.Show(ex.Message.ToString());
}
}
#endregion
public void OpenConnection()
{
if (cn != null)
{
cn.Close();
}
try
{
using (cn = new MySqlConnection(connectionString))
{
cn.Open();
}
}
catch (MySqlException ex)
{
switch (ex.Number)
{
case 0:
break;
default:
break;
}
}
}
}
}
Il mio problema è questo:
Dato che spesso la cosa + comune alla quale si va incontro è di avere a che fare con dei forms sui quali sono presenti textbox, combobox etc..
Volevo astrarre questo concetto senza dovermi scrivere ogni volta una query per ogni operazione nel form, per questo ho pensato ad una proprietà "commandString" e ad un metodo "GeneralQueryAction".
Ora, volevo creare anche un metodo che:
1)Mediante una proprietà "NumeroDiParametri" mi contasse quanti oggetti di tipo textbox (per esempio) ci siano sul form;
2)Passare questo numero come lunghezza di un array di MySqlParameter.
Fatto questo, credo poi di saper utilizzare un metodo che inizializzi i parametri.
Grazie mille :)
RaouL.
Sto cercando di crearmi una classe generalizzata per le comuni operazioni sui db.
Al momento sono giunto a questo risultato (parziale)
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
namespace ClassUtil
{
public class DataBaseClass
{
private string connectionString = ConfigurationManager.ConnectionStrings["ClassUtil.Properties.Settings.dbConnectionString"].ToString();
private MySqlConnection cn;
private MySqlDataAdapter mda;
private MySqlCommand cmd;
private MySqlParameter[] p;
private int numberOfParameters;
private string commandString;
private int recordReturned;
private bool opState;
private string serverIp;
private int serverPort;
private string userId;
private string userPasswd;
private string databaseName;
public DataBaseClass()
{
}
#region connectionParameters
public string ServerIP
{
get
{
return serverIp;
}
set
{
serverIp = value;
}
}
public int ServerPort
{
get
{
return serverPort;
}
set
{
serverPort = value;
}
}
public string UserID
{
get
{
return userId;
}
set
{
userId = value;
}
}
public string UserPassw
{
get
{
return userPasswd;
}
set
{
userPasswd = value;
}
}
public string DatabaseName
{
get
{
return databaseName;
}
set
{
databaseName = value;
}
}
#endregion
#region DbCommandsProperties
public int NumberOfParameters
{
get
{
return numberOfParameters;
}
set
{
numberOfParameters = value;
}
}
public string CommandString
{
get
{
return commandString;
}
set
{
commandString = value;
}
}
public int GeneralQueryAction()
{
try
{
cmd = new MySqlCommand(commandString, cn);
recordReturned = cmd.ExecuteNonQuery();
cn.Close();
return recordReturned;
}
catch (MySqlException ex)
{
MessageBox.Show(ex.Message.ToString());
}
}
public void BindMyData(DataGridView d, BindingNavigator b)
{
try
{
mda = new MySqlDataAdapter(commandString, cn);
DataTable dt = new DataTable();
mda.Fill(dt);
BindingSource bs = new BindingSource();
bs.DataSource = dt;
b.BindingSource = bs;
d.DataSource = bs;
cn.Close();
}
catch (MySqlException ex)
{
MessageBox.Show(ex.Message.ToString());
}
}
#endregion
public void OpenConnection()
{
if (cn != null)
{
cn.Close();
}
try
{
using (cn = new MySqlConnection(connectionString))
{
cn.Open();
}
}
catch (MySqlException ex)
{
switch (ex.Number)
{
case 0:
break;
default:
break;
}
}
}
}
}
Il mio problema è questo:
Dato che spesso la cosa + comune alla quale si va incontro è di avere a che fare con dei forms sui quali sono presenti textbox, combobox etc..
Volevo astrarre questo concetto senza dovermi scrivere ogni volta una query per ogni operazione nel form, per questo ho pensato ad una proprietà "commandString" e ad un metodo "GeneralQueryAction".
Ora, volevo creare anche un metodo che:
1)Mediante una proprietà "NumeroDiParametri" mi contasse quanti oggetti di tipo textbox (per esempio) ci siano sul form;
2)Passare questo numero come lunghezza di un array di MySqlParameter.
Fatto questo, credo poi di saper utilizzare un metodo che inizializzi i parametri.
Grazie mille :)
RaouL.