Zdaję sobie sprawę, że baza jest mało znana (zwłaszcza w Poslce).
Oczywiście podaję fragmewnt kodu odczytującego (dodam tylko że odczyt działa prawidłowo na bazach MSSQL, MySQL i MS Access (w tym ostatnim przypadku dostęp zarówno przez ODBC jak i OLE DB).
mamy tabelkę
CREATE TABLE test (pole TEXT);
pole typu TEXT jest odpowiednikiem CLOB (w przypadku Oracle-a) - do przechowywania długich strumieni tekstowych.
Fragment kodu odczytującego
using InterSystems.Data.CacheClient;
using MySql.Data.MySqlClient;
...
private IDbConnection createConnection(String db)
{
IDbConnection conn = null;
try
{
switch (db) // W zaleznosci od ustawnienia (zmienna db) wybieram okreslony sterownik do bazy danych
{
case "A1": // MS Access - ODBC - by source name.
conn = new OdbcConnection("dsn=baza_odbc;driverid=25;fil=MS Access;maxbuffersize=2048;pagetimeout=5");
break;
case "A2": // MS Access - ODBC - by file path.
conn = new OdbcConnection("Driver={Microsoft Access Driver (*.mdb)};Dbq=D:\\plik.mdb");
break;
case "A3": // MS Access - Microsoft Jet (OLE DB).
conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\plik.mdb");
break;
case "MS": // MSSQL
conn = new SqlConnection("Data Source=localhost;Initial Catalog=baza_mssql;User ID=uzytkownik;Password=haslo");
break;
case "MY": // MySQL
conn = new MySqlConnection("Data Source=serwer;Database=baza_mysql;User ID=uzytkownik;Password=haslo");
break;
case "CA": // InterSystems Cache
conn = new CacheConnection("Server=localhost;Port=1972;Namespace=baza_cache;Password=haslo;User ID=uzytkownik");
break;
}
conn.Open();
}
catch (Exception)
{
MessageBox.Show("nie można się połączyc");
conn = null;
}
return conn;
}
private void test()
{
IDbConnection conn = createConnection("CA");
if (conn != null)
{
IDbCommand cmd = conn.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT pole FROM test";
IDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
Object oValue = reader["pole"];
// do sth with oValue
}
}
}