[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