oracle的insert语句clob,.Net 操作 Oracle CLOB类型字段 INSERT 超长数据
如果僅僅在數據庫中設置了類型為 CLOB 字段類型,使用普通的 INSERT 語句直接寫入數據到數據庫的話,它依然會將其視為 VARCHAR 類型數據,并最大長度為 4000 字符。超過該長度會報出字符串超長,寫入數據失敗的錯誤。
使用 Dapper 處理 CLOB 數據 INSERT
代碼如下:
OracleConnection cnn = new OracleConnection("..數據庫鏈接字符串..");
cnn.Open();
string content = "假定超過4000的超長字符串";
byte[] newValue = Encoding.Unicode.GetBytes(content); //這里一定要使用 Unicode 字符編碼
OracleClob p_content = new OracleClob(cnn);
p_content.Write(newValue, 0, newValue.Length);
string sql = "INSERT INTO TABLE(CONTENT) VALUES(:content)";
DynamicParameters parameter = new DynamicParameters();
parameter.Add("content", p_content);
cnn.Execute(sql, parameter);
cnn.Close();
其實跟 Dapper 也沒多大關系,在 .Net 中的 Oracle CLOB 需要以上特殊處理下,否則 Dapper 會將其視為普通字符串類型寫入。
敲重點,如何 UPDATE CLOB 字段類型的數據
本來沒有這一節文章內容的,我認為像 INSERT 同樣的方式創建 SQL 參數傳入就好了。實際上并不是,UPDATE 需要跟以往同樣的方式,直接 string 傳參就可以了,以下參考:
OracleConnection cnn = new OracleConnection("..數據庫鏈接字符串..");
cnn.Open();
string content = "假定超過4000的超長字符串";
string sql = "UPDATE TABLE SET CONTENT = :content WHERE ID = :id";
DynamicParameters parameter = new DynamicParameters();
parameter.Add("id", 10001);
parameter.Add("content", content);
cnn.Execute(sql, parameter);
cnn.Close();
你沒看錯,它不需要再轉換為 OracleClob 對象參數了,轉換了反而會報錯。
總結
以上是生活随笔為你收集整理的oracle的insert语句clob,.Net 操作 Oracle CLOB类型字段 INSERT 超长数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: decimal类型 go_Go 语言程序
- 下一篇: xml层级工具_.NET的类型层次查看工