none
Oracle与EnterpriseLibrary问题 RRS feed

  • 问题

  • 想往Oracle中插入数据,有下面两种写法:
    1、 DbCommand m_com = g_db.GetSqlStringCommand("insert into USER_DEPARTMENT(DEPARTID,DEPARTNAME,PARENTDEPID) values('55','" + this.TextBox1.Text + "','" + this.TreeView1.SelectedNode.Value + "')");
    是可以的,没有问题;

    2、 DbCommand m_com = g_db.GetSqlStringCommand("insert into USER_DEPARTMENT(DEPARTID,DEPARTNAME,PARENTDEPID) values(@DEPARTID,@DEPARTNAME,@PARENTDEPID)");
                g_db.AddInParameter(m_com, "@DEPARTID", DbType.String, "56");
                g_db.AddInParameter(m_com, "@DEPARTNAME", DbType.String, this.TextBox1.Text);
                g_db.AddInParameter(m_com, "@PARENTDEPID", DbType.String, this.TreeView1.SelectedNode.Value);
    报错:
    ORA-01036: 非法的变量名/编号。

    请问:发生错误的原因是什么?
    2008年8月13日 2:08

答案

全部回复

  • 这里没有环境,你可以按照下面的方法测试一下,另外检查是否有拼写错误

    测试1:

    DbCommand m_com = g_db.GetSqlStringCommand("insert into USER_DEPARTMENT(DEPARTID,DEPARTNAME,PARENTDEPID) values(?,?,?)");
    g_db.AddInParameter(m_com, "
    @DEPARTID", DbType.String, "56");
    g_db.AddInParameter(m_com, "
    @DEPARTNAME", DbType.String, this.TextBox1.Text);
    g_db.AddInParameter(m_com, "
    @PARENTDEPID", DbType.String, this.TreeView1.SelectedNode.Value);

    测试2:
    DbCommand m_com = g_db.GetSqlStringCommand("insert into USER_DEPARTMENT(DEPARTID,DEPARTNAME,PARENTDEPID) values(@DEPARTID,@DEPARTNAME,@PARENTDEPID)");
    g_db.AddInParameter(m_com, "DEPARTID", DbType.String, "56");
    g_db.AddInParameter(m_com, "DEPARTNAME", DbType.String, this.TextBox1.Text);
    g_db.AddInParameter(m_com, "PARENTDEPID", DbType.String, this.TreeView1.SelectedNode.Value);

    2008年8月15日 3:01
    版主
  • 2个测试都没通过,不过问题已经解决了,是因为Oracle不支持@,把@换成:就可以了,谢谢!
    2008年8月21日 1:01