我自己用的ORACLEHELPER.cs檔案,比較全,好用
using System;
using System.Collections;
using System.Collections.Specialized;
using System.Data;
using System.Data.OracleClient;
using System.Configuration;
namespace GJSH.DBUtility
{
/// <summary>
/// Copyright (C) 2004-2008 LiTianPing
/// 資料訪問基礎類(基於Oracle)
/// 可以使用者可以修改滿足自己專案的需要。
/// </summary>
public abstract class DbHelperOra
{
//資料庫連線字串(web.config來配置),可以動態更改connectionString支援多資料庫.
public static string connectionString = PubConstant.ConnectionString;
public DbHelperOra()
{
}
#region 公用方法
public static int GetMaxID(string FieldName, string TableName)
{
string strsql = "select max(" + FieldName + ")+1 from " + TableName;
object obj = DbHelperOra.GetSingle(strsql);
if (obj == null)
{
return 1;
}
else
{
return int.Parse(obj.ToString());
}
}
public static bool Exists(string strSql, params OracleParameter[] cmdParms)
{
object obj = DbHelperOra.GetSingle(strSql, cmdParms);
int cmdresult;
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
{
cmdresult = 0;
}
else
{
cmdresult = int.Parse(obj.ToString());
}
if (cmdresult == 0)
{
return false;
}
else
{
return true;
}
}
#endregion
#region 執行簡單SQL語句
public static bool Exists(string SQLString)
{
using (OracleConnection connection = new OracleConnection(connectionString))
{
using(OracleCommand cmd = new OracleCommand(SQLString,connection))
{
try
{
connection.Open();
object obj = cmd.ExecuteScalar();
if((Object.Equals(obj,null))||(Object.Equals(obj,System.DBNull.Value)))
{
return false;
}
else
{
return true;
}
}
catch(System.Data.OracleClient.OracleException e)
{
connection.Close();
throw new Exception(e.Message);
}
finally
{
cmd.Dispose();
connection.Close();
}
}
}
}
/// <summary>
/// 執行SQL語句,返回影響的記錄數
/// </summary>
/// <param name="SQLString">SQL語句</param>
/// <returns>影響的記錄數</returns>
public static int ExecuteSql(string SQLString)
{
using (OracleConnection connection = new OracleConnection(connectionString))
{
using (OracleCommand cmd = new OracleCommand(SQLString,connection))
{
try
{
connection.Open();
int rows=cmd.ExecuteNonQuery();
return rows;
}
catch(System.Data.OracleClient.OracleException E)
{
connection.Close();
throw new Exception(E.Message);
}
finally
{
cmd.Dispose();
connection.Close();
}
}
}
}
/// <summary>
/// 執行多條SQL語句,實現資料庫事務。
/// </summary>
/// <param name="SQLStringList">多條SQL語句</param>
public static bool ExecuteSqlTran(ArrayList SQLStringList)
{
bool re = false;
using (OracleConnection connection = new OracleConnection(connectionString))
{
connection.Open();
OracleCommand cmd = new OracleCommand();
cmd.Connection = connection;
OracleTransaction tx = connection.BeginTransaction();
cmd.Transaction=tx;
try
{
for(int n=0;n<SQLStringList.Count;n++)
{
string strsql=SQLStringList[n].ToString();
if (strsql.Trim().Length>1)
{
cmd.CommandText=strsql;
cmd.ExecuteNonQuery();
}
}
tx.Commit();
re = true;
}
catch(System.Data.OracleClient.OracleException E)
{
re = false;
tx.Rollback();
throw new Exception(E.Message);
}
finally
{
cmd.Dispose();
connection.Close();
}
}
return re;
}
/// <summary>
/// 執行帶一個儲存過程引數的的SQL語句。
/// </summary>
/// <param name="SQLString">SQL語句</param>
/// <param name="content">引數內容,比如一個欄位是格式複雜的文章,有特殊符號,可以通過這個方式新增</param>
/// <returns>影響的記錄數</returns>
public static int ExecuteSql(string SQLString,string content)
{
using (OracleConnection connection = new OracleConnection(connectionString))
{
OracleCommand cmd = new OracleCommand(SQLString,connection);
System.Data.OracleClient.OracleParameter myParameter = new System.Data.OracleClient.OracleParameter("@content", OracleType.NVarChar);
myParameter.Value = content ;
cmd.Parameters.Add(myParameter);
try
{
connection.Open();
int rows=cmd.ExecuteNonQuery();
return rows;
}
catch(System.Data.OracleClient.OracleException E)
{
throw new Exception(E.Message);
}
finally
{
cmd.Dispose();
connection.Close();
}
}
}
/// <summary>
/// 向資料庫裡插入影象格式的欄位(和上面情況類似的另一種例項)
/// </summary>
/// <param name="strSQL">SQL語句</param>
/// <param name="fs">影象位元組,資料庫的欄位型別為image的情況</param>
/// <returns>影響的記錄數</returns>
public static int ExecuteSqlInsertImg(string strSQL,byte[] fs)
{
using (OracleConnection connection = new OracleConnection(connectionString))
{
OracleCommand cmd = new OracleCommand(strSQL,connection);
System.Data.OracleClient.OracleParameter myParameter = new System.Data.OracleClient.OracleParameter("@fs", OracleType.LongRaw);
myParameter.Value = fs ;
cmd.Parameters.Add(myParameter);
try
{
connection.Open();
int rows=cmd.ExecuteNonQuery();
return rows;
}
catch(System.Data.OracleClient.OracleException E)
{
throw new Exception(E.Message);
}
finally
{
cmd.Dispose();
connection.Close();
}
}
}
/// <summary>
/// 執行一條計算查詢結果語句,返回查詢結果(object)。
/// </summary>
/// <param name="SQLString">計算查詢結果語句</param>
/// <returns>查詢結果(object)</returns>
public static object GetSingle(string SQLString)
{
using (OracleConnection connection = new OracleConnection(connectionString))
{
using(OracleCommand cmd = new OracleCommand(SQLString,connection))
{
try
{
connection.Open();
object obj = cmd.ExecuteScalar();
if((Object.Equals(obj,null))||(Object.Equals(obj,System.DBNull.Value)))
{
return null;
}
else
{
return obj;
}
}
catch(System.Data.OracleClient.OracleException e)
{
connection.Close();
throw new Exception(e.Message);
}
finally
{
cmd.Dispose();
connection.Close();
}
}
}
}
/// <summary>
/// 執行查詢語句,返回OracleDataReader ( 注意:呼叫該方法後,一定要對SqlDataReader進行Close )
/// </summary>
/// <param name="strSQL">查詢語句</param>
/// <returns>OracleDataReader</returns>
public static OracleDataReader ExecuteReader(string strSQL)
{
OracleConnection connection = new OracleConnection(connectionString);
OracleCommand cmd = new OracleCommand(strSQL,connection);
try
{
connection.Open();
OracleDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
return myReader;
}
catch(System.Data.OracleClient.OracleException e)
{
throw new Exception(e.Message);
}
}
/// <summary>
/// 執行查詢語句,返回DataSet
/// </summary>
/// <param name="SQLString">查詢語句</param>
/// <returns>DataSet</returns>
public static DataSet Query(string SQLString)
{
using (OracleConnection connection = new OracleConnection(connectionString))
{
DataSet ds = new DataSet();
try
{
connection.Open();
OracleDataAdapter command = new OracleDataAdapter(SQLString,connection);
command.Fill(ds,"ds");
}
catch(System.Data.OracleClient.OracleException ex)
{
throw new Exception(ex.Message);
}
finally
{
connection.Close();
}
return ds;
}
}
#endregion
#region 執行帶引數的SQL語句
/// <summary>
/// 執行SQL語句,返回影響的記錄數
/// </summary>
/// <param name="SQLString">SQL語句</param>
/// <returns>影響的記錄數</returns>
public static int ExecuteSql(string SQLString,params OracleParameter[] cmdParms)
{
using (OracleConnection connection = new OracleConnection(connectionString))
{
using (OracleCommand cmd = new OracleCommand())
{
try
{
PrepareCommand(cmd, connection, null,SQLString, cmdParms);
int rows=cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return rows;
}
catch(System.Data.OracleClient.OracleException E)
{
throw new Exception(E.Message);
}
finally
{
cmd.Dispose();
connection.Close();
}
}
}
}
/// <summary>
/// 執行多條SQL語句,實現資料庫事務。
/// </summary>
/// <param name="SQLStringList">SQL語句的雜湊表(key為sql語句,value是該語句的OracleParameter[])</param>
public static void ExecuteSqlTran(Hashtable SQLStringList)
{
using (OracleConnection conn = new OracleConnection(connectionString))
{
conn.Open();
using (OracleTransaction trans = conn.BeginTransaction())
{
OracleCommand cmd = new OracleCommand();
try
{
//迴圈
foreach (DictionaryEntry myDE in SQLStringList)
{
string cmdText=myDE.Key.ToString();
OracleParameter[] cmdParms=(OracleParameter[])myDE.Value;
PrepareCommand(cmd,conn,trans,cmdText, cmdParms);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
trans.Commit();
}
}
catch
{
trans.Rollback();
throw;
}
}
}
}
/// <summary>
/// 執行一條計算查詢結果語句,返回查詢結果(object)。
/// </summary>
/// <param name="SQLString">計算查詢結果語句</param>
/// <returns>查詢結果(object)</returns>
public static object GetSingle(string SQLString,params OracleParameter[] cmdParms)
{
using (OracleConnection connection = new OracleConnection(connectionString))
{
using (OracleCommand cmd = new OracleCommand())
{
try
{
PrepareCommand(cmd, connection, null,SQLString, cmdParms);
object obj = cmd.ExecuteScalar();
cmd.Parameters.Clear();
if((Object.Equals(obj,null))||(Object.Equals(obj,System.DBNull.Value)))
{
return null;
}
else
{
return obj;
}
}
catch(System.Data.OracleClient.OracleException e)
{
throw new Exception(e.Message);
}
finally
{
cmd.Dispose();
connection.Close();
}
}
}
}
/// <summary>
/// 執行查詢語句,返回OracleDataReader ( 注意:呼叫該方法後,一定要對SqlDataReader進行Close )
/// </summary>
/// <param name="strSQL">查詢語句</param>
/// <returns>OracleDataReader</returns>
public static OracleDataReader ExecuteReader(string SQLString,params OracleParameter[] cmdParms)
{
OracleConnection connection = new OracleConnection(connectionString);
OracleCommand cmd = new OracleCommand();
try
{
PrepareCommand(cmd, connection, null,SQLString, cmdParms);
OracleDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return myReader;
}
catch(System.Data.OracleClient.OracleException e)
{
throw new Exception(e.Message);
}
}
/// <summary>
/// 執行查詢語句,返回DataSet
/// </summary>
/// <param name="SQLString">查詢語句</param>
/// <returns>DataSet</returns>
public static DataSet Query(string SQLString,params OracleParameter[] cmdParms)
{
using (OracleConnection connection = new OracleConnection(connectionString))
{
OracleCommand cmd = new OracleCommand();
PrepareCommand(cmd, connection, null,SQLString, cmdParms);
using( OracleDataAdapter da = new OracleDataAdapter(cmd) )
{
DataSet ds = new DataSet();
try
{
da.Fill(ds,"ds");
cmd.Parameters.Clear();
}
catch(System.Data.OracleClient.OracleException ex)
{
throw new Exception(ex.Message);
}
finally
{
cmd.Dispose();
connection.Close();
}
return ds;
}
}
}
private static void PrepareCommand(OracleCommand cmd,OracleConnection conn,OracleTransaction trans, string cmdText, OracleParameter[] cmdParms)
{
if (conn.State != ConnectionState.Open)
conn.Open();
cmd.Connection = conn;
cmd.CommandText = cmdText;
if (trans != null)
cmd.Transaction = trans;
cmd.CommandType = CommandType.Text;//cmdType;
if (cmdParms != null)
{
foreach (OracleParameter parm in cmdParms)
cmd.Parameters.Add(parm);
}
}
#endregion
#region 儲存過程操作
/// <summary>
/// 執行儲存過程 返回SqlDataReader ( 注意:呼叫該方法後,一定要對SqlDataReader進行Close )
/// </summary>
/// <param name="storedProcName">儲存過程名</param>
/// <param name="parameters">儲存過程引數</param>
/// <returns>OracleDataReader</returns>
public static OracleDataReader RunProcedureReader(string storedProcName, IDataParameter[] parameters )
{
OracleConnection connection = new OracleConnection(connectionString);
OracleDataReader returnReader;
connection.Open();
OracleCommand command = BuildQueryCommand( connection,storedProcName, parameters );
command.CommandType = CommandType.StoredProcedure;
returnReader = command.ExecuteReader(CommandBehavior.CloseConnection);
return returnReader;
}
/// <summary>
/// 執行儲存過程,返回影響的行數
/// </summary>
/// <param name="storedProcName">儲存過程名</param>
/// <param name="parameters">儲存過程引數</param>
/// <param name="rowsAffected">影響的行數</param>
/// <returns></returns>
public static int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected)
{
using (OracleConnection connection = new OracleConnection(connectionString))
{
int result;
connection.Open();
OracleCommand command = BuildIntCommand(connection, storedProcName, parameters);
rowsAffected = command.ExecuteNonQuery();
result = (int)command.Parameters["ReturnValue"].Value;
//Connection.Close();
return result;
}
}
/// <summary>
/// 執行儲存過程,什麼值也不返回
/// </summary>
/// <param name="storedProcName"></param>
/// <param name="parameters"></param>
public static void RunProcedure(string storedProcName, OracleParameter[] parameters)
{
using (OracleConnection connection = new OracleConnection(connectionString))
{
System.Data.OracleClient.OracleCommand cmd = BuildQueryCommand(connection, storedProcName, parameters);
// new OracleCommand(storedProcName, connection);
//cmd.CommandType = CommandType.StoredProcedure;
//foreach (OracleParameter parameter in parameters)
//{
// cmd.Parameters.Add(parameter);
//}
//cmd.Parameters.Add(new OracleParameter("p_userid", OracleType.Int32, 9)).Value = p_userid;
//cmd.Parameters.Add(new OracleParameter("p_yyyy", OracleType.Int32, 7)).Value = p_yyyy;
//cmd.Parameters.Add(new OracleParameter("p_mm", OracleType.Int32, 9)).Value = p_mm;
try
{
if (connection.State != ConnectionState.Open)
{
connection.Open();
}
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
ex.Message.ToString();
throw new Exception(ex.Message);
// Console.WriteLine(ex.Message.ToString());
}
finally
{
connection.Close();
}
}
}
/// <summary>
/// 執行儲存過程,返回資料集
/// </summary>
/// <param name="storedProcName">儲存過程名</param>
/// <param name="parameters">儲存過程引數</param>
/// <param name="tableName">DataSet結果中的表名</param>
/// <returns>DataSet</returns>
public static DataSet RunProcedureGetDataSet(string storedProcName, OracleParameter[] parameters)
{
using (OracleConnection connection = new OracleConnection(connectionString))
{
DataSet dataSet = new DataSet();
connection.Open();
OracleDataAdapter sqlDA = new OracleDataAdapter();
sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters );
sqlDA.Fill(dataSet, "dt");
connection.Close();
return dataSet;
}
}
/// <summary>
/// 構建 OracleCommand 物件(用來返回一個結果集,而不是一個整數值)
/// </summary>
/// <param name="connection">資料庫連線</param>
/// <param name="storedProcName">儲存過程名</param>
/// <param name="parameters">儲存過程引數</param>
/// <returns>OracleCommand</returns>
private static OracleCommand BuildQueryCommand(OracleConnection connection,string storedProcName, IDataParameter[] parameters)
{
OracleCommand command = new OracleCommand( storedProcName, connection );
command.CommandType = CommandType.StoredProcedure;
foreach (OracleParameter parameter in parameters)
{
command.Parameters.Add( parameter );
}
return command;
}
/// <summary>
/// 執行儲存過程,返回影響的行數
/// </summary>
/// <param name="storedProcName">儲存過程名</param>
/// <param name="parameters">儲存過程引數</param>
/// <param name="rowsAffected">影響的行數</param>
/// <returns></returns>
public static int RunProcedure_rowsAffected(string storedProcName, IDataParameter[] parameters, out int rowsAffected)
{
using (OracleConnection connection = new OracleConnection(connectionString))
{
int result;
connection.Open();
OracleCommand command = BuildIntCommand(connection,storedProcName, parameters );
rowsAffected = command.ExecuteNonQuery();
result = (int)command.Parameters["ReturnValue"].Value;
//Connection.Close();
return result;
}
}
/// <summary>
/// 建立 OracleCommand 物件例項(用來返回一個整數值)
/// </summary>
/// <param name="storedProcName">儲存過程名</param>
/// <param name="parameters">儲存過程引數</param>
/// <returns>OracleCommand 物件例項</returns>
private static OracleCommand BuildIntCommand(OracleConnection connection,string storedProcName, IDataParameter[] parameters)
{
OracleCommand command = BuildQueryCommand(connection,storedProcName, parameters );
command.Parameters.Add( new OracleParameter ( "ReturnValue",
OracleType.Int32, 4, ParameterDirection.ReturnValue,
false,0,0,string.Empty,DataRowVersion.Default,null ));
return command;
}
//private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());
//public static OracleParameter[] GetCachedParameters(string cacheKey)
//{
// OracleParameter[] cachedParms = (OracleParameter[])parmCache[cacheKey];
// // OracleParameter[] cachedParms = (OracleParameter[])parmCache[cacheKey];
// if (cachedParms == null)
// return null;
// OracleParameter[] clonedParms = new OracleParameter[cachedParms.Length];
// for (int i = 0, j = cachedParms.Length; i < j; i++)
// clonedParms[i] = (OracleParameter)((ICloneable)cachedParms[i]).Clone();
// return clonedParms;
//}
#endregion
}
}
相關推薦
我自己用的ORACLEHELPER.cs檔案,比較全,好用
using System;using System.Collections;using System.Collections.Specialized;using System.Data;using System.Data.OracleClient;using System.C
ORACLEHELPER.cs檔案,比較全,好用
using System; using System.Collections; using System.Collections.Specialized; using System.Data; using System.Data.OracleClient; using S
用一個簡單的例子比較SVM,MARS以及BRUTO(R語言)
err r語 模型訓練 n! 也有 kernel 訓練 tps mea 背景重述 本文是ESL: 12.3 支持向量機和核中表12.2的重現過程。具體問題如下: 在兩個類別中產生100個觀測值。第一類有4個標準正態獨立特征\(X_1,X_2,X_3,X_4\)。第二類也有四
[shell]shell運算(數字[加減乘除,比較大小],字串,檔案)
算術運算首先這裡所說的算術運算是指加法(+), 減法(-),乘法(*),整除(/), 求餘(%)四種運算,可以通過新增括號改變優先順序,並且只能對整數進行運算(Linux Bash Shell預設不支援
學習java的視訊資源(尚學堂)(比較老舊,但是還是挺好用)
本人新手,轉入IT,一開始在學校的時候看過尚學堂 馬士兵講過的java基礎視訊教程,這次深入學習呢,就從百度雲盤找了一整套的視訊資源。之後越深入的學習呢,發現這些視訊資源VeryCD上都發布了,地址
用java寫檔案輸入輸出流,實現複製貼上的方法
java中檔案輸入輸出流是FileInputStream和FileOutputStream,檔案輸入流從檔案系統中的某個檔案中獲得輸入位元組,然後可以用輸出流將資料寫入檔案中。 首先建立兩個流的物件: FileInputStream的構造方法有三種過載方式,常用的是F
從零開始學習音視頻編程技術(三) 開發環境搭建(Qt4.86手動設置環境,主要就是設置g++和qmake,比較透徹,附下載鏈接)
路徑 details 分享 baidu 末尾 是我 其中 找到 source 1.先下載安裝Qt 我們使用的版本是4.8。 可以自行百度下載也可以從下面的網盤地址下載: Qt庫和編譯器下載: 鏈接:http://pan.baidu.com/s/1hrUxLIG 密碼
發票捕手,一款超好用的發票OCR識別軟件
jpeg 格式 需要 就是 分享圖片 麻煩 結合 com 圖片 發票報銷始終是各個公司的痛點,整理發票、粘貼發票麻煩不已,傳統報銷程序的延續主要是因為發票的真偽鑒別及費用核查需要紙質發票來核實,也是由於這個原因,紙質發票一直無法融入無紙化辦公及移動辦公系統。如果通過OCR發
mingw qt(可以去掉mingwm10.dll、libgcc_s_dw2-1.dll、libstdc++-6.dll的依賴,官方的mingw默認都是動態鏈接gcc的庫而TDM是靜態鏈接gcc庫,tdm版本更好用)
單獨 option web blank debugging 信息 pre internal 類庫 原文地址:mingw qt作者:孫1東 不使用Qt SDK,使用mingw編譯qt源代碼所遇問題及解決方法: configure -fast -release -no-
網絡編程(爬蟲,接口及好用的模塊)及網絡測接口
phone spa aaa all style .text .post parse passwd 1.網絡 from urllib import request,parse# url = ‘http://www.nnzhp.cn‘# req = request.urlope
小程序購物車下架商品實時顯示,只為更好用戶體驗!
組件 刪除 提示 設置 配送 促銷 門店 開放 關閉 單商戶小程序V1.8.4版本更新說明更新時間:2018年9月10號 一、 更新功能清單1、新增僅支持自提功能設置,用戶下單僅可選到店自提!2、小程序前臺優化購物車頁面,已刪除或已下架的商品,其狀態展示在購物車提醒用戶;
使用Python一年多了,總結八個好用的Python爬蟲技巧
用python也差不多一年多了,python應用最多的場景還是web快速開發、爬蟲、自動化運維:寫過簡單網站、寫過自動發帖指令碼、寫過收發郵件指令碼、寫過簡單驗證碼識別指令碼。 爬蟲在開發過程中也有很多複用的過程,這裡總結一下,以後也能省些事情。 1、基本抓取網頁 get方法
python中in,not in,比較運算子,格式化輸出,編碼
一,python中的in,和not in python中in的作用是檢測或查詢,例如: c = ‘你好大號胡覅但是啊飛碟說’ b = ‘你好’ print(b in c ) 結果: True c = ‘你好大號胡覅但
測試用例的設計方法--比較全的--轉載
等價類劃分方法: 一.方法簡介1.定義 是把所有可能的輸入資料,即程式的輸入域劃分成若干部分(子集),然後從每一個子集中選取少數具有代表性的資料作為測試用例。該方法是一種重要的,常用的黑盒測試用例設計方法。 &nbs
關於java的一些問題,比較基礎,大家可以看看咯
問題:一瓶汽水一塊錢,喝完退五毛錢,有20元,用java程式寫20元能喝多少汽水 回答:int a; int i; a=20; i=0; a=2*a; while(a>2){ a=a-1; i=
常用運算放大器 - 選型列表(比較全,引數詳細)
附加晶片查詢網址入口:https://www.alldatasheetcn.com/ 29種常用的運算放大器-2018(已經打包完畢):https://download.csdn.net/download/britripe/10831441 TI - 運放 :
字串的複製,比較大小,拼接
1、字串的複製 思路: 方法一:使用庫函式對字串複製strcpy(字元陣列1,字串2) 作用是將字串2複製到字元陣列1中去 char str1[10],str2[]="China"; strcpy(str1,str2); 方法二:建構
任何影象處理其實都是拼數學知識,比較全的矩陣
數學不行就先拿別人的看看吧,比較全: 濾波:FName1為原始資料檔名,FName2為濾波後資料檔名。procedure TForm.Smooth(FName1,FName2:string);var L1 : longint; I, Icount, Fp1
一個比較牛逼好用的圓形progress進度
因公司需要些一個載入的progress。然後美工妹子給出的圖片是這個樣子,開始我是拒絕的。但是男人怎麼能說不行。然後就默默的擼程式碼了。 一、需求說明: 先說下這個圖片的需求: 1.首先最外面一層是有很多小圓點的,當進度沒有
怎麽把PDF文件拆分,有什麽好用的方法
找到 圖片 ges ffffff 技術分享 點擊 不知道 ofo 行操作 怎麽把PDF文件拆分呢?很多實用PDF文件的朋友都會有不知道怎麽拆分PDF文件的頭疼之處,其實想要拆分PDF文件並不是那麽難,只需要找對PDF編輯器就可以進行操作了,下面小編就為大家分享一下PDF文件