SaltyDawg
asked on
C# App not working in Windows 2000
I have an application written in C# using Microsoft Visual Studio 2005 Professional Edition Version 8.0.50727.762 (SP.050727-7600) AND Microsft .NET Framework Version 2.0.50727 SP1.
The app works on all the XP and Vista Machines but not on the 2000 Machines. Unfortunately upgrading the OS is not an option right now.
============
Microsoft Windows 2000
5.00.2195
Service Pack 4
============
When starting the application it prompts the user to scan there user id. On Return button click I get this error: (SEE Attached Text file "DEBUG.txt").
I can see that there is a problem where the app tries to access the database. (SEE Coded text below for my ODBC connection).
Are there any specific configurations that must be setup for the 2000 Machines?
Thanks any help here would be appreciated.
The app works on all the XP and Vista Machines but not on the 2000 Machines. Unfortunately upgrading the OS is not an option right now.
============
Microsoft Windows 2000
5.00.2195
Service Pack 4
============
When starting the application it prompts the user to scan there user id. On Return button click I get this error: (SEE Attached Text file "DEBUG.txt").
I can see that there is a problem where the app tries to access the database. (SEE Coded text below for my ODBC connection).
Are there any specific configurations that must be setup for the 2000 Machines?
Thanks any help here would be appreciated.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace ShippingTrackingSystem
{
class clsMySqlODBCConnection
{
public int QueryType = 0;
public System.Data.Odbc.OdbcConnection OdbcCon;
public System.Data.Odbc.OdbcCommand OdbcCom;
public System.Data.Odbc.OdbcDataReader OdbcDR;
public string ConStr;
//
private string MySqlServer = "MydbServer";
private string MySqlPort = "MydbPort";
private string MySqlDatabase = "MydbName";
private string MySqlUser = "MydbUser";
private string MySqlUserPass = "MydbPass";
private string MySqlOption = "MydbOption";
//
public clsMySqlODBCConnection()
{
ConStr = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=" + MySqlServer + ";PORT=" + MySqlPort + ";DATABASE=" + MySqlDatabase + ";UID=" + MySqlUser + ";PWD=" + MySqlUserPass + ";OPTION=" + MySqlOption + "";
OdbcCon = new System.Data.Odbc.OdbcConnection(ConStr);
try
{
//txtLog.AppendText("Openning connection...\r\n");
if (OdbcCon.State == ConnectionState.Closed)
{
OdbcCon.Open();
}
//txtLog.AppendText("Connection opened\r\n");
//MessageBox.Show("Connection opened\r\n");
}
catch (System.Data.Odbc.OdbcException Ex)
{
//txtLog.AppendText(Ex.Message + "\r\n");
//MessageBox.Show("Could not access the database.\r\nPlease make sure you completed the fields with the correct information and try again.\r\n\r\nMore details:\r\n" + Ex.Message, "Database connection error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
public void MySqlDisconnection()
{
if (OdbcCon.State == ConnectionState.Open)
{
OdbcCon.Close();
//MessageBox.Show("Connected Closed\r\n");
}
}
public void ShowTables()
{
if (OdbcCon.State == ConnectionState.Open)
{
OdbcCom = new System.Data.Odbc.OdbcCommand("SHOW TABLES", OdbcCon);
OdbcDR = OdbcCom.ExecuteReader();
//txtLog.AppendText("Tables inside " + txtDatabase.Text + ":\r\n");
while (OdbcDR.Read())
{
//txtLog.AppendText(">> " + OdbcDR[0] + "\r\n");
}
}
}
public string[] MySQLQuery(string qry, int fldidx)
{
List<string> list = new List<string>();
string tStr = null; // the following is not needed: = Convert.ToString(null);
if (OdbcCon.State == ConnectionState.Open)
{
OdbcCom = new System.Data.Odbc.OdbcCommand(qry, OdbcCon);
if (fldidx >= 0)
{
OdbcDR = OdbcCom.ExecuteReader();
while (OdbcDR.Read())
{
tStr = Convert.ToString(OdbcDR[fldidx]);
list.Add(tStr);
}
}
else
{
OdbcCom.ExecuteNonQuery();
QueryType = 1;
}
}
return list.ToArray();
}
public IDataReader MySQLQuery(string qry)
{
if (OdbcCon.State == ConnectionState.Open)
{
OdbcCom = new System.Data.Odbc.OdbcCommand(qry, OdbcCon);
OdbcDR = OdbcCom.ExecuteReader();
}
return OdbcDR;
}
public void MySQLNONQuery(string qry)
{
if (OdbcCon.State == ConnectionState.Open)
{
OdbcCom = new System.Data.Odbc.OdbcCommand(qry, OdbcCon);
OdbcCom.ExecuteNonQuery();
QueryType = 1;
}
}
public object InitializeCnnObject()
{
// Create and initilize a recordset to represent the User Table
clsMySqlODBCConnection OpenConnection = new clsMySqlODBCConnection();
return OpenConnection;
}
}
}
DEBUG.txt
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
I checked everything. All my variables have the correct data including my query string. It seems to fail at: OpenConnection.MySQLQuery( strQry);
Again everything seems to work fine on XP and Vista so that's why I summized it being an issue with 2000. I am not sure if it's an configuration problem in 2000 or with the ODBC configuration or a .NET problem in 2000. Currently .NET version 2.0.50727 is installed
Again everything seems to work fine on XP and Vista so that's why I summized it being an issue with 2000. I am not sure if it's an configuration problem in 2000 or with the ODBC configuration or a .NET problem in 2000. Currently .NET version 2.0.50727 is installed
ASKER
I found the issue. It was the ODBC. Turns out I did need the MySQL Connector/ODBC updated drivers for Win2000/NT. These were installed and now everything works.
Thanks
Thanks
ASKER
in the statement:
if (OdbcCon.State == ConnectionState.Open)
OdbcCon.State was closed therefore returning a NULL to OdbcDR.
Thanks for all your help
if (OdbcCon.State == ConnectionState.Open)
OdbcCon.State was closed therefore returning a NULL to OdbcDR.
Thanks for all your help
public IDataReader MySQLQuery(string qry)
{
if (OdbcCon.State == ConnectionState.Open)
{
OdbcCom = new System.Data.Odbc.OdbcCommand(qry, OdbcCon);
OdbcDR = OdbcCom.ExecuteReader();
}
return OdbcDR;
}
ASKER
Thanks. I split the points but since Qlemo was closer and his post actually led me to coming to the solution I gave him more.
ASKER
Open in new window