新手!请教各位老师!
各位老师,本人初学.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"
在主件在定义时测试通过! --------------------编程问答-------------------- 点点滴滴 --------------------编程问答-------------------- --------------------编程问答-------------------- 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