插入到Oracle DB时无法使用字符串文字,想知道是否存在可以使用的绑定命令

时间:2018-07-31 12:57:10

标签: c# oracle

我正在尝试将行插入到oracle数据库中,该数据库包含具有单引号,双引号以及可能不允许的其他一些字符的字段。我已经尝试了以下方法:

internal int insertRomance(List<romance> romanceCopy)
    {
          string connect = "Data Source=DB;User ID=DBAPP;Password=*****;pooling=true;min pool size=5;Max Pool Size=60";
        string sql = "";

        foreach (romance r in romanceCopy)
        {
            sql = "Insert into TEXT_ITEM (VENDOR_ABBREV,VENDOR_MODEL,VENDOR_PART_NUM,SKU,PRODUCT_DES,WEB_DESCRIPTION,DEPARTMENT,ACLASS,DEPT_CLASS_DESC,PRICE,BILL_OUT_COST,WEIGHT,HEIGHT,WIDTH,ITEM_DEPTH,READY_TO_ASSEMBLE,LEAD_TIME) values ('" +
            r.VENDOR_ABBREV + "','" +
            r.VENDOR_MODEL + "','" +
            r.VENDOR_PART_NUM + "','" +
            r.SKU + "',q'{" +
            r.PRODUCT_DES + "}',q'{" +
            r.WEB_DESCRIPTION + "}','" +
            r.DEPARTMENT + "','" +
            r.ACLASS + "','" +
            r.DEPT_CLASS_DESC + "','" +
            r.PRICE + "','" +
            r.BILL_OUT_COST + "','" +
            r.WEIGHT + "','" +
            r.HEIGHT + "','" +
            r.WIDTH + "','" +
            r.ITEM_DEPTH + "','" +
            r.READY_TO_ASSEMBLE + "','" +
            r.LEAD_TIME + "');";
            int x = this.DataInsertX(sql, connect, 0);
        }
        throw new NotImplementedException();  //will fix this once I get the code running
    }


  public int DataInsertX(string sql, string connect, int appendFlag)
    {
        //for testing
        OracleTransaction objtrans = null;
        int LastID = 0;
        string query = sql;
        if (appendFlag == 1)
        {
            query += ";SELECT @@Identity;";
        }


        this.OpenX(connect);
        try
        {
            if (oConn2.State.ToString() == "Open")
            {
                objtrans = oConn2.BeginTransaction();
                OracleCommand cmd = new OracleCommand(query, oConn2);

                if (appendFlag == 1)
                {
                    LastID = this.ToInt(cmd.ExecuteScalar());
                }
                else
                {
                    cmd.ExecuteNonQuery();
                    LastID = 1;
                    objtrans.Commit();

                }
            }
            this.CloseX();
            return this.ToInt(LastID);
        }
        catch (Exception ex)
        {
            ex.Message.ToString();
            objtrans.Rollback();
            this.CloseX();
            return 0;
        }

问题是两个字段web_Description和product_description这两个字段都可能具有需要转义的字符(或者可能没有) 我的浪漫课基本上是桌子上各领域的一面镜子。这应该根据文档工作,但是我可能有一个较旧的Oracle版本,无法识别

q'{'Test's text}' 

转义命令。我一直在尝试查看是否有使用

绑定的任何文档
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;

但是文档有限,没有示例。我可以使用一些指导来指导一个好的文档,并提供有关绑定的良好示例,也可以是一个知道我应该研究什么的Oracle专家。更糟的是,我将只替换字符(即,将'$切换为'$),但我想尽可能避免这种情况,因为使用此表中存储的数据的个人必须确保还原符号< / p>

0 个答案:

没有答案