.net+oracle+crystalReports开发web应用程序学习笔记(二)
2024-07-10 12:59:22
供稿:网友
上次提到基本的配置注意问题,现在开始实际开发oracle中的问题
一 oracle 数据库的连接
但你装了oracle的客户端,在配置时就已经指定了数据库服务器,所以连接时主要由三个元素就可以连接上数据库,数据库的名称(即sid),用户名,密码
sqlconnection con=new sqlconnection("provider=msdaora.1;user id=userid;data source=xf;password=password")
而sql server不需要安装客户端,所以必须指定服务器,和数据库名
sqlconnection con=new sqlconnection("workstation id=xiaofeng;packet size=4096;user id=sa;integrated security=sspi;data source=xiaofeng;persist security info=false;initial catalog=xf");
二 在oracle中运行包(package)中的函数和存储过程。
举个例子,要运行下面一个sql语句:"select order_no,inventory_part_api.get_description(contract,part_no),part_no from shop_ord where inventory_part_api.get_description(contract,part_no) like '%喜之郎25%果冻%'";
1.在.net设计中(如设计sqldataadapter)不能够直接使用包中的函数和存储过程,如果要使用,可以在设计时把包中要使用的函数和存储过程copy过来再设计时声明一遍,就可以使用
2.在.net运行时直接添加代码,系统会直接去寻中包中的内容
string strcommand;
strcommand="select order_no,inventory_part_api.get_description(contract,part_no),part_no from shop_ord where inventory_part_api.get_description(contract,part_no) like '%喜之郎25%果冻%'";
oledbconnection con=new oledbconnection("provider=msdaora.1;password=password;user id=userid;data source=xf");
con.open();
oledbdataadapter adapter=new oledbdataadapter(strcommand,con);
dataset dataset = new dataset();
adapter.fill(dataset);
this.datagrid1.datasource=dataset;
datagrid1.databind();
con.close();
3.怎么使用存储过程
oracleconnection conn = new oracleconnection("data source=oracle8i;integrated security=yes");
conn.open;
oraclecommand cmd = conn.createcommand();
cmd.commandtext = "sp_pkg.getdata";
cmd.commandtype = commandtype.storedprocedure;
cmd.parameters.add(new oracleparameter("a1", oracletype.cursor)).direction = parameterdirection.output;
cmd.parameters.add(new oracleparameter("a2", oracletype.cursor)).direction = parameterdirection.output;
dataset ds = new dataset();
oracledataadapter adapter = new oracledataadapter(cmd);
adapter.fill(ds);