<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    小石頭
    Excellence in any department can be attained only by the labor of a lifetime; it is not to be purchased at a lesser price.
    posts - 91,comments - 22,trackbacks - 0
    import java.io.*;
    import java.util.*;
    import java.sql.*;
    ??
    public class LobPros
    {
    ??
    ? ? /**
    ? ???* ORACLE驅動程序
    ? ???*/
    ? ? private static final String DRIVER = "oracle.jdbc.driver.OracleDriver";
    ??
    ? ? /**
    ? ???* ORACLE連接用URL
    ? ???*/
    ? ? private static final String URL = "jdbc:oracle:thin:@test2000:1521:orac";
    ??
    ? ? /**
    ? ???* 用戶名
    ? ???*/
    ? ? private static final String USER = "user";
    ??
    ? ? /**
    ? ???* 密碼
    ? ???*/
    ? ? private static final String PASSWORD = "pswd";
    ??
    ? ? /**
    ? ???* 數據庫連接
    ? ???*/
    ? ? private static Connection conn = null;
    ??
    ? ? /**
    ? ???* SQL語句對象
    ? ???*/
    ? ? private static Statement stmt = null;
    ??
    ? ? /**
    ? ???* @roseuid 3EDA089E02BC
    ? ???*/
    ? ? public LobPros()
    ? ? {
    ??
    ? ? }
    ??
    ? ? /**
    ? ???* 往數據庫中插入一個新的CLOB對象
    ? ???*
    ? ???* @param infile - 數據文件
    ? ???* @throws java.lang.Exception
    ? ???* @roseuid 3EDA04A902BC
    ? ???*/
    ? ? public static void clobInsert(String infile) throws Exception
    ? ? {
    ? ?? ???/* 設定不自動提交 */
    ? ?? ???boolean defaultCommit = conn.getAutoCommit();
    ? ?? ???conn.setAutoCommit(false);
    ??
    ? ?? ???try {
    ? ?? ?? ?? ?/* 插入一個空的CLOB對象 */
    ? ?? ?? ?? ?stmt.executeUpdate("INSERT INTO TEST_CLOB VALUES ('111', EMPTY_CLOB())");
    ? ?? ?? ?? ?/* 查詢此CLOB對象并鎖定 */
    ? ?? ?? ?? ?ResultSet rs = stmt.executeQuery("SELECT CLOBCOL FROM TEST_CLOB WHERE ID='111' FOR UPDATE");
    ? ?? ?? ?? ?while (rs.next()) {
    ? ?? ?? ?? ?? ? /* 取出此CLOB對象 */
    ? ?? ?? ?? ?? ? oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob("CLOBCOL");
    ? ?? ?? ?? ?? ? /* 向CLOB對象中寫入數據 */
    ? ?? ?? ?? ?? ? BufferedWriter out = new BufferedWriter(clob.getCharacterOutputStream());
    ? ?? ?? ?? ?? ? BufferedReader in = new BufferedReader(new FileReader(infile));
    ? ?? ?? ?? ?? ? int c;
    ? ?? ?? ?? ?? ? while ((c=in.read())!=-1) {
    ? ?? ?? ?? ?? ?? ???out.write(c);
    ? ?? ?? ?? ?? ? }
    ? ?? ?? ?? ?? ? in.close();
    ? ?? ?? ?? ?? ? out.close();
    ? ?? ?? ?? ?}
    ? ?? ?? ?? ?/* 正式提交 */
    ? ?? ?? ?? ?conn.commit();
    ? ?? ???} catch (Exception ex) {
    ? ?? ?? ?? ?/* 出錯回滾 */
    ? ?? ?? ?? ?conn.rollback();
    ? ?? ?? ?? ?throw ex;
    ? ?? ???}
    ??
    ? ?? ???/* 恢復原提交狀態 */
    ? ?? ???conn.setAutoCommit(defaultCommit);
    ? ? }
    ??
    ? ? /**
    ? ???* 修改CLOB對象(是在原CLOB對象基礎上進行覆蓋式的修改)
    ? ???*
    ? ???* @param infile - 數據文件
    ? ???* @throws java.lang.Exception
    ? ???* @roseuid 3EDA04B60367
    ? ???*/
    ? ? public static void clobModify(String infile) throws Exception
    ? ? {
    ? ?? ???/* 設定不自動提交 */
    ? ?? ???boolean defaultCommit = conn.getAutoCommit();
    ? ?? ???conn.setAutoCommit(false);
    ??
    ? ?? ???try {
    ? ?? ?? ?? ?/* 查詢CLOB對象并鎖定 */
    ? ?? ?? ?? ?ResultSet rs = stmt.executeQuery("SELECT CLOBCOL FROM TEST_CLOB WHERE ID='111' FOR UPDATE");
    ? ?? ?? ?? ?while (rs.next()) {
    ? ?? ?? ?? ?? ? /* 獲取此CLOB對象 */
    ? ?? ?? ?? ?? ? oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob("CLOBCOL");? ?
    ? ?? ?? ?? ?? ? /* 進行覆蓋式修改 */
    ? ?? ?? ?? ?? ? BufferedWriter out = new BufferedWriter(clob.getCharacterOutputStream());
    ? ?? ?? ?? ?? ? BufferedReader in = new BufferedReader(new FileReader(infile));
    ? ?? ?? ?? ?? ? int c;
    ? ?? ?? ?? ?? ? while ((c=in.read())!=-1) {
    ? ?? ?? ?? ?? ?? ???out.write(c);
    ? ?? ?? ?? ?? ? }
    ? ?? ?? ?? ?? ? in.close();
    ? ?? ?? ?? ?? ? out.close();
    ? ?? ?? ?? ?}
    ? ?? ?? ?? ?/* 正式提交 */
    ? ?? ?? ?? ?conn.commit();
    ? ?? ???} catch (Exception ex) {
    ? ?? ?? ?? ?/* 出錯回滾 */
    ? ?? ?? ?? ?conn.rollback();
    ? ?? ?? ?? ?throw ex;
    ? ?? ???}
    ??
    ? ?? ???/* 恢復原提交狀態 */
    ? ?? ???conn.setAutoCommit(defaultCommit);
    ? ? }
    ??
    ? ? /**
    ? ???* 替換CLOB對象(將原CLOB對象清除,換成一個全新的CLOB對象)
    ? ???*
    ? ???* @param infile - 數據文件
    ? ???* @throws java.lang.Exception
    ? ???* @roseuid 3EDA04BF01E1
    ? ???*/
    ? ? public static void clobReplace(String infile) throws Exception
    ? ? {
    ? ?? ???/* 設定不自動提交 */
    ? ?? ???boolean defaultCommit = conn.getAutoCommit();
    ? ?? ???conn.setAutoCommit(false);
    ??
    ? ?? ???try {
    ? ?? ?? ?? ?/* 清空原CLOB對象 */
    ? ?? ?? ?? ?stmt.executeUpdate("UPDATE TEST_CLOB SET CLOBCOL=EMPTY_CLOB() WHERE ID='111'");
    ? ?? ?? ?? ?/* 查詢CLOB對象并鎖定 */
    ? ?? ?? ?? ?ResultSet rs = stmt.executeQuery("SELECT CLOBCOL FROM TEST_CLOB WHERE ID='111' FOR UPDATE");
    ? ?? ?? ?? ?while (rs.next()) {
    ? ?? ?? ?? ?? ? /* 獲取此CLOB對象 */
    ? ?? ?? ?? ?? ? oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob("CLOBCOL");
    ? ?? ?? ?? ?? ? /* 更新數據 */
    ? ?? ?? ?? ?? ? BufferedWriter out = new BufferedWriter(clob.getCharacterOutputStream());
    ? ?? ?? ?? ?? ? BufferedReader in = new BufferedReader(new FileReader(infile));
    ? ?? ?? ?? ?? ? int c;
    ? ?? ?? ?? ?? ? while ((c=in.read())!=-1) {
    ? ?? ?? ?? ?? ?? ???out.write(c);
    ? ?? ?? ?? ?? ? }
    ? ?? ?? ?? ?? ? in.close();
    ? ?? ?? ?? ?? ? out.close();
    ? ?? ?? ?? ?}
    ? ?? ?? ?? ?/* 正式提交 */
    ? ?? ?? ?? ?conn.commit();
    ? ?? ???} catch (Exception ex) {
    ? ?? ?? ?? ?/* 出錯回滾 */
    ? ?? ?? ?? ?conn.rollback();
    ? ?? ?? ?? ?throw ex;
    ? ?? ???}
    ??
    ? ?? ???/* 恢復原提交狀態 */
    ? ?? ???conn.setAutoCommit(defaultCommit);
    ? ? }
    ??
    ? ? /**
    ? ???* CLOB對象讀取
    ? ???*
    ? ???* @param outfile - 輸出文件名
    ? ???* @throws java.lang.Exception
    ? ???* @roseuid 3EDA04D80116
    ? ???*/
    ? ? public static void clobRead(String outfile) throws Exception
    ? ? {
    ? ?? ???/* 設定不自動提交 */
    ? ?? ???boolean defaultCommit = conn.getAutoCommit();
    ? ?? ???conn.setAutoCommit(false);
    ??
    ? ?? ???try {
    ? ?? ?? ?? ?/* 查詢CLOB對象 */
    ? ?? ?? ?? ?ResultSet rs = stmt.executeQuery("SELECT * FROM TEST_CLOB WHERE ID='111'");
    ? ?? ?? ?? ?while (rs.next()) {
    ? ?? ?? ?? ?? ? /* 獲取CLOB對象 */
    ? ?? ?? ?? ?? ? oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob("CLOBCOL");
    ? ?? ?? ?? ?? ? /* 以字符形式輸出 */
    ? ?? ?? ?? ?? ? BufferedReader in = new BufferedReader(clob.getCharacterStream());
    ? ?? ?? ?? ?? ? BufferedWriter out = new BufferedWriter(new FileWriter(outfile));
    ? ?? ?? ?? ?? ? int c;
    ? ?? ?? ?? ?? ? while ((c=in.read())!=-1) {
    ? ?? ?? ?? ?? ?? ???out.write(c);
    ? ?? ?? ?? ?? ? }
    ? ?? ?? ?? ?? ? out.close();
    ? ?? ?? ?? ?? ? in.close();
    ? ?? ?? ?? ?}
    ? ?? ???} catch (Exception ex) {
    ? ?? ?? ?? ?conn.rollback();
    ? ?? ?? ?? ?throw ex;
    ? ?? ???}
    ??
    ? ?? ???/* 恢復原提交狀態 */
    ? ?? ???conn.setAutoCommit(defaultCommit);
    ? ? }
    ??
    ? ? /**
    ? ???* 向數據庫中插入一個新的BLOB對象
    ? ???*
    ? ???* @param infile - 數據文件
    ? ???* @throws java.lang.Exception
    ? ???* @roseuid 3EDA04E300F6
    ? ???*/
    ? ? public static void blobInsert(String infile) throws Exception
    ? ? {
    ? ?? ???/* 設定不自動提交 */
    ? ?? ???boolean defaultCommit = conn.getAutoCommit();
    ? ?? ???conn.setAutoCommit(false);
    ??
    ? ?? ???try {
    ? ?? ?? ?? ?/* 插入一個空的BLOB對象 */
    ? ?? ?? ?? ?stmt.executeUpdate("INSERT INTO TEST_BLOB VALUES ('222', EMPTY_BLOB())");
    ? ?? ?? ?? ?/* 查詢此BLOB對象并鎖定 */
    ? ?? ?? ?? ?ResultSet rs = stmt.executeQuery("SELECT BLOBCOL FROM TEST_BLOB WHERE ID='222' FOR UPDATE");
    ? ?? ?? ?? ?while (rs.next()) {
    ? ?? ?? ?? ?? ? /* 取出此BLOB對象 */
    ? ?? ?? ?? ?? ? oracle.sql.BLOB blob = (oracle.sql.BLOB)rs.getBlob("BLOBCOL");
    ? ?? ?? ?? ?? ? /* 向BLOB對象中寫入數據 */
    ? ?? ?? ?? ?? ? BufferedOutputStream out = new BufferedOutputStream(blob.getBinaryOutputStream());
    ? ?? ?? ?? ?? ? BufferedInputStream in = new BufferedInputStream(new FileInputStream(infile));
    ? ?? ?? ?? ?? ? int c;
    ? ?? ?? ?? ?? ? while ((c=in.read())!=-1) {
    ? ?? ?? ?? ?? ?? ???out.write(c);
    ? ?? ?? ?? ?? ? }
    ? ?? ?? ?? ?? ? in.close();
    ? ?? ?? ?? ?? ? out.close();
    ? ?? ?? ?? ?}
    ? ?? ?? ?? ?/* 正式提交 */
    ? ?? ?? ?? ?conn.commit();
    ? ?? ???} catch (Exception ex) {
    ? ?? ?? ?? ?/* 出錯回滾 */
    ? ?? ?? ?? ?conn.rollback();
    ? ?? ?? ?? ?throw ex;
    ? ?? ???}
    ??
    ? ?? ???/* 恢復原提交狀態 */
    ? ?? ???conn.setAutoCommit(defaultCommit);
    ? ? }
    ??
    ? ? /**
    ? ???* 修改BLOB對象(是在原BLOB對象基礎上進行覆蓋式的修改)
    ? ???*
    ? ???* @param infile - 數據文件
    ? ???* @throws java.lang.Exception
    ? ???* @roseuid 3EDA04E90106
    ? ???*/
    ? ? public static void blobModify(String infile) throws Exception
    ? ? {
    ? ?? ???/* 設定不自動提交 */
    ? ?? ???boolean defaultCommit = conn.getAutoCommit();
    ? ?? ???conn.setAutoCommit(false);
    ??
    ? ?? ???try {
    ? ?? ?? ?? ?/* 查詢BLOB對象并鎖定 */
    ? ?? ?? ?? ?ResultSet rs = stmt.executeQuery("SELECT BLOBCOL FROM TEST_BLOB WHERE ID='222' FOR UPDATE");
    ? ?? ?? ?? ?while (rs.next()) {
    ? ?? ?? ?? ?? ? /* 取出此BLOB對象 */
    ? ?? ?? ?? ?? ? oracle.sql.BLOB blob = (oracle.sql.BLOB)rs.getBlob("BLOBCOL");
    ? ?? ?? ?? ?? ? /* 向BLOB對象中寫入數據 */
    ? ?? ?? ?? ?? ? BufferedOutputStream out = new BufferedOutputStream(blob.getBinaryOutputStream());
    ? ?? ?? ?? ?? ? BufferedInputStream in = new BufferedInputStream(new FileInputStream(infile));
    ? ?? ?? ?? ?? ? int c;
    ? ?? ?? ?? ?? ? while ((c=in.read())!=-1) {
    ? ?? ?? ?? ?? ?? ???out.write(c);
    ? ?? ?? ?? ?? ? }
    ? ?? ?? ?? ?? ? in.close();
    ? ?? ?? ?? ?? ? out.close();
    ? ?? ?? ?? ?}
    ? ?? ?? ?? ?/* 正式提交 */
    ? ?? ?? ?? ?conn.commit();
    ? ?? ???} catch (Exception ex) {
    ? ?? ?? ?? ?/* 出錯回滾 */
    ? ?? ?? ?? ?conn.rollback();
    ? ?? ?? ?? ?throw ex;
    ? ?? ???}
    ??
    ? ?? ???/* 恢復原提交狀態 */
    ? ?? ???conn.setAutoCommit(defaultCommit);
    ? ? }
    ??
    ? ? /**
    ? ???* 替換BLOB對象(將原BLOB對象清除,換成一個全新的BLOB對象)
    ? ???*
    ? ???* @param infile - 數據文件
    ? ???* @throws java.lang.Exception
    ? ???* @roseuid 3EDA0505000C
    ? ???*/
    ? ? public static void blobReplace(String infile) throws Exception
    ? ? {
    ? ?? ???/* 設定不自動提交 */
    ? ?? ???boolean defaultCommit = conn.getAutoCommit();
    ? ?? ???conn.setAutoCommit(false);
    ??
    ? ?? ???try {
    ? ?? ?? ?? ?/* 清空原BLOB對象 */
    ? ?? ?? ?? ?stmt.executeUpdate("UPDATE TEST_BLOB SET BLOBCOL=EMPTY_BLOB() WHERE ID='222'");
    ? ?? ?? ?? ?/* 查詢此BLOB對象并鎖定 */
    ? ?? ?? ?? ?ResultSet rs = stmt.executeQuery("SELECT BLOBCOL FROM TEST_BLOB WHERE ID='222' FOR UPDATE");
    ? ?? ?? ?? ?while (rs.next()) {
    ? ?? ?? ?? ?? ? /* 取出此BLOB對象 */
    ? ?? ?? ?? ?? ? oracle.sql.BLOB blob = (oracle.sql.BLOB)rs.getBlob("BLOBCOL");
    ? ?? ?? ?? ?? ? /* 向BLOB對象中寫入數據 */
    ? ?? ?? ?? ?? ? BufferedOutputStream out = new BufferedOutputStream(blob.getBinaryOutputStream());
    ? ?? ?? ?? ?? ? BufferedInputStream in = new BufferedInputStream(new FileInputStream(infile));
    ? ?? ?? ?? ?? ? int c;
    ? ?? ?? ?? ?? ? while ((c=in.read())!=-1) {
    ? ?? ?? ?? ?? ?? ???out.write(c);
    ? ?? ?? ?? ?? ? }
    ? ?? ?? ?? ?? ? in.close();
    ? ?? ?? ?? ?? ? out.close();
    ? ?? ?? ?? ?}
    ? ?? ?? ?? ?/* 正式提交 */
    ? ?? ?? ?? ?conn.commit();
    ? ?? ???} catch (Exception ex) {
    ? ?? ?? ?? ?/* 出錯回滾 */
    ? ?? ?? ?? ?conn.rollback();
    ? ?? ?? ?? ?throw ex;
    ? ?? ???}
    ??
    ? ?? ???/* 恢復原提交狀態 */
    ? ?? ???conn.setAutoCommit(defaultCommit);
    ? ? }
    ??
    ? ? /**
    ? ???* BLOB對象讀取
    ? ???*
    ? ???* @param outfile - 輸出文件名
    ? ???* @throws java.lang.Exception
    ? ???* @roseuid 3EDA050B003B
    ? ???*/
    ? ? public static void blobRead(String outfile) throws Exception
    ? ? {
    ? ?? ???/* 設定不自動提交 */
    ? ?? ???boolean defaultCommit = conn.getAutoCommit();
    ? ?? ???conn.setAutoCommit(false);
    ??
    ? ?? ???try {
    ? ?? ?? ?? ?/* 查詢BLOB對象 */
    ? ?? ?? ?? ?ResultSet rs = stmt.executeQuery("SELECT BLOBCOL FROM TEST_BLOB WHERE ID='222'");
    ? ?? ?? ?? ?while (rs.next()) {
    ? ?? ?? ?? ?? ? /* 取出此BLOB對象 */
    ? ?? ?? ?? ?? ? oracle.sql.BLOB blob = (oracle.sql.BLOB)rs.getBlob("BLOBCOL");
    ? ?? ?? ?? ?? ? /* 以二進制形式輸出 */
    ? ?? ?? ?? ?? ? BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(outfile));
    ? ?? ?? ?? ?? ? BufferedInputStream in = new BufferedInputStream(blob.getBinaryStream());
    ? ?? ?? ?? ?? ? int c;
    ? ?? ?? ?? ?? ? while ((c=in.read())!=-1) {
    ? ?? ?? ?? ?? ?? ???out.write(c);
    ? ?? ?? ?? ?? ? }
    ? ?? ?? ?? ?? ? in.close();
    ? ?? ?? ?? ?? ? out.close();
    ? ?? ?? ?? ?}
    ? ?? ?? ?? ?/* 正式提交 */
    ? ?? ?? ?? ?conn.commit();
    ? ?? ???} catch (Exception ex) {
    ? ?? ?? ?? ?/* 出錯回滾 */
    ? ?? ?? ?? ?conn.rollback();
    ? ?? ?? ?? ?throw ex;
    ? ?? ???}
    ??
    ? ?? ???/* 恢復原提交狀態 */
    ? ?? ???conn.setAutoCommit(defaultCommit);
    ? ? }
    ??
    ? ? /**
    ? ???* 建立測試用表格
    ? ???* @throws Exception
    ? ???*/
    ? ? public static void createTables() throws Exception {
    ? ?? ???try {
    ? ?? ?? ?? ?stmt.executeUpdate("CREATE TABLE TEST_CLOB ( ID NUMBER(3), CLOBCOL CLOB)");
    ? ?? ?? ?? ?stmt.executeUpdate("CREATE TABLE TEST_BLOB ( ID NUMBER(3), BLOBCOL BLOB)");
    ? ?? ???} catch (Exception ex) {
    ??
    ? ?? ???}
    ? ? }
    ??
    ? ? /**
    ? ???* @param args - 命令行參數
    ? ???* @throws java.lang.Exception
    ? ???* @roseuid 3EDA052002AC
    ? ???*/
    ? ? public static void main(String[] args) throws Exception
    ? ? {
    ? ?? ???/* 裝載驅動,建立數據庫連接 */
    ? ?? ???Class.forName(DRIVER);
    ? ?? ???conn = DriverManager.getConnection(URL,USER,PASSWORD);
    ? ?? ???stmt = conn.createStatement();
    ??
    ? ?? ???/* 建立測試表格 */
    ? ?? ???createTables();
    ??
    ? ?? ???/* CLOB對象插入測試 */
    ? ?? ???clobInsert("c:/clobInsert.txt");
    ? ?? ???clobRead("c:/clobInsert.out");
    ??
    ? ?? ???/* CLOB對象修改測試 */
    ? ?? ???clobModify("c:/clobModify.txt");
    ? ?? ???clobRead("c:/clobModify.out");
    ??
    ? ?? ???/* CLOB對象替換測試 */
    ? ?? ???clobReplace("c:/clobReplace.txt");
    ? ?? ???clobRead("c:/clobReplace.out");
    ??
    ? ?? ???/* BLOB對象插入測試 */
    ? ?? ???blobInsert("c:/blobInsert.doc");
    ? ?? ???blobRead("c:/blobInsert.out");
    ??
    ? ?? ???/* BLOB對象修改測試 */
    ? ?? ???blobModify("c:/blobModify.doc");
    ? ?? ???blobRead("c:/blobModify.out");
    ??
    ? ?? ???/* BLOB對象替換測試 */
    ? ?? ???blobReplace("c:/blobReplace.doc");
    ? ?? ???blobRead("c:/bolbReplace.out");
    ??
    ? ?? ???/* 關閉資源退出 */
    ? ?? ???conn.close();
    ? ?? ???System.exit(0);
    ? ? }
    }
    posted on 2007-02-12 20:12 小石頭 閱讀(193) 評論(0)  編輯  收藏 所屬分類: 每天學一點
    主站蜘蛛池模板: 91亚洲精品视频| 丁香五月亚洲综合深深爱| 亚洲美女视频网站| 日韩精品在线免费观看| 亚洲级αV无码毛片久久精品| 丰满妇女做a级毛片免费观看| 亚洲国产成人VA在线观看| 农村寡妇一级毛片免费看视频 | 久久亚洲精品11p| 无码国模国产在线观看免费| 亚洲成a∨人片在无码2023 | 亚洲最大成人网色香蕉| 成年女人18级毛片毛片免费| 亚洲色大成网站WWW国产| 日本免费电影一区| 免费人成在线观看播放a| 亚洲热线99精品视频| 久久久久成人片免费观看蜜芽| 亚洲精品高清视频| 在线a级毛片免费视频| 亚洲av无码成人精品国产| 国产成人毛片亚洲精品| 午夜精品射精入后重之免费观看| 亚洲国产高清视频在线观看| 成人毛片18岁女人毛片免费看 | fc2免费人成在线| 久久噜噜噜久久亚洲va久| 无遮免费网站在线入口| 男人的天堂av亚洲一区2区| 亚洲欧洲精品成人久久曰影片 | 毛片免费观看的视频在线| 美女被免费视频网站a| 亚洲国产一二三精品无码| 亚洲人成免费网站| 国产亚洲精品精品精品| 亚洲AV午夜成人片| 天堂在线免费观看中文版| 在线观看免费无码视频| 亚洲一卡2卡3卡4卡乱码 在线| 亚洲?V乱码久久精品蜜桃| 91精品免费高清在线|