oracalのclobタイプを文字列に変換します

そのような要件に遭遇しました:oracalからテーブル内の4つのフィールドをクエリするには、そのうちの2つはclobタイプであり、プログラム内の後続のメソッドを呼び出すために、バックエンドでSTRINGに変換する必要があります。結果は結果セットです。 、次のようになります。

StringBuffer gridSQL = new StringBuffer("select data_area_code,name,XS,YS from map_grids_bak_20190718 where length(data_area_code)=15");
        //获取对象数据集合
        //null  的意思是不用给sql语句传参数
        List<Object[]> list = this.getListBySql(gridSQL.toString(),null);

XSとYSはclobタイプですが、ポイントとコードを分割すると、配列内のclobデータがプロキシオブジェクトであることがわかります。直接clobに変換すると、oracle.sql.CLOBになることはできません。I多くの理由を見つけ、それがガイドであることがわかりました。間違ったパッケージでは、oracle.sql.CLOBパッケージを使用するのではなく、Java.sql.Clobパッケージを使用する必要があります。間違った方向に作業するには、実際に多くの時間がかかりました。

正しいパッケージを選択した後、直接転送を強制します。

String xs = cn.o.utils.StringUtils.ClobToString((Clob)strings[2]);
String ys = cn.o.utils.StringUtils.ClobToString((Clob)strings[3]);

最後に、ツール変換のコードを添付します。実際、ファイルストリームの方法で変換されます。

public static String ClobToString(Clob clob) {
		String reString = "";
		Reader is = null;
		try {
			is = clob.getCharacterStream();
		} catch (Exception e) {
			e.printStackTrace();
		}
		// 得到流
		BufferedReader br = new BufferedReader(is);
		String s = null;
		try {
			s = br.readLine();
		} catch (Exception e) {
			e.printStackTrace();
		}
		StringBuffer sb = new StringBuffer();
		while (s != null) {
			//执行循环将字符串全部取出付值给StringBuffer由StringBuffer转成STRING
			sb.append(s);
			try {
				s = br.readLine();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		reString = sb.toString();
		return reString;
	}

 

おすすめ

転載: blog.csdn.net/tonglei111/article/details/97377284