ORA-01036: 非法的变量名/编号 问题,请教,thanks

xubinbin19881223 2012-09-29 09:29:07

// <summary>
/// 打开连接
/// </summary>
public static void Open()
{
if (conn.State != ConnectionState.Open)
{
conn.Open();
}
}

/// <summary>
/// 关闭连接
/// </summary>
public static void Close()
{
if (conn.State != ConnectionState.Closed)
{
conn.Close();
}
}

public static void HT_AddArticle(string title, string color, string lanmu1id, string lanmu3id, string keywords, string description, string url, string source, string thumbnail, string username,string content)
{
Open();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "insert into information1(TITLE, COLOR, LANMU1ID, LANMU3ID, KEYWORDS, DESCRIPTION, URL, SOURCE, THUMBNAIL, USERNAME1,THEDATE,CONTENT) " +
"values('" + title + "','" + color + "','" + Convert.ToInt16(lanmu1id) + "','" + Convert.ToInt16(lanmu3id) + "','" + keywords + "','" + description + "','" + url + "','" + source + "','" + thumbnail + "','" + username + "','" + DateTime.Now.ToString("yyyy-MM-dd") + "',:wj)";
cmd.Parameters.Add("wj", OracleType.Clob); //指定类型
cmd.Parameters["wj"].Value = content;
cmd.Connection = conn;
cmd.ExecuteNonQuery();
Close();
}
这个是插入的方法,总是报错ORA-01036: 非法的变量名/编号。

堆栈跟踪:


[OracleException (0x80131938): ORA-01036: 非法的变量名/编号
]
System.Data.OracleClient.OracleConnection.CheckError(OciErrorHandle errorHandle, Int32 rc) +304825
System.Data.OracleClient.OracleParameterBinding.Bind(OciStatementHandle statementHandle, NativeBuffer parameterBuffer, OracleConnection connection, Boolean& mustRelease, SafeHandle& handleToBind) +905
System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, Boolean needRowid, OciRowidDescriptor& rowidDescriptor, ArrayList& resultParameterOrdinals) +912
System.Data.OracleClient.OracleCommand.ExecuteNonQueryInternal(Boolean needRowid, OciRowidDescriptor& rowidDescriptor) +431
System.Data.OracleClient.OracleCommand.ExecuteNonQuery() +115
DAL.data.HT_AddArticle(String title, String color, String lanmu1id, String lanmu3id, String keywords, String description, String url, String source, String thumbnail, String username, String content) in D:\Projects\ASPNET\ASPNET\ling\DAL\data.cs:2229
admin_add_article.button_Click(Object sender, EventArgs e) in d:\Projects\ASPNET\ASPNET\ling\WebUI\czzazd_HT\add_article.aspx.cs:96
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565


另外每次插入报 ORA-01036: 非法的变量名/编号 错后,重新登录 ,也会报这个错。登录方法如下

登录方法:
public static DataSet HT_CheckAdminDL(string adminname, string pw)
{

Close();
Open();
cmd.CommandType = CommandType.Text;
cmd.CommandText = @"select * from admin where ADMIN=:name and PASSWORD=:mima";
cmd.Connection = conn;
cmd.Parameters.Add("name", OracleType.VarChar, 20); //指定类型
cmd.Parameters["name"].Value = adminname;
cmd.Parameters.Add("mima", OracleType.VarChar, 20); //指定类型
cmd.Parameters["mima"].Value = pw;
da.SelectCommand = cmd;
DataSet ds = new DataSet();
da.Fill(ds);
return ds;
Close();
}
...全文
1083 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xubinbin19881223 2012-09-29
  • 打赏
  • 举报
回复
都Parameter 也不对。。。 我用的是ORACLE 10G..

Open();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "insert into information1(TITLE, COLOR, LANMU1ID, LANMU3ID, KEYWORDS, DESCRIPTION, URL, SOURCE, THUMBNAIL,USERNAME,THEDATE,CONTENT) " +
"values(:info_title,:info_color,:info_lanmu1id,:info_lanmu3id,:info_keywords,:info_description,:info_url,:info_source,:info_thumbnail,:info_username,:info_time,:wj)";


cmd.Parameters.Add("info_title", OracleType.NVarChar); //指定类型
cmd.Parameters["info_title"].Value = title;

cmd.Parameters.Add("info_color", OracleType.NVarChar); //指定类型
cmd.Parameters["info_color"].Value = color;

cmd.Parameters.Add("info_lanmu1id", OracleType.Int16); //指定类型
cmd.Parameters["info_lanmu1id"].Value = Convert.ToInt16(lanmu1id);


cmd.Parameters.Add("info_lanmu3id", OracleType.Int16); //指定类型
cmd.Parameters["info_lanmu3id"].Value = Convert.ToInt16(lanmu3id); ;

cmd.Parameters.Add("info_keywords", OracleType.NVarChar); //指定类型
cmd.Parameters["info_keywords"].Value = keywords;


cmd.Parameters.Add("info_description", OracleType.NVarChar); //指定类型
cmd.Parameters["info_description"].Value = description;

cmd.Parameters.Add("info_url", OracleType.NVarChar); //指定类型
cmd.Parameters["info_url"].Value = url;

cmd.Parameters.Add("info_source", OracleType.NVarChar); //指定类型
cmd.Parameters["info_source"].Value = source;

cmd.Parameters.Add("info_thumbnail", OracleType.NVarChar); //指定类型
cmd.Parameters["info_thumbnail"].Value = thumbnail;

cmd.Parameters.Add("info_username", OracleType.NVarChar); //指定类型
cmd.Parameters["info_username"].Value = username;


cmd.Parameters.Add("info_time", OracleType.NVarChar); //指定类型
cmd.Parameters["info_time"].Value = DateTime.Now.ToString("yyyy-MM-dd");

cmd.Parameters.Add("wj", OracleType.Clob); //指定类型
cmd.Parameters["wj"].Value = content;

cmd.Connection = conn;
cmd.ExecuteNonQuery();

对了 我数据库的 有的类型VarChar2,OracleType 找不到 我都换成 NVarChar
[Quote=引用 1 楼 的回复:]
这。。。你都用 parameter 了,还拼什么字符串?

都用 Parameter 方式吧。

自己debug下,把运行时的sql,放到查询器里调试一下。
[/Quote]
跳动de指尖 2012-09-29
  • 打赏
  • 举报
回复
下边的代码就会造成 ORA-01036 非法的变量名/编号
C#代码
cmd.CommandText = "SELECT * FROM kk.kkyh WHERE id = @comboBox1 and password = @textBox1 ";

cmd.Parameters.Add("@comboBox1", OracleType.VarChar).Value = comboBox1.Text;
cmd.Parameters.Add("@textBox1", OracleType.VarChar).Value = textBox1.Text;

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

C#代码
cmd.CommandText = "SELECT * FROM kk.kkyh WHERE id = :comboBox1 and password = :textBox1 ";

cmd.Parameters.Add("comboBox1", OracleType.VarChar).Value = comboBox1.Text;
cmd.Parameters.Add("textBox1", OracleType.VarChar).Value = textBox1.Text;
机器人 2012-09-29
  • 打赏
  • 举报
回复
这。。。你都用 parameter 了,还拼什么字符串?

都用 Parameter 方式吧。

自己debug下,把运行时的sql,放到查询器里调试一下。

62,104

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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