using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Common;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using MS.Components.Data;
using MS.Components.Data.Base;
using MS.Components.Data.SQLServer;
using MS.Components.Data.Oracle;
using MS.Components.Data.ODBC;
using MS.Components.Data.OLEDB;
namespace MS.Components.Testing
{
/// <summary>
/// The functions implemented in this class are illustrations only.
/// </summary>
public partial class FormUsage : Form
{
public FormUsage()
{
InitializeComponent();
}
DataAccess da = null;
string conStr = "Data Source=172.30.136.6;Initial Catalog=ff_HuaWei;User ID=flexflow;Password=FF@cisco";
private static DataAccess _CreateDataSource(BackendType type)
{
DataAccess ret = null;
switch (type)
{
case BackendType.SQL: ret = new SQLServerDB(); break;
case BackendType.Oracle: ret = new OracleDB(); break;
case BackendType.Odbc: ret = new OdbcAccess(); break;
case BackendType.OleDb: ret = new OleDbAccess(); break;
}
return ret;
}
private void Init()
{
this.da = _CreateDataSource(BackendType.SQL);
}
// ********************* Connecting & Disconnecting *********************
private void Connect()
{
this.da.ConnectionString = conStr;
this.da.Connect(false);
// OR
if (this.da.Connect(conStr, true))
{
MessageBox.Show("successfull!");
}
;
// Note : The 憆econnect?parameter indicates whether any existing connection to be dropped and new connection to be created.
// When you specify false and there already an open connection available, then an exception will be generated.
}
private void Disconenct()
{
this.da.Disconnect();
}
// ********************* Retrieving Data *********************
private void GetData()
{
// 1. Basic data access with SQL statements
DataTable dt1 = this.da.GetData("SELECT * FROM Users");
// 2. Basic data access with SQL statements, passing an existing data table to be filled up with
DataTable dt2 = new DataTable();
this.da.GetData("SELECT * FROM Users", ref dt2);
// 3. Data access using DB commands.
DbCommand cmd1 = this._GenCommand();
DataTable dt3 = this.da.GetData(cmd1);
// 4. Data access using DB commands, , passing an existing data table to be filled up with
DbCommand cmd2 = this._GenCommand();
DataTable dt4 = new DataTable();
this.da.GetData(cmd2, ref dt4);
}
private void GetSingleValue()
{
// 1. Using commands
DbCommand cmd1 = this._GenCommand();
object o1 = this.da.GetSingleValue(cmd1);
// 2. Using direct SQL statement or procedure without parameters
object o2 = this.da.GetSingleValue("Query", CommandType.Text);
object o3 = this.da.GetSingleValue("Procedure", CommandType.StoredProcedure);
// 3. Using procedure with parameters
ParameterEngine pe = this._CreateParamEngine();
object o4 = this.da.GetSingleValue("Procedure", CommandType.StoredProcedure, pe);
}
// ********************* Executing Other Queries *********************
private void ExecuteNonQuery()
{
int result = 0;
// 1. Using commands
DbCommand cmd1 = this._GenCommand();
result = this.da.ExecuteNonQuery(cmd1);
// 2. Using direct SQL statement or procedure without parameters
result = this.da.ExecuteNonQuery("Query", CommandType.Text);
result = this.da.ExecuteNonQuery("Procedure", CommandType.StoredProcedure);
// 3. Using procedure with parameters
ParameterEngine pe = this._CreateParamEngine();
result = this.da.ExecuteNonQuery("Procedure", CommandType.StoredProcedure, pe);
// Checking error
if (result == DataAccess.ERROR_RESULT)
{
// Represents the last occured exception.
// LastException is available only for ExecuteNonQuery command.
// Data retrieval commands throws out the exceptions immediately.
throw this.da.LastException;
}
}
// ********************* DBCommand Generation *********************
private DbCommand _GenCommand()
{
// Direct SQL statements
DbCommand cmd1 = this.da.GenerateCommand("SELECT * FROM Users", CommandType.Text, null);
// Stored procedures
ParameterEngine pe = this._CreateParamEngine();
DbCommand cmd2 = this.da.GenerateCommand("spMyProcedure", CommandType.StoredProcedure, pe);
return null;
}
// ********************* Parameter Engine Creation *********************
private ParameterEngine _CreateParamEngine()
{
ParameterEngine pe = ParameterEngine.New(this.da);
// Specifying input parameters
pe.Add("param1", 1);
pe.Add("param1", DateTime.Now);
pe.Add("param1", "Hello");
// Specifying output parameter
pe.AddOutputParameter("OutParam1");
pe.AddOutputParameter("OutParam2", DbType.Int32, 4);
return pe;
}
// ********************* Retrieving Output Values From ParameterEngine *********************
private object _RetrieveOutputValue(ParameterEngine pe, string paramName)
{
object ret = pe.RetrieveOutputParameterValue(paramName);
return ret;
}
// ********************* Retrieving Output Values From ParameterEngine *********************
private void Transaction()
{
// Note : Only one transaction can be opened for a particular connection
// Begins a transaction on the existing connection
DbTransaction transaction = this.da.BeginTransaction();
// Commits the begun transaction
this.da.CommitTransaction();
// Rollbacks the changes made in the existing transaction
this.da.RollbackTransaction();
}
private void FormUsage_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
Init();
Connect();
}
}
}
聯(lián)系客服