对于Clob类型,String Literal太长了

时间:2013-06-20 10:21:32

标签: c# asp.net oracle clob

我有包含clob列的表。 我想将HTML数据保存到(c#)中。 当我保存时,我收到一个错误:String Literal太长。 我存储的字符串长度是8048个字符

任何人都可以帮助我吗? 提前致谢 表是:        CREATE TABLE tblhelp       (       网格长       )

 private string getHTML(GridView gv)
{
    StringBuilder sb = new StringBuilder();
    StringWriter textwriter = new StringWriter(sb);
    HtmlTextWriter htmlwriter = new HtmlTextWriter(textwriter);
    gv.RenderControl(htmlwriter);
    htmlwriter.Flush();
    textwriter.Flush();
    htmlwriter.Dispose();
    textwriter.Dispose();
    return sb.ToString();
}
public override void VerifyRenderingInServerForm(Control control)
{
    /* Confirms that an HtmlForm control is rendered for the specified ASP.NET
       server control at run time. */
    return;
}
protected void btnTest_Click(object sender, EventArgs e)
{
 //   string grid = getHTML(GridView1);
   TextBox7.Text = getHTML(GridView1);    
    OdbcConnection DbConnection1 = new OdbcConnection(con1);
    try
    {
        DbConnection1.Open();
        OdbcCommand DbCommand1 = DbConnection1.CreateCommand();
        //DbCommand1.CommandText = "UPDATE TBL_ITHELPDESK SET STATUS='"+ chkClosed.Text +"',CLOSED_BY='"+drpClosedBy.Text+"',CLOSED_ON=TO_DATE('"+txtClosedOn.Text.ToString().Trim()+"','MM-DD-YYYY')WHERE CALL_NO='" + txtCallNo.Text + "'";
        DbCommand1.CommandText = "insert into tblhelp(grid) values('" + TextBox7.Text.Replace("'", "''").Trim() + "')";
    TextBox7.Text=DbCommand1.CommandText.ToString();
        int t1 = DbCommand1.ExecuteNonQuery();
        if (t1 == 1)
        {
            DbConnection1.Close();

        }
        else
        {
        }
    }
    catch (Exception ex)
    {

    }
}

2 个答案:

答案 0 :(得分:2)

字符串文字限制为4000字节。如果您尝试将数据插入CLOB,您的代码将需要使用绑定变量并绑定LOB数据(由于与安全性和性能相关的许多其他原因,您应该这样做)。您获得的错误强烈暗示您正在执行类似于在包含要插入的文字数据的字符串中构建SQL语句的操作。

答案 1 :(得分:2)

使用命令参数:

try
{
    DbConnection1.Open();
    OdbcCommand DbCommand1 = DbConnection1.CreateCommand();
    DbCommand1.CommandText = "INSERT INTO tblhelp (grid) VALUES (?)";
    OdbcParameter param1 = new OdbcParameter("param1", OdbcType.VarChar);
    param1.Value = TextBox7.Text;
    DbCommand1.Parameters.Add(param1);
    Int32 t1 = DbCommand1.ExecuteNonQuery();
    if (t1 == 1)
    {
        DbConnection1.Close();
    }
    else
    {
    }
}
catch (Exception ex)
{
    //do something!
}