当前位置:编程学习 > C#/ASP.NET >>

新手!请教各位老师!


各位老师,本人初学.NET。在编写程序过程中遇到了一个难题,无法从数据库在取数,不知道如何解决。代码如下:
结构:Oracle 10 G +C#

//以下是数据源

// oracleConn
// 
this.oracleConn.ConnectionString = "user id=sqlcx;data source=bygserp;password=sqlcx";
//                                
// oracleComm
// 
this.oracleComm.CommandType = System.Data.CommandType.StoredProcedure;
this.oracleComm.Connection = this.oracleConn;



try
{
string strsql;
strsql = "select F_shdw,sum(F_ZJ - F_KJ) - SUM((F_ZJ - F_KJ)*F_KZBL)  from jl.Z_IRON  where (f_shsj >=to_date('"+_riqi3+"','yyyy-mm-dd hh24:mi:ss')) and f_shsj < to_date('"+_riqi2+"','yyyy-mm-dd hh24:mi:ss')  and f_shdw is not null group by F_shdw";
oracleComm.CommandText = strsql;

oracleConn.Open();//问题好象是数据库打不开
                
//Label3.Text="yangjilei";
d1[0]="0";
d1[1]="0";
d1[2]="0";
d1[3]="0";
OracleDataReader myreader = oracleComm.ExecuteReader();             
int b = 0;

try
{
while(myreader.Read ())
{  
if (myreader.IsDBNull(0) )
{}
 
else

{

                    d2[b]=myreader.GetValue(0).ToString();
d1[b]=myreader.GetValue(0).ToString();
}

b++;

}
                       
myreader.Close();

}
catch


}       
oracleConn.Close();

                    

for(int d=0;d<=b;d++)
{
try
{
switch(d2[d].ToString())
{

//5031 炼钢一区铁水虚拟库 1001V91000000001FBAH
//5032 炼钢二区铁水虚拟库 1001V91000000001FBAI
//5029 铸管铁水虚拟库 1007V910000000000KJ6
//8020 生铁库 1002V910000000001BKI


case "1001V91000000001FBAH":sjrc2[47]= Convert.ToDecimal(d1[d]).ToString("f2");break;
case "1001V91000000001FBAI":sjrc2[48]= Convert.ToDecimal(d1[d]).ToString("f2");break;
case "1007V910000000000KJ6":sjrc2[49]= Convert.ToDecimal(d1[d]).ToString("f2");break;
default :sjrc2[50]=Convert.ToDecimal(d1[d]).ToString("f2");break;



}

}
catch
{}


}








}
catch
{


}

--------------------编程问答-------------------- TNS开了没? --------------------编程问答-------------------- 不知道,应该怎么打开?? --------------------编程问答-------------------- 服务打开了么 --------------------编程问答-------------------- 打开了,在.NET主介面进行设计时使用测试均通过. --------------------编程问答-------------------- this.oracleConn.ConnectionString = "user id=sqlcx;data source=bygserp;password=sqlcx";

这样的连接字符串可以用吗? --------------------编程问答-------------------- this.oracleConn.ConnectionString = "user id=sqlcx;data source=bygserp;password=sqlcx"

在主件在定义时测试通过! --------------------编程问答--------------------
引用 4 楼 jilei91 的回复:
打开了,在.NET主介面进行设计时使用测试均通过.
点点滴滴 --------------------编程问答-------------------- --------------------编程问答-------------------- this.oracleComm.CommandType = System.Data.CommandType.StoredProcedure;
你这边定义了 用存储过程作为 命令类型,那么
strsql = "select F_shdw,sum(F_ZJ - F_KJ) - SUM((F_ZJ - F_KJ)*F_KZBL) from jl.Z_IRON where (f_shsj >=to_date('"+_riqi3+"','yyyy-mm-dd hh24:mi:ss')) and f_shsj < to_date('"+_riqi2+"','yyyy-mm-dd hh24:mi:ss') and f_shdw is not null group by F_shdw";
//你这里怎么还用 sql语句? 应该写 存储过程的名称
oracleComm.CommandText = strsql; 应该改为: oracleComm.CommandText = "存储过程名称";
--------------------编程问答-------------------- 或者 你把this.oracleComm.CommandType = System.Data.CommandType.StoredProcedure;
这行代码去掉也可以 ,默认CommandType是 Text的 --------------------编程问答-------------------- 这样还是读不出来
string strsql;
strsql = "select F_shdw,sum(F_ZJ - F_KJ) - SUM((F_ZJ - F_KJ)*F_KZBL)  from Z_IRON  where (f_shsj >=to_date('"+_riqi3+"','yyyy-mm-dd hh24:mi:ss')) and f_shsj < to_date('"+_riqi2+"','yyyy-mm-dd hh24:mi:ss')  and f_shdw is not null group by F_shdw";
oracleComm.CommandText = strsql;
oracleConn.Open();                
              d1[0]="0";
d1[1]="0";
d1[2]="0";
d1[3]="0";
OracleDataReader myreader = oracleComm.ExecuteReader();             
int b = 0;

try
{
while(myreader.Read ())
{  
if (myreader.IsDBNull(0) )
{}
 
else

{

                          d2[b]=myreader.GetValue(0).ToString();
d1[b]=myreader.GetValue(0).ToString();
}

b++;

}
                 
       myreader.Close();

}
catch


}       
oracleConn.Close();

              

for(int d=0;d<=b;d++)
{
try
{
switch(d2[d].ToString())
{

//5031 炼钢一区铁水虚拟库 1001V91000000001FBAH
//5032 炼钢二区铁水虚拟库 1001V91000000001FBAI
//5029 铸管铁水虚拟库 1007V910000000000KJ6
//8020 生铁库 1002V910000000001BKI


case "1001V91000000001FBAH":sjrc2[47]= Convert.ToDecimal(d1[d]).ToString("f2");break;
case "1001V91000000001FBAI":sjrc2[48]= Convert.ToDecimal(d1[d]).ToString("f2");break;
case "1007V910000000000KJ6":sjrc2[49]= Convert.ToDecimal(d1[d]).ToString("f2");break;
default :sjrc2[50]=Convert.ToDecimal(d1[d]).ToString("f2");break;



}

}
catch
{}


}








}
catch
{


} --------------------编程问答-------------------- 额
你不是定义了用存储过程的?
this.oracleComm.CommandType = System.Data.CommandType.StoredProcedure;
怎么还在代码中用sql语句。
不然把
this.oracleComm.CommandType = System.Data.CommandType.StoredProcedure;改为this.oracleComm.CommandType = System.Data.CommandType.Text
--------------------编程问答-------------------- 就是不用上述代码功能也是用不了。从资料得知,.NET中的oracleConnection不支持ORACLE10i
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,