我的程序出错了,大家帮忙呀
我以前是用的拼Sql的方法来对数据库进行操作,现在要改成传参数的方式,就是这样的
以前:OracleConnection conn = new OracleConnection(DataString);
OracleCommand cmd = new OracleCommand(Sql,conn);
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.Connection.Close();
现在:Sql中有参数
OracleConnection conn = new OracleConnection(DataString);
OracleCommand cmd = new OracleCommand(Sql,conn);
cmd.Parameters.Add(PName[i],OracleType.Number);
cmd.Parameters[PName[i]].Value = PValue[j];//这里只写了一个参数,旨在说明方法,实际的程序中i是自增变量,通过循环,把所有的参数附值,Sql中已经通过参数的数组把参数传了进去。
cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.Connection.Close();
我现在要解决的问题:
1、如何通过上面第二种方式(既传参数的方式)把空值传入Oracle数据库中,好像DBNull.Value不行
2、参数传递过程中,对参数的要求,如OracleType.Varchar类型是对应字符串
3、加参数时对参数的长度要求,我只会在整数时控制,但是到了有小数的时候,怎么控制
问题点数:100、回复次数:14Top
1 楼shiningpolarstar(闪亮的北极星)回复于 2004-09-03 13:59:44 得分 10
一楼顶Top
2 楼fangbuge(窗外的雨)回复于 2004-09-03 14:05:11 得分 5
Oracle没用过Top
3 楼vzxq(灵感人)回复于 2004-09-03 14:17:33 得分 5
用存储过程(在存储过程中给参数默认值)Top
4 楼xinyulou(心雨楼)回复于 2004-09-03 14:17:43 得分 5
用分支!Top
5 楼xiedan79(Sam Xie)回复于 2004-09-03 14:21:02 得分 5
第三点你可以试试用“正则表达式”Top
6 楼Iamastar(我爱我老婆)回复于 2004-09-03 14:23:12 得分 0
各位,这是一个认真的问题,请大家帮忙呀Top
7 楼goody9807(http://goody9807.cnblogs.com)回复于 2004-09-03 14:27:58 得分 25
1、如何通过上面第二种方式(既传参数的方式)把空值传入Oracle数据库中,好像DBNull.Value不行
用null行吗
private SqlCommand CreateCommand(string procName, SqlParameter[] prams) {
// make sure connection is open
Open();
//command = new SqlCommand( sprocName, new SqlConnection( ConfigManager.DALConnectionString ) );
SqlCommand cmd = new SqlCommand(procName, con);
cmd.CommandType = CommandType.StoredProcedure;
// add proc parameters
if (prams != null) {
foreach (SqlParameter parameter in prams)
cmd.Parameters.Add(parameter);
}
// return param
cmd.Parameters.Add(
new SqlParameter("ReturnValue", SqlDbType.Int, 4,
ParameterDirection.ReturnValue, false, 0, 0,
string.Empty, DataRowVersion.Default, null));
return cmd;
}Top
8 楼Iamastar(我爱我老婆)回复于 2004-09-03 14:40:33 得分 0
TO:goody9807()
SqlServer的空值用DBNull.Value是可以的,我以前试过,可我现在用的是Oracle,有点不一样Top
9 楼pgwron(情伤无痕)回复于 2004-09-03 15:02:22 得分 5
心情很不好,没分也顶Top
10 楼morality(业精于勤,行成于思!)回复于 2004-09-03 15:44:11 得分 5
Oracle没有用过,帮你顶一下Top
11 楼noahart(八卦小子)回复于 2004-09-03 17:18:47 得分 20
1.
public void CreateOracleParameter()
{
OracleParameter myParameter = new OracleParameter("DName", OracleType.VarChar, 14);
myParameter.IsNullable = true;
//你加这句试试;你那个字段是否设了不能空?DBNull.Value没问题
myParameter.Direction = ParameterDirection.Output;
。。。
}Top
12 楼noahart(八卦小子)回复于 2004-09-03 17:23:55 得分 0
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdataoracleclientoracletypeclasstopic.aspTop
13 楼shenghuayi(oldman)回复于 2004-09-03 17:30:37 得分 10
OracleConnection conn = new OracleConnection(DataString);
//conn.Open();
OracleCommand cmd = new OracleCommand(Sql,conn);
//cmd.CommandType = CommandType.StoredProcedure;Top
14 楼wangdequan1024(紫夜)回复于 2004-09-03 17:37:23 得分 5
关注Top




