Please start any new threads on our new site at https://forums.sqlteam.com. We've got lots of great SQL Server experts to answer whatever question you can come up with.

 All Forums
 General SQL Server Forums
 New to SQL Server Programming
 C# query blob columns from Paradox database

Author  Topic 

j2bmw
Starting Member

3 Posts

Posted - 2010-10-15 : 07:05:28
Hi,
I need to read blob columns from Paradox database using c#. First, I tried using .Net Framework Data Provider for odbc. Here is my code:
  DataSet dsUsers = new DataSet();
string strQuery = "SELECT blobColumn FROM users";
dsUsers = GetNames(strQuery, "Driver={Microsoft Paradox Driver (*.db )}; Default Dir=<directory>;DBQ=<directory>");



  private DataSet GetNames(String strQuery, String strConnect)
{
DataSet dsNames = new DataSet();
try
{
OdbcConnection conOdbc = new OdbcConnection(strConnect);
OdbcCommand cmdOdbc = new OdbcCommand(strQuery, conOdbc);
OdbcDataAdapter odaOdbc = new OdbcDataAdapter(cmdOdbc);
odaOdbc.Fill(dsNames);
conOdbc.Open();
conOdbc.Close();
}
catch (OdbcException eExc)
{
}
catch (Exception eExc)
{
}
return dsNames;
}


The code failed to query the blob column. Note the Paradox driver version is 4.0. The error is:

Error code: -2146232009
Error msg: ERROR [07002] [Microsoft][ODBC Paradox Driver] Too few parameters. Expected 1.
Source: odbcjt32.dll

I can query non-blob columns of the table with the same code. Can you please tell me what the problem is? Is this the limitation of .Net Framework Data Provider for ODBC?

I also tried Microsoft OLE DB provider using the following code. There was also an error:
"No value given for one or more required parameters."
            System.Data.OleDb.OleDbConnection ParConn;
DataTable schemaTable;
ParConn = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\db;"+
"Extended Properties=Paradox 4.x; Persist Security Info=False");
System.Data.OleDb.OleDbCommand myCmd = new System.Data.OleDb.OleDbCommand();
System.Data.OleDb.OleDbDataReader myReader;
myCmd.CommandType = CommandType.Text;
myCmd.Connection = ParConn;
myCmd.CommandText = "SELECT blobColumn FROM users";
ParConn.Open();
myReader = myCmd.ExecuteReader(CommandBehavior.SequentialAccess);
schemaTable = myReader.GetSchemaTable();
ParConn.Close();


I noticed the following statement at http://msdn.microsoft.com/en-us/library/aa215269%28SQL.80%29.aspx:

When using the Microsoft OLE DB provider for ODBC with the SQL Server ODBC driver, all BLOB columns should be arranged after columns with other data types in a source rowset. You can use a SELECT statement to rearrange the BLOB columns to the end of the source rowset. The DTS Import/Export Wizard performs this operation automatically.

I tried placing the blob column after the other non-blob columns, I still got the same error.

I also tried "Import and Export Data" Wizard shipped with SQL Server Management studio. I couldn't import the table with blob columns.


Please help!
Thanks.

   

- Advertisement -