Newsgroup: it.comp.www.asp
Titolo: accesso ai dati AS400 con ADO.NET

ciao a tutti,
avevo sviluppato un'applicazione in ASP che accede ai file del mio
AS400
(release 4.5.0) via WEB, utilizzando per la connessione al Data Base
il driver ODBC Client Access. i comandi per l'apertura del
collegamento sono:
<%
Db_Conn_Str = "dsn=[nome origine dati ODBC];uid=xxxxxx;pwd=yyyyyy"
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open Db_Conn_Str
%>
funzionava (funziona tuttora) perfettamente. Ma ho deciso di
riscrivere il tutto in .NET ....... è una settimana che non dormo !!!
Non c'è verso di fargli aprire la connessione usando 
ADO.NET
.
Qualcuno di voi sa darmi una mano ?

 Qualcuno di voi sa darmi una mano ?
prova con oledb... che dovrebbe anche essere piu' performante
questa e' la stringa di connessione:
oleDb.ConnectionString="Provider=IBMDA400;Data Source=AS400name;User
ID=userid;Password=psswd"
-- 
Lino Mari [mod - it.economia.e-commerce]
http://www.ebow.it
 - e-business on web!
http://www.dev2dev.it
 - La rete ha connesso nuove particelle - d2D004
Oggi, l'organigramma è fatto di link, non di gerarchie.
Il rispetto per la conoscenza vince su quello per l'autorità astratta.

Il l'ho fatta in 
ASP.NET
 via OLE-DB e funziona con alcune limitazioni:
1. Il driver Ole-Db del CA non supporta le transazioni
2. Il driver Ole-Db del CA non è in grado di leggere i campi impaccati
In ODBC non ho mai provato, ma se queste limitazioni non sono vincolanti per
ciò che devi fare, ti consiglio Ole-Db che è più performante.
Inoltre, se la tua ditta può investire un po' di soldi, puoi comprare il
provider 
ADO.NET
 della Hit-Software per interfacciamenti AS/400; non l'ho
provato ma mi hanno detto che funziona meglio della versione Ole-Db (sempre
della Hit) che già faceva meraviglie.
Il codie Ole-Db che utilizzo è il seguente:
Per istruzioni di tipo Query (SELECT):
Dim StrSQL as String
Dim StrConn as String
Dim dt as New DataTable()
Dim Query as OleDbDataAdapter
StrSQL ="SELECT * FROM tabella"
StrConn = "Provider=IBMDA400; Data Source=Tuo_Server; User ID=Tua_UserID;
Password=Tua_Password"
Try
'OleDbDataAdapter, passandogli String, String, invoca in modo autonomo
l'oggetto Connection
    Query= New OleDbDataAdapter (_StrSQL, _StrConn)
    Query.Fill (dt)
    [Qui il codice per utilizzare in DataTable]
Catch ex as Exception
    Response.Write(ex.message)
Finally
    Query.dispose
    dt.dispose
End Try
Per istruzioni di tipo NonQuery (INSERT, DELETE, UPDATE):
Dim StrSQL as String
Dim StrConn as String
Dim Connection as OleDbConnection
Dim Command as OleDbCommand
StrSQL ="SELECT * FROM tabella"
StrConn = "Provider=IBMDA400; Data Source=Tuo_Server; User ID=Tua_UserID;
Password=Tua_Password"
Try
    Connection= New OleDbConnection(StrConn)
    Connection.Open
    Command=New OleDbCommand(StrSQL, Connection)
    Command.ExecuteNonQuery()
Catch e As Exception
    Response.Write(ex.message)
Finally
    Command.dispose
    Connection.Close
    Connection.dispose
End Try
P.S.. se vuoi usare 
ODBC.NET
 e hai il Framework 1.0, te lo devi scaricare a
parte dal sito Microsoft.
Ciao,
Filippo

 Qualcuno di voi sa darmi una mano ?
Ciao,
io l'ho fatta in 
ASP.NET
 via OLE-DB e funziona con alcune limitazioni:


 Filippo
grazie, ma
ho provato anche con questa stringa, ma il compilatore mi da sempre errori :
  error BC30002: Tipo 'DataTable' non definito
  error BC30002: Tipo 'OleDbDataAdapter' non definito
Oltre all'SDK sul server devo installare qualcos'altro ?

 Oltre all'SDK sul server devo installare qualcos'altro ?
A occhio e croce direi che ti sei scordato di importarti i namespace nella
pagina 
ASP.NET
.
Se usi codice in-line (dentro la pagina .aspx) devi scrivere
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.OleDb" %>
Se usi il code behind
Imports System.Data
Imports System.Data.OleDb