存储过程中列允许为空,但是插入出错!问题何在!在线等!! 这个不是存储过程的原因吧,估计是string.Format语句写错了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 string[] iName={ "p_id", "p_password", "p_postalcode", "p_address", };string[] iValue={ this.LblYjsId.Text.Trim(), this.TxtYjsPassWord.Text, this.TxtYjsName.Text.Trim(), this.TxtPostalcode.Text.Trim(), this.Txtaddress.Text.Trim(), this.TxtSjhm.Text.Trim() }; string[] oName={"p_out"};string[] oValue={""};ArrayList result=Oracle.NonQueryOracle(Oracle.getConnectstr(),"CS_YJS_UPDATE",iName,iValue,oName,oValue); if((string)result[1]=="") { script += @"<script language=javascript>window.alert('更新会员资料成功!');</script>"; } else { script += @"<script language=javascript>window.alert('"+(string)result[1]+"');</script>"; //暂时用于调试 } 先检查一下result的元素个数,异常发生在哪一行代码? 应该是这里的问题result[1],你就一个参数返回参数,应该是result[0],Oracle.NonQueryOracle函数里面有没有错误还不知道呢,去查一下吧。 result[0],我已经赋值了。result[1]是我的结果返回值。如果address的值不是空,更新就没有任何的问题。但是,如果address.Text="",就会出现错误!! public static ArrayList NonQueryOracle(string connectstr,string storeName,string[] inParameterName, string[] inParameter, string[] outParameterName,string[] outParameter) { ArrayList returns = new ArrayList(); //该方法的返回值, 该 ArrayList 的第一项一定是 执行的结果。 returns.Add("success"); OracleConnection myConnection = null; myConnection = new OracleConnection(connectstr); try { myConnection.Open(); } catch(Exception ee) { myConnection.Close(); myConnection.Dispose(); returns[0] = "false"; return returns; } OracleCommand myCommand = new OracleCommand(); myCommand.Connection = myConnection; //收集入参 for ( int i = 0; i< inParameter.Length ;i++) { OracleParameter p1 = new OracleParameter((string)inParameterName[i],OracleType.LongVarChar); p1.Direction=System.Data.ParameterDirection.Input; p1.Value = (string)inParameter[i]; myCommand.Parameters.Add(p1); } ArrayList outParameters = new ArrayList(); //收集出参 for ( int i = 0; i< outParameter.Length ;i++) { OracleParameter p2 = new OracleParameter((string)outParameterName[i], OracleType.VarChar,200); p2.Direction = System.Data.ParameterDirection.Output; myCommand.Parameters.Add(p2); outParameters.Add(p2); } myCommand.CommandType = System.Data.CommandType.StoredProcedure; myCommand.CommandText = storeName; try { myCommand.ExecuteNonQuery(); //收集出参的值,放入一个 ArrayList 中去 for ( int i=0;i<outParameters.Count;i++) { returns.Add( ((OracleParameter)outParameters[i]).Value.ToString().Trim() ); } } catch(Exception ee) { myCommand.Dispose(); myConnection.Close(); myConnection.Dispose(); returns[0] = ee.ToString() + ee.Source; return returns; } myCommand.Dispose(); myConnection.Close(); myConnection.Dispose(); returns[0] = "success"; return returns; } 异常发生在myCommand.ExecuteNonQuery(); 字段值不能赋值空串,要用null代替 我不太清楚在Oracle中字段值是否可以为空串...Sql Server中应该是可以的。问题应该在这里了。 C#模拟打开一个网页之后,怎么用C#代码模拟对网页的操作? 动态向数据库添加记录问题。 关于定义int类型的变量 我想把toolStrip1中按钮做大一点,怎么做哟? 多线程老是出现这样的错误,实在不行了,求救! 图片变色大概的方法是什么,鼠标经过触发事件 关于.dll文件的问题 三层结构中,多用户数据库访问时,如果一个用户在修改一个表的数据的时候其他用户不能查看信息,也就是在修改的时候给这个表加锁,直到解 怎样用javascript显示控件? 怎么向别的程序发送鼠标点击消息? 关于 FTP 及 木马 的问题。。。请各位高手指教 一个面向对象概念问题
"p_id",
"p_password",
"p_postalcode",
"p_address",
};
string[] iValue={
this.LblYjsId.Text.Trim(),
this.TxtYjsPassWord.Text,
this.TxtYjsName.Text.Trim(),
this.TxtPostalcode.Text.Trim(),
this.Txtaddress.Text.Trim(),
this.TxtSjhm.Text.Trim()
};
string[] oName={"p_out"};
string[] oValue={""};ArrayList result=Oracle.NonQueryOracle(Oracle.getConnectstr(),"CS_YJS_UPDATE",iName,iValue,oName,oValue);
if((string)result[1]=="")
{
script += @"<script language=javascript>window.alert('更新会员资料成功!');</script>";
}
else
{
script += @"<script language=javascript>window.alert('"+(string)result[1]+"');</script>"; //暂时用于调试
}
Oracle.NonQueryOracle函数里面有没有错误还不知道呢,去查一下吧。
{
ArrayList returns = new ArrayList(); //该方法的返回值, 该 ArrayList 的第一项一定是 执行的结果。
returns.Add("success"); OracleConnection myConnection = null; myConnection = new OracleConnection(connectstr);
try
{
myConnection.Open();
}
catch(Exception ee)
{
myConnection.Close();
myConnection.Dispose();
returns[0] = "false";
return returns;
} OracleCommand myCommand = new OracleCommand();
myCommand.Connection = myConnection;
//收集入参
for ( int i = 0; i< inParameter.Length ;i++)
{
OracleParameter p1 = new OracleParameter((string)inParameterName[i],OracleType.LongVarChar);
p1.Direction=System.Data.ParameterDirection.Input;
p1.Value = (string)inParameter[i];
myCommand.Parameters.Add(p1);
} ArrayList outParameters = new ArrayList(); //收集出参
for ( int i = 0; i< outParameter.Length ;i++)
{
OracleParameter p2 = new OracleParameter((string)outParameterName[i], OracleType.VarChar,200);
p2.Direction = System.Data.ParameterDirection.Output;
myCommand.Parameters.Add(p2);
outParameters.Add(p2);
}
myCommand.CommandType = System.Data.CommandType.StoredProcedure; myCommand.CommandText = storeName;
try
{
myCommand.ExecuteNonQuery(); //收集出参的值,放入一个 ArrayList 中去
for ( int i=0;i<outParameters.Count;i++)
{
returns.Add( ((OracleParameter)outParameters[i]).Value.ToString().Trim() );
}
}
catch(Exception ee)
{
myCommand.Dispose();
myConnection.Close();
myConnection.Dispose();
returns[0] = ee.ToString() + ee.Source;
return returns;
} myCommand.Dispose();
myConnection.Close();
myConnection.Dispose();
returns[0] = "success";
return returns;
}