数据库插入问题()
请帮我看一下错在哪?,尤其是strSQL中的,"+@attname+","+@imgname+",该怎么写啊!
string strSQL="Insert Into t_jszg_info(info_content,Last_EditTime,info_attname,info_picname,User_name) Values('"+pinfo_content+"','"+pinfo_cratime+"',"+@attname+","+@imgname+",'"+pinfo_username+"')";
SqlCommand sqlCmd=new SqlCommand(strSQL,Cn);
if(attFile.PostedFile.ContentLength >0)
{
sqlCmd.Parameters["@attname"].Value=pinfo_attname.ToString();
}
else
{
sqlCmd.Parameters["@attname"].Value=System.DBNull.Value;
}
if (photoFile.PostedFile.ContentLength >0)
{
sqlCmd.Parameters["@imgname"].Value=pinfo_imgname.ToString();
}
else
{
sqlCmd.Parameters["@imgname"].Value=System.DBNull.Value;
}
sqlCmd.ExecuteNonQuery();
问题点数:30、回复次数:11Top
1 楼artak(甜葡萄)回复于 2006-03-21 17:31:57 得分 5
直接,@attname不要引号和加号了Top
2 楼dh20156(风之石)回复于 2006-03-21 17:35:36 得分 0
注意字段类型来应用不同的引用符号,如int直接用"+变量+",varchar则用单引号'"+变量+"',等等。Top
3 楼gragon(小鼠)回复于 2006-03-22 08:18:04 得分 0
我这两个字段都是VCHAR型的.我将前面的引号和加号去掉就报错.错误提示为:
此 SqlParameterCollection 中未包含带有 ParameterName“@attname”的 SqlParameter。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.IndexOutOfRangeException: 此 SqlParameterCollection 中未包含带有 ParameterName“@attname”的 SqlParameter。
源错误:
行 202: else
行 203: {
行 204: sqlCmd.Parameters["@attname"].Value=System.DBNull.Value;
行 205:
行 206: }
Top
4 楼jkflyfox(飞狐)回复于 2006-03-22 08:41:13 得分 5
string strSQL="Insert Into t_jszg_info(info_content,Last_EditTime,info_attname,info_picname,User_name) Values('"+pinfo_content+"','"+pinfo_cratime+"',@attname,@imgname,'"+pinfo_username+"')";
SqlCommand sqlCmd=new SqlCommand(strSQL,Cn);
Top
5 楼gragon(小鼠)回复于 2006-03-22 08:46:33 得分 0
我改成了楼上这么写的.可是运行时会报:
此 SqlParameterCollection 中未包含带有 ParameterName“@attname”的 SqlParameter。
的错误Top
6 楼Anders_lt(突破渴望)回复于 2006-03-22 08:54:47 得分 20
你要先把@attname 加入到 SqlParameterCollection 中然后再执行
string strSQL="Insert Into t_jszg_info(info_content,Last_EditTime,info_attname,info_picname,User_name) Values('"+pinfo_content+"','"+pinfo_cratime+"',@attname,@imgname,'"+pinfo_username+"')";
SqlCommand sqlCmd=new SqlCommand(strSQL,Cn);Top
7 楼gragon(小鼠)回复于 2006-03-22 09:08:26 得分 0
请问如何@attname 加入到 SqlParameterCollection 中?Top
8 楼pbwf(书生)回复于 2006-03-22 09:15:52 得分 0
楼主用的类似于存储过程那样的变量写法.多查一下这方面的东西.Top
9 楼gragon(小鼠)回复于 2006-03-22 09:20:07 得分 0
其实我的想法很简单.上传附件和图片,只是想如果有附件就写入附件的名称.如果没有就写入NULL到数据库.如果有更好的实现方法那就最好了Top
10 楼gragon(小鼠)回复于 2006-03-22 09:33:56 得分 0
问题解决了,谢谢突破渴望的方法.我先加进入就可以实现了.也谢谢大家Top
11 楼kent3721(Kent)回复于 2006-03-22 09:39:39 得分 0
这样设置参数就可以了:
arrparms[0] = new SqlParameter("@XmlString",SqlDbType.NText);
arrparms[0].Value = arrParam[0].Replace(">\r\n",">");
arrparms[1] = new SqlParameter("@SAPDoc_Type",SqlDbType.Char,2);
arrparms[1].Value = arrParam[1];
arrparms[2] = new SqlParameter("@PostingDate",SqlDbType.Char,10);
arrparms[2].Value = arrParam[2];
arrparms[3] = new SqlParameter("@CurrCode",SqlDbType.Char,3);
arrparms[3].Value = arrParam[3];
arrparms[4] = new SqlParameter("@Exc_Rate",SqlDbType.Decimal);
arrparms[4].Value = Convert.ToDecimal(arrParam[4]);
arrparms[5] = new SqlParameter("@Inv_Exch",SqlDbType.Decimal);
arrparms[5].Value = Convert.ToDecimal(arrParam[5]);
arrparms[6] = new SqlParameter("@InvoiceRemark",SqlDbType.NText);
arrparms[6].Value = arrParam[6];
Top




