C# OracleParameter 使用问题

ayumilove 2012-05-24 10:24:55

StringBuilder strSql = new StringBuilder();

strSql.Append("insert into Order_Main( ");
strSql.Append("ORG_ID,UUID,CODE,SPEC_LIST_ID,BRAND_LIST_ID,XJFJ_LIST_ID,BARCODE,S_LOCATION_ID,D_LOCATION_ID,ADRESS,CONTACT1,PHONE1) ");
strSql.Append(" values ( ");
strSql.Append(":orguuid,:mainuuid,:code,:appoint_date,:spec_list_id,:brand_list_id,:xjfj_list_id,:barcode,:s_location_id,:d_location_id,:adress,:contact1,:phone1) ");

OracleParameter[] parameters = {
new OracleParameter( ":orguuid ",OracleType.Number,4),
new OracleParameter( ":mainuuid ", OracleType.Number,16),
new OracleParameter( ":code ", OracleType.NVarChar,100),
//new OracleParameter( ":appoint_date ", OracleType.DateTime),
new OracleParameter( ":spec_list_id ", OracleType.Number,16),
new OracleParameter( ":brand_list_id ", OracleType.Number,16),
new OracleParameter( ":xjfj_list_id ", OracleType.Number,16),
new OracleParameter( ":barcode ", OracleType.NVarChar,100),
new OracleParameter( ":s_location_id ", OracleType.NVarChar,100),
new OracleParameter( ":d_location_id ", OracleType.NVarChar,100),
new OracleParameter( ":adress ", OracleType.NVarChar,1000),
new OracleParameter( ":contact1 ", OracleType.NVarChar,100),
new OracleParameter( ":phone1 ", OracleType.NVarChar,100)};

parameters[0].Value = dt.Rows[i]["orguuid"];
parameters[1].Value = dt.Rows[i]["mainuuid"];
parameters[2].Value = dt.Rows[i]["code"];
//parameters[3].Value = dt.Rows[i]["appoint_date"];
parameters[3].Value = dt.Rows[i]["spec_list_id"];
parameters[4].Value = dt.Rows[i]["brand_list_id"];
parameters[5].Value = dt.Rows[i]["xjfj_list_id"];
parameters[6].Value = dt.Rows[i]["barcode"];
parameters[7].Value = dt.Rows[i]["s_location_id"];
parameters[8].Value = dt.Rows[i]["d_location_id"];
parameters[9].Value = dt.Rows[i]["adress"];
parameters[10].Value = dt.Rows[i]["contact1"];
parameters[11].Value = dt.Rows[i]["phone1"];
OracleHelper.ExecuteNonQuery(oradb, CommandType.Text, strSql.ToString(), parameters);


OracleHelper 是 从网上下载的
OracleHelper based on Microsoft Data Access Application Block (DAAB) for .NET
看 ExecuteNonQuery 好像支持这种用法
		/// <summary>
/// Execute an OracleCommand (that returns no resultset) against the specified OracleConnection
/// using the provided parameters.
/// </summary>
/// <remarks>
/// e.g.:
/// int result = ExecuteNonQuery(conn, CommandType.StoredProcedure, "PublishOrders", new OracleParameter("@prodid", 24));
/// </remarks>
/// <param name="connection">a valid OracleConnection</param>
/// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>
/// <param name="commandText">the stored procedure name or PL/SQL command</param>
/// <param name="commandParameters">an array of OracleParameters used to execute the command</param>
/// <returns>an int representing the number of rows affected by the command</returns>
public static int ExecuteNonQuery(OracleConnection connection, CommandType commandType, string commandText, params OracleParameter[] commandParameters)
{
//create a command and prepare it for execution
OracleCommand cmd = new OracleCommand();
PrepareCommand(cmd, connection, (OracleTransaction)null, commandType, commandText, commandParameters);

//finally, execute the command.
return cmd.ExecuteNonQuery();
}


运行代码时 提示 非法的变量名/编号

该怎么处理这个问题呢?

多谢指教
...全文
396 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
anzhiqiang_touzi 2012-05-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
我知道问题所在了,
只能说Oracle 太XXXXXXX了
变量名 内的 空格敏感
[/Quote]
ayumilove 2012-05-24
  • 打赏
  • 举报
回复
我知道问题所在了,
只能说Oracle 太XXXXXXX了
变量名 内的 空格敏感
ayumilove 2012-05-24
  • 打赏
  • 举报
回复
@ 我也试过了 不行啊
kingtami 2012-05-24
  • 打赏
  • 举报
回复
看起来可能就是:要改成@
ayumilove 2012-05-24
  • 打赏
  • 举报
回复
这个上面的 是SQL 的用例
http://blog.sina.com.cn/s/blog_60cd40150101021k.html

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧