[python] Fw: IronPython & ADO.NET

Pavel Reznicek pavel.jindrich na tiscali.cz
Středa Říjen 18 20:34:55 CEST 2006


Roman Miklos napsal(a):
> 
> Dobry den,
> 
> Skusal ste niekto pristup do databazy cez ADO.NET a IronPython?
> 
> Napr. toto citanie pomocou Readeru mi funguje:
> 
> ----- priklad -----
> ...
> ### Pouzitie ADO.NET
> import clr
> import System
> clr.AddReference("System.Data")
> import System.Data
> from System.Data.OleDb import OleDbConnection as dbconnection
> 
> # Connection String
> connectstr='PROVIDER=IBMDA400.DataSource.1;DATA SOURCE='+csebk+'; USER 
> ID='+userid+'; PASSWORD='+pwd
> 
> # Vytvorit spojenie
> dbcon=dbconnection(connectstr)
> dbcon.Open()
> 
> # Vytvorit SQL Command
> dbcmd = dbcon.CreateCommand()
> dbcmd.CommandText = "SELECT * FROM r000100T.r000270V"
> 
> # Citat data
> reader = dbcmd.ExecuteReader()
> 
> count=0
> while reader.Read():
>  count +=1        
>  print "%10s %10s %10s %10s" % (reader[0], reader[1], reader[2], 
> reader[3])        
> 
> print "pocet viet v tabulke je: %d" % count
> 
> # zavret reader
> reader.Close()
>    
> # Ukoncit spojenie
> dbcon.Close()
> ----- koniec prikladu -----
> 
> 
> 
> Ked ale skusim pouzit dataadapter a dataset, t.j. zhruba takto  
> 
> ----- priklad -----
> 
> ...
> from System.Data.OleDb import OleDbConnection as dbconnection
> from System.Data.OleDb import OleDbDataAdapter as dbdataadapter
> from System.Data import DataSet as dataset
> 
> # Connection String
> DSN='PROVIDER=IBMDA400.DataSource.1;DATA SOURCE='+csebk+'; USER 
> ID='+userid+'; PASSWORD='+pwd
> print DSN
> conn=dbconnection(DSN)
> conn.Open()
> 
> dataadapter = dbdataadapter("SELECT * FROM r000100T.r000270V", conn)
> #rs = System.Data.DataSet("MyDataSet")
> rs=dataset("MyDataSet")
> dataadapter.Fill(rs,"MyTable")
> #print rs
> row= rs.Tables(0).Rows(0)
> ...
> ----- koniec prikladu -----
> 
> dostanem na poslednom uvedenom riadku chybu
> "DataTableCollection object is not callable"
> 
> Mate niekto funkcny priklad jak pouzit DataSet v IronPythone?
> 
> Mgr. Ing. Roman MIKLÓŠ

Nemám funkční příklad, ale mám tip. Nikdy jsem nepracoval s 
IronPythonem, ale s .NETem a Pythonem ano. rs.Tables v posledním řádku 
je podle chybové hlášky typu DataTableCollection, což je kollekce 
tabulek. Vy se pokoušíte získat první tabulku z této kolekce. Čili je 
možné, že jste si jen popletl typ závorek. Pokud autoři IronPythonu dali 
typu DataTableCollection rozhraní standardní pythonové sekvence, měl by 
fungovat tento zápis:

row = rs.Tables[0].Rows[0]

Pavel Řezníček


Další informace o konferenci Python