问题是这样的,我用ASP.NET做的网页。Oracle做数据库,想把大的字符存到数据表中,字段数据类型是CLOB。这个应该是可存储4GB的数据。可是插入超过4000字符时就出现ORA-01704: 字符串文字太长。是字符长度超出了正常的范围。我怎么解决这个问题,在网上也有同志遇到类似的问题。说是用变量和存储过程的方式可以解决。但我试过变量了,还是不行。存储过程对我初学Oracle者来说能力很有限。希望大家能帮我解决,我将不胜感激。我的插入代码是: string neirong = txtnr.Text.Trim();(要插入的内容)
string insertsql = "insert into news(newid,newbt,newnr)values(newid.nextval,'" + txtbt.Text.Trim() + "','" + neirong + "')";
dbzh.execsql(insertsql);(类里的方法)
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "", "<script>alert('添加成功!');</script>", false);
txtbt.Text = "";
txtnr.Text = "";
最好帮修改代码:谢谢!
string insertsql = "insert into news(newid,newbt,newnr)values(newid.nextval,'" + txtbt.Text.Trim() + "','" + neirong + "')";
dbzh.execsql(insertsql);(类里的方法)
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "", "<script>alert('添加成功!');</script>", false);
txtbt.Text = "";
txtnr.Text = "";
最好帮修改代码:谢谢!
看看这个对你有帮助没有,照官方的说法,需要绑定变量
OracleCommand cmd = Conn.CreateCommand();
cmd.CommandText = "insert into xx(id,test) values('" + id + "',:p1)";
OracleParameter p1 = new OracleParameter("p1", OracleType.Clob);
p1.Value = data; // data是一个变量,存储你要插入的字符串
cmd.Parameters.Add(p1);
cmd.ExecuteNonQuery();
采用这种方式能够正常插入。
OracleConnection con = new OracleConnection(dbcon.conn());
con.Open();
OracleCommand cmd = con.CreateCommand();
cmd.CommandText = "insert into news(newid,newbt,newnr) values(newid.nextval,'" + txtbt.Text.Trim() +"',:p1)";
OracleParameter p1 = new OracleParameter("p1", OracleType.Clob);
p1.Value = neirong;
cmd.Parameters.Add(p1);
cmd.ExecuteNonQuery();
con.Close();