C# oracle 参数传递的多种方式 留着复习

摘要:
=null){strSQLText.Append("StationId=:StationId,");param[1].Value=mBill.StationId;}if(mBill.BillBegin!=null){strSQLText.Append("BillBegin=:BillBegin,");param[2].Value=mBill.BillBegin;}if(mBill.BillEnd!=null){strSQLText.Append("BillEnd=:BillEnd,");param[3].Value=mBill.BillEnd;}if(mBill.SumCount!=null){strSQLText.Append("SumCount=:SumCount,");param[4].Value=mBill.SumCount;}if(mBill.DrawDate!=null){strSQLText.Append("DrawDate=:DrawDate,");param[5].Value=mBill.DrawDate;}if(mBill.IsConfirm!=null){strSQLTe

ORA-01036 非法的变量名/编号,(解决)

博客分类:

下边的代码就会造成 ORA-01036 非法的变量名/编号

C#代码收藏代码
  1. cmd.CommandText="SELECT*FROMkk.kkyhWHEREid=@comboBox1andpassword=@textBox1";
  2. cmd.Parameters.Add("@comboBox1",OracleType.VarChar).Value=comboBox1.Text;
  3. cmd.Parameters.Add("@textBox1",OracleType.VarChar).Value=textBox1.Text;

把SQL中的@改成:,把.Add中的@去掉,就正常了

C#代码收藏代码
  1. cmd.CommandText="SELECT*FROMkk.kkyhWHEREid=:comboBox1andpassword=:textBox1";
  2. cmd.Parameters.Add("comboBox1",OracleType.VarChar).Value=comboBox1.Text;
  3. cmd.Parameters.Add("textBox1",OracleType.VarChar).Value=textBox1.Text;

黑色头发http://heisetoufa.iteye.com

===============================================================

最近写程序,用EnterpriseLibrary往Oracle中插入数据,出现错误ORA-01036:非法的变量名/编号,代码如下:
DbConnection m_con = g_db.CreateConnection();
m_con.Open();
DbCommand m_com = g_db.GetSqlStringCommand("insert into USER_DEPARTMENT(DEPARTNAME,PARENTDEPID) values(@departname,@parentdepid)");
g_db.AddInParameter(m_com, "@departname", DbType.String, this.TextBox1.Text);
g_db.AddInParameter(m_com, "@parentdepid", DbType.String, this.TreeView1.SelectedNode.Value);
g_db.ExecuteNonQuery(m_com);
m_con.Close();
若换成
DbCommand m_com = g_db.GetSqlStringCommand("insert into USER_DEPARTMENT(DEPARTNAME,PARENTDEPID) values('" + this.TextBox1.Text + "','" + this.TreeView1.SelectedNode.Value + "')");
则没有问题,上网查也没找到解决办法,经过一番探索,终于找到原因了,Oracle中好象不支持@,把@换成:就可以了,代码如下:
DbConnection m_con = g_db.CreateConnection();
m_con.Open();
DbCommand m_com = g_db.GetSqlStringCommand("insert into USER_DEPARTMENT(DEPARTNAME,PARENTDEPID) values(:departname,:parentdepid)");
g_db.AddInParameter(m_com, ":departname", DbType.String, this.TextBox1.Text);
g_db.AddInParameter(m_com, ":parentdepid", DbType.String, this.TreeView1.SelectedNode.Value);
g_db.ExecuteNonQuery(m_com);
m_con.Close();
另外,Oracle中如果不用begin...end,SQL语句中不要有分号(;)。

========================================================

publicboolModifyDrawBill(MDrawBill mBill)
{
StringBuilder strSQLText
=newStringBuilder();
strSQLText.Append(
"update DrawBill set ");
OracleParameter[] param
=
{
newOracleParameter("PKID", OracleType.Int32),
newOracleParameter("StationId", OracleType.VarChar),
newOracleParameter("BillBegin", OracleType.VarChar),
newOracleParameter("BillEnd", OracleType.VarChar),
newOracleParameter("SumCount", OracleType.Int32),
newOracleParameter("DrawDate", OracleType.DateTime),
newOracleParameter("IsConfirm", OracleType.Int32),
newOracleParameter("AppUser", OracleType.NVarChar),
newOracleParameter("CheckUser", OracleType.NVarChar),
newOracleParameter("Memo", OracleType.NVarChar)
};
//@@lwd 20110803param[0].Value =mBill.PKID;
if(mBill.StationId !=null)
{
strSQLText.Append(
"StationId=:StationId,");
param[
1].Value =mBill.StationId;
}
if(mBill.BillBegin !=null)
{
strSQLText.Append(
"BillBegin=:BillBegin,");
param[
2].Value =mBill.BillBegin;
}
if(mBill.BillEnd !=null)
{
strSQLText.Append(
"BillEnd=:BillEnd,");
param[
3].Value =mBill.BillEnd;
}
if(mBill.SumCount !=null)
{
strSQLText.Append(
"SumCount=:SumCount,");
param[
4].Value =mBill.SumCount;
}
if(mBill.DrawDate !=null)
{
strSQLText.Append(
"DrawDate=:DrawDate,");
param[
5].Value =mBill.DrawDate;
}
if(mBill.IsConfirm !=null)
{
strSQLText.Append(
"IsConfirm=:IsConfirm,");
param[
6].Value =mBill.IsConfirm;
}
if(mBill.AppUser !=null)
{
strSQLText.Append(
"AppUser=:AppUser,");
param[
7].Value =mBill.AppUser;
}
if(mBill.CheckUser !=null)
{
strSQLText.Append(
"CheckUser=:CheckUser,");
param[
8].Value =mBill.CheckUser;
}
if(mBill.Memo !=null)
{
strSQLText.Append(
"Memo=:Memo,");
param[
9].Value =mBill.Memo;
}
if(strSQLText.ToString().EndsWith(","))
{
strSQLText
=strSQLText.Remove(strSQLText.ToString().Length -1, 1);
}
strSQLText.Append(
"where PKID=:PKID ");
returnOracleHelper.ExecuteNonQuery(OracleHelper.Connection_String, CommandType.Text, strSQLText.ToString(), param) >0;//提示“RA-01036: 非法的变量名/编号” }

==================================================

string sql = " select rownum as   logrow,Id,UserId,UserLogCategoryId,SystemLogCategoryId,Time,ReadT,Title,Content,Permission from LogT where UserId=:UserId and Title like :Title ";
if (Title == null) Title = "";
Title = "%" + Title + "%";
OracleParameter[] paras = new OracleParameter[] { new OracleParameter(":UserId", UserId) , new OracleParameter(":Title", Title)};
======================================================================================================

oracle中错误ORA-01036: 非法的变量名/编号

C#

public Result AddUser(UserEntity user)
{
Result result = new Result(true);
DbCommand dbCmd = db.GetSqlStringCommand("PK_TY_USER.INS_USER");
db.AddInParameter(dbCmd, "id", DbType.Int32, user.Id);
db.AddInParameter(dbCmd, "names", DbType.String, user.Name);
db.AddInParameter(dbCmd, "sex", DbType.String, user.Sex);
db.AddInParameter(dbCmd, "nav", DbType.String, user.Native_Place);
db.AddInParameter(dbCmd, "birday", DbType.DateTime, user.Birthday);
db.AddInParameter(dbCmd, "age", DbType.Int32, user.Age);
try
{
db.ExecuteNonQuery(dbCmd);
}
catch (Exception ex)
{

result.Success = false;
result.Error = ex;
throw ex;
}

return result;
}

oracle

procedure INS_USER(id in integer,names in varchar2,sex in varchar2,nav in varchar2,birday in date,age in integer) is
begin
insert into ty_user values(id,names,sex,nav,birday,age);
end;

oracle中测试能过

==========================================================================

最近写程序时,往Oracle中插入数据,出现错误ORA-01036:非法的变量名/编号,代码如下:

DbConnection conn = GetCon();
conn.Open();
DbCommand cmd = conn.CreateCommand();
string sqlrt= "insert into T_User(Id,Name,Password,E_Mail) VALUES(@id,@name,@password,@email)";

cmd.CommandText = sqlrt;
cmd.Parameters.Add(new SqlParameter("@id", Convert.ToInt32(txtId.Text)));
cmd.Parameters.Add(new SqlParameter("@name", txtName.Text));
cmd.Parameters.Add(new SqlParameter("@password", txtPassword.Text));
cmd.Parameters.Add(new SqlParameter("@email", txtEmail.Text));
int num = cmd.ExecuteNonQuery();
if (num > 0)
{
Response.Write("插入成功");
DataLoad();
}

解决方案是:

DbConnection conn = GetCon();
conn.Open();
DbCommand cmd = conn.CreateCommand();
string sqlrt= "insert into T_User(Id,Name,Password,E_Mail) VALUES(:id,:name,:password,:email)";

cmd.Parameters.Add(new OracleParameter(":id", Convert.ToInt32(txtId.Text)));
cmd.Parameters.Add(new OracleParameter(":name", txtName.Text));
cmd.Parameters.Add(new OracleParameter(":password", txtPassword.Text));
cmd.Parameters.Add(new OracleParameter(":email", txtEmail.Text));

在Oracle数据库中,参数替换不能使用"@",要使用":",将程序中的@替换成就可以解决这个问题了
==============================================================

免责声明:文章转载自《C# oracle 参数传递的多种方式 留着复习》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Latex插入Visio绘制的流程图当我读《体验引擎:游戏设计全景探秘》时我在想什么下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Oracle Forms Services Architecture

Oracle Forms Services Architecture Author:                         PTIAN(tianpan@gmail.com) Creation Date:            05/01/2012 Last Updated:              Version:             ...

kubelet全部参数整理

相关连接 #mem相关参数 https://github.com/kubernetes/community/blob/master/contributors/design-proposals/node/kubelet-eviction.md#enforce-node-allocatable https://www.cnblogs.com/breezey/...

Oracle分组查询

分组查询 分组函数 :group by 要分组的列名 对数据集合处理的函数,可以处理多行数据--5个分组函数--count --计数函数,用于数量的统计--sum 求和函数,对数据进行求和--avg 求评平均,对一组数据求平均值--min ,求最小值--max ,求最大值--分组函数,也叫统计函数,一般也做数据统计使用 例子:--查询出10部门的最高工资和...

【java开发系列】—— java输入输出流

前言   任何语言输入输出流都是很重要的部分,比如从一个文件读入内容,进行分析,或者输出到另一个文件等等,都需要文件流的操作。这里简单介绍下reader,wirter,inputstream,outputstream的使用方法。其实Apache commons里面有个方法IOUtils可是实现方便快捷的流拷贝,感兴趣的可以参考官方文档。   JAVA的...

linux oracle em的一些用法

一、乱码 1)分别备份ORACLE自带JRE和JDK下的当前字体配置文件(font.properties)cp ($ORACLE_HOME)或者/u01/app/oracle/product/10.2.0/db_1/jre/1.4.2/lib/font.properties ($ORACLE_HOME)或者/u01/app/oracle/product/1...

VBA 字符串处理

1 VBA中的字符串 2 VBA中处理字符串的函数     2.1 比较字符串     2.2 转换字符串     2.3 创建字符串     2.4 获取字符串的长度     2.5 格式化字符串     2.6 查找字符串     2.7 提取字符/字符串     2.8 删除空格     2.9 返回字符代码     2.10 返回数值代表的相应字符...