This is an old revision of the document!


Development: ODBC Interface

Sample C# .NET Windows Program

The following is a very simple C# .NET Windows program that shows a basic connection to an Omnidex Environment and simple query processing.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Odbc;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace OdxOdbcNetDemo
{
  public partial class MainForm : Form
  {
    private OdbcConnection _connection;
 
    public MainForm()
    {
      InitializeComponent();
      tbHost.Text = "localhost";
      tbPort.Text = "7555";
    }
 
    private void buttonConnect_Click(object sender, EventArgs e)
    {
      if (string.IsNullOrEmpty(tbEnvironment.Text))
      {
        MessageBox.Show("Please enter Omnidex Environment Filename");
        return;
      }
      if (string.IsNullOrEmpty(tbHost.Text))
      {
        MessageBox.Show("Please enter Host");
        return;
      }
      if (string.IsNullOrEmpty(tbPort.Text))
      {
        MessageBox.Show("Please enter port number");
        return;
      }
 
      try
      {
        if (_connection != null)
        {
          if (_connection.State != ConnectionState.Closed)
            _connection.Close();
        }
        else
          _connection = new OdbcConnection();
 
        if (tbEnvironment.Text.StartsWith("DSN=") ||
            tbEnvironment.Text.StartsWith("FILEDSN="))
        {
          // connecting to an Omnidex environment file using a machine or file ODBC DataSource
          _connection.ConnectionString = tbEnvironment.Text;
        }
        else
        {
          // connecting to an Omnidex environment file without an ODBC DataSource
          _connection.ConnectionString = string.Format("DRIVER=OMNIDEX;ENV=[{0}:{1}]{2}",
            tbHost.Text, tbPort.Text, tbEnvironment.Text);
        }
 
        _connection.Open();
 
        MessageBox.Show("Connected");
      }
      catch (Exception ex)
      {
        MessageBox.Show(ex.Message);
      }
    }
 
    private void buttonExecute_Click(object sender, EventArgs e)
    {
      if (string.IsNullOrEmpty(tbSQL.Text))
        return;
 
      if (_connection == null || _connection.State != ConnectionState.Open)
      {
        MessageBox.Show("Not connected.");
        return;
      }
 
      // clear result grid
      if (dgvResult.DataSource != null)
        dgvResult.DataSource = null;
      else
      {
        dgvResult.Rows.Clear();
        dgvResult.Columns.Clear();
      }
 
      OdbcCommand cmd = null;
      OdbcDataReader reader = null;
      try
      {
        cmd = new OdbcCommand(tbSQL.Text, _connection);
 
        if (tbSQL.Text.StartsWith("SELECT", StringComparison.CurrentCultureIgnoreCase))
        {
          reader = cmd.ExecuteReader();
 
          DataTable dt = new DataTable();
          dt.Load(reader);
 
          dgvResult.DataSource = dt;
          dgvResult.ColumnHeadersVisible = true;
          dgvResult.AutoGenerateColumns = true;
          dgvResult.Refresh();
        }
        else
        {
          int count = cmd.ExecuteNonQuery();
 
          dgvResult.ColumnHeadersVisible = false;
          dgvResult.AutoGenerateColumns = false;
          dgvResult.Columns.Add(new DataGridViewTextBoxColumn());
          dgvResult.Rows.Add(string.Format("{0} row(s) affected", count));
        }
      }
      catch (Exception ex)
      {
        MessageBox.Show(ex.Message);
      }
      finally
      {
        if (reader != null)
          reader.Close();
      }
    }
 
    private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
    {
      try
      {
        if (_connection != null && _connection.State != ConnectionState.Closed)
          _connection.Close();
      }
      catch (Exception)
      { }
    }
  }
}

Additional Resources

See also:

 
Back to top
dev/odbc/sample_net.1422410331.txt.gz ยท Last modified: 2016/06/28 22:38 (external edit)