當前位置:首頁 » 操作系統 » 資料庫的類庫

資料庫的類庫

發布時間: 2022-07-24 08:26:33

A. c#編程中類庫是什麼

一系列提供服務的類集合,公開相應介面(API)。
類庫(Class Library)是一個綜合性的面向對象的可重用類型集合,這些類型包括:介面、抽象類和具體類。

類庫可以解決一系列常見編程任務(包括諸如字元串管理、數據收集、資料庫連接以及文件訪問等任務),還可以解決多種專用開發任務(控制台應用程序、桌面應用程序、WEB應用程序等)。

類庫字面意思就是類的集合,類庫不等於框架(Framework),Framework
是比類庫更高一級的概念。[

B. C#類庫怎麼寫怎麼用

類庫是有多個類組成的,每個類為你做系列的操作。以access為例,你建立一個access類庫,這個類庫裡麵包含有多個類,如果想要執行資料庫的刪,改,增加,只調用類庫中一個類的ExecuteNonQuery方法就好了,在其他位置調用ExecuteNonQuery方法的時候,只需要輸入把資料庫連接字元串,命令類型,sql語句和參數就好了。

先寫一個連接SQL的類
public class DBClass
{
public DBClass()
{
//
// TODO: 在此處添加構造函數邏輯
//
}
public SqlConnection getcon()
{
string strCon = "Data Source=(local);DataBase=stu;User ID=sa;PWD=123";
SqlConnection sqlCon = new SqlConnection(strCon);
return sqlCon;
}
}
調用就使用
DBClass DB = new DBClass();
protected void b_user_Click(object sender, EventArgs e)
{
SqlConnection conn = DB.getcon();

C. java的常用的類庫有哪些

一、日誌相關類庫

日誌庫是很常見的,因為你在每一個項目中都需要他們。列印日誌是伺服器端應用中最重要的事情,因為日誌是你了解你的程序發生了什麼的唯一途徑。盡管JDK附帶自己的日誌庫,但是還是有很多更好的選擇可用,例如 Log4j 、 SLF4j 和 LogBack。

Java開發人員應該熟悉日誌記錄的利弊, 並且了解為什麼SLF4J要比Log4J要好。

二、JSON解析庫

在當今世界的web服務和物聯網中(IoT),JSON已經取代了XML,成為從客戶端到伺服器傳送信息的首選協議。有一個好消息和一個壞消息。壞消息 是JDK沒有提供JSON庫。好消息是有許多優秀的第三方庫可以用來解析和創建JSON消息,如 Jackson 和 Gson

一個Java web開發人員應該熟悉Jackson 和 Gson這兩種中的至少一種庫。

三、單元測試庫

單元測試技術的使用,是區分一個一般的開發者和好的開發者的重要指標。程序員經常有各種借口不寫單元測試,但最常見的借口就是缺乏經驗和知識。常見的單測框架有 JUnit , Mockito 和PowerMock 。

《2020最新Java基礎精講視頻教程和學習路線!》


四、通用類庫

有幾個很好的第三方通用庫可供Java開發人員使用,例如 Apache Commons 和 Google Guava 。我會經常在我的代碼中使用這些通用類庫,因為這些類庫都是經過無數開發者實踐過的,無論是實用性還是在性能等方面都是最佳的。

五、Http 庫

我不是很喜歡JDK的一個重要原因就包括他們缺乏對HTTP的支持。雖然可以使用java.net包類,但是這和直接使用像 Apache HttpClient 和 HttpCore 等開源類庫比起來麻煩太多了。

盡管JDK 9將開始HTTP 2.0,也對HTTP的支持做了優化,但是我還是強烈建議所有的Java開發人員熟悉流行的HTTP處理類庫,例如HttpClient和HttpCore HTTP等庫。

六、XML解析庫

市面上有很多XML解析的類庫,如 Xerces , JAXB , JAXP , Dom4j , Xstream 等。 Xerces2是下一代高性能,完全兼容的XML解析工具。Xerces2定義了 Xerces Native Interface (XNI)規范,並提供了一個完整、兼容標準的 XNI 規范實現。該解析器是完全重新設計和實現的,更簡單以及模塊化。

七、Excel讀寫庫

許多應用程序需要提供把數據導出到Excel的功能,如果你要做相同的Java應用程序,那麼你需要 Apache POI API 。

這是一個非常豐富的類庫,你可以從Java程序讀寫XLS文件。

八、位元組碼庫

如果你正在編寫一個框架或者類庫。有一些受歡迎的位元組碼庫如 javassist 和 Cglib Nodep 可以供你選擇,他們可以讓你閱讀和修改應用程序生成的位元組碼。

Javassist使得JAVA位元組碼操作非常簡單。它是一個為編輯Java位元組碼而生的類庫。 ASM 是另一個有用的位元組碼編輯庫。

九、資料庫連接池庫

如果你的Java應用程序與資料庫交互不是使用資料庫連接池庫的話,那麼你就大錯特錯了。因為在運行時創建資料庫連接非常耗時並且會拖慢你的程序。所以牆裂建議使用,有些好用的連接池可供選擇,如 Commons Pool 和 DBCP 。

在web應用程序中,web伺服器通常提供了這些功能。但是在java項目中需要把資料庫連接池的類庫導入到應用中。

十、消息傳遞庫

像日誌和資料庫連接池一樣,消息傳遞也是很多實際的Java項目中必備的。Java提供了JMS Java消息服務,但這不是JDK的一部分,你需要單獨的引入jms.jar。類似地,如果您准備使用第三方消息傳遞協議, Tibco RV 是個不錯的選擇。

十一、PDF處理庫

除了Excel和Word,PDF也是一種常用的文件格式。如果你的應用程序要支持PDF格式的文件處理,你可以使用 iText 和 Apache FOP 類庫。兩者都提供了非常有用的PDF處理功能。

十二、日期和時間庫

在Java之前,JDK的日期和時間庫一直被人們所詬病,比如其非線程安全的、不可變的、容易出錯等。很多開發人員會選擇更好用的 JodaTime 類庫。

但是在Java8推出之後,我們就可以徹底放棄JodaTime了,因為Java 8提供了其所有功能。但是,如果你的代碼運行在一個低版本的JDK中,那麼JodaTime還是值得使用的。

十三、集合類庫

雖然JDK有豐富的集合類,但還是有很多第三方類庫可以提供更多更好的功能。如 Apache Commons Collections 、 Goldman Sachs collections 、 Google Collections 和 Trove 。Trove尤其有用,因為它提供所有標准Collections 類的更快的版本以及能夠直接在原語(primitive)(例如包含int 鍵或值的Map 等)上操作的Collections 類的功能。

FastUtil是另一個類似的API,它繼承了Java Collection Framework,提供了數種特定類型的容器,包括映射map、集合set、列表list、優先順序隊列(prority queue),實現了java.util包的標准介面(還提供了標准類所沒有的雙向迭代器),還提供了很大的(64位)的array、set、list,以及快速、實用的二進制或文本文件的I/O操作類。

十四、郵件API

javax.mail 和 Apache Commons Email 提供了發送郵件的api。它們建立在JavaMail API的基礎上,提供簡化的用法。

十五、HTML解析庫

和XML與JSON類似,HTML是另外一種我們可能要打交道的傳輸格式。值得慶幸的是,我們有jsoup可以大大簡化Java應用程序使用HTML。你不僅可以使用 JSoup 解析HTML還可以創建HTML文檔。

十六、加密

Apache Commons家族中的 Commons Codec 就提供了一些公共的編解碼實現,比如Base64, Hex, MD5,Phonetic and URLs等等。

十七、嵌入式SQL資料庫庫

我真的是非常喜歡像 H2 這種內存資料庫,他可以嵌入到你的Java應用中。在你跑單測的時候如果你需要一個資料庫,用來驗證你的SQL的話,他是個很好的選擇。順便說一句,H2不是唯一嵌入式DB,你還有 Apache Derby 和 HSQL 可供選擇。

十八、JDBC故障診斷庫

有不錯的JDBC擴展庫的存在使得調試變得很容易,例如P6spy,這是一個針對資料庫訪問操作的動態監測框架,它使得資料庫數據可無縫截取和操縱,而不必對現有應用程序的代碼作任何修改。 P6Spy 分發包包括P6Log,它是一個可記錄任何 Java 應用程序的所有JDBC事務的應用程序。其配置完成使用時,可以進行數據訪問性能的監測。

十九、序列化庫

Google Protocol Buffer是一種輕便高效的結構化數據存儲格式,可以用於結構化數據串列化,或者說序列化。它很適合做數據存儲或 RPC 數據交換格式。可用於通訊協議、數據存儲等領域的語言無關、平台無關、可擴展的序列化結構數據格式。目前提供了 C++、Java、Python 三種語言的 API。

二十、網路庫

一些有用的網路庫主要有 Netty 的和 Apache MINA 。如果您正在編寫一個應用程序,你需要做的底層網路任務,可以考慮使用這些庫。

這都是每位Java開發人員應該熟悉的,並且十分有用的庫。Java生態系統非常龐大的,你會發現有很多不同的類庫可以做不同的事情。每個你想到的東西,都可能有一個庫可以做到。

要相信,你遇到的問題,肯定不止你一個遇到過。
要相信,也許有很多人比你更勤奮。
要相信,你用或不用,輪子就在那裡。
要相信,使用這些類庫,你和你的代碼都會變得更好。

原文鏈接:https://blog.csdn.net/u011001084/article/details/79216958

D. 什麼是類庫在C#中怎樣設計類庫

類庫(Class Library)是一個綜合性的面向對象的可重用類型集合,這些類型包括:介面、抽象類和具體類。
類庫可以解決一系列常見編程任務(包括諸如字元串管理、數據收集、資料庫連接以及文件訪問等任務),還可以解決多種專用開發任務(控制台應用程序、桌面應用程序、WEB應用程序等)。
類庫字面意思就是類的集合,類庫不等於框架(Framework),Framework 是比類庫更高一級的概念。

以access為例,建立一個access類庫,這個類庫裡麵包含有多個類,如果想要執行資料庫的刪,改,增加,只調用類庫中一個類的ExecuteNonQuery方法就好了,在其他位置調用ExecuteNonQuery方法的時候,只需要輸入把資料庫連接字元串,命令類型,sql語句和參數就可行。

先寫一個連接SQL的類
public class DBClass
{
public DBClass()
{
//
// TODO: 在此處添加構造函數邏輯
//
}
public SqlConnection getcon()
{
string strCon = "Data Source=(local);DataBase=stu;User ID=sa;PWD=123";
SqlConnection sqlCon = new SqlConnection(strCon);
return sqlCon;
}
}
調用就使用
DBClass DB = new DBClass();
protected void b_user_Click(object sender, EventArgs e)
{
SqlConnection conn = DB.getcon();

E. 想寫一個操作資料庫的通用dll類庫,該注意什麼

1.dll的入口只有一處,出口也只有一處,保證完整性。
2.能進行所有的資料庫操作。
3.所有的函數需要有返回值,並且返回值需要的是最簡單的數據類型,其他的應按照ref傳值
4.所有資源做到有申明就有釋放,有打開就有關閉。
5.不要用static這種東西
6.安全性問題,什麼是私有的,那些是可被外部調用的,受保護的.

F. php資料庫操作之基於Mysqli的資料庫操作類庫

此類庫簡單、易用,便於你自己修改和對功能的改善,能解決大部分
PHP
項目中執行的
SQL
操作。
初步工作
首先,請大家下載這個類庫
M.class.php 再下載一個
Mysqli
連接資料庫的類庫
MysqliDb.class.php(打包下載地址)
新建一個
includes
文件夾,將下載下來的兩個
class
文件,放進去。
然後,請你在項目下創建一個
test.php
文件。註:UTF-8
文件格式
請先根據你機器的情況,填充以下代碼,用於連接資料庫:
復制代碼
代碼如下:
header('Content-Type:text/html;Charset=utf-8');
define('ROOT_PATH',
dirname(__FILE__));
define('DB_HOST',
'localhost');
//資料庫伺服器地址
define('DB_USER',
'root');
//資料庫用戶名
define('DB_PWD',
'×××');//資料庫密碼
define('DB_NAME',
'×××');
//資料庫名稱
define('DB_PORT',
'3306');
//資料庫埠
function
__autoload($className)
{

require_once
ROOT_PATH
.
'/includes/'.
ucfirst($className)
.'.class.php';
//自動載入
class
文件
}
好了,上面的這些操作都是初步工作,下面正式進入類庫的講解。
類庫講解
首先,我們得實例化
M.class.php,實例化很簡單:
復制代碼
代碼如下:
$m
=
new
M();
//這步操作代表
M.class.php
中的所有功能都封裝在了變數
$m

註:
1、M類庫中的方法參數說明,請到
M.class.php
文件中看詳細的注釋,這里不再進行敘述。建議在學習的時候,對照著看下文件中的參數即注釋。
2、講解代碼中用到的資料庫結構為:
復制代碼
代碼如下:
CREATE
TABLE
`user`
(

`id`
int(8)
unsigned
NOT
NULL
auto_increment,

`name`
varchar(50)
default
NULL,

`email`
varchar(100)
default
NULL,

`age`
smallint(3)
default
NULL,

`class_id`
int(8)
default
NULL,

`commit_time`
int(10)
default
NULL,

PRIMARY
KEY
(`id`),

KEY
`name`
(`name`)
)
ENGINE=MyISAM
DEFAULT
CHARSET=utf8
復制代碼
代碼如下:
CREATE
TABLE
`class`
(

`class_id`
int(8)
NOT
NULL
auto_increment,

`class_name`
varchar(100)
default
NULL,

PRIMARY
KEY
(`class_id`)
)
ENGINE=InnoDB
DEFAULT
CHARSET=utf8
並添加一條測試數據。
3、M類庫中,大部分方法都分兩中類型,即:SQL方法;拼接方法,具體在實例中可以看出
4、以下稱述中的
M

M.class.php
文件
方法1、Insert()
添加數據
Insert
方法的全部使用案例如下:
復制代碼
代碼如下:
$m->Insert("user",
null,
array('焦焦',
'[email protected]',
'23',
time()));
//
拼接方法:往`user`表中添加一條數據,返回值為資料庫影響的行數
$m->Insert("user",
null,
array('焦焦',
'[email protected]',
'23',
time()),
true);
//
功能同上,返回
last_insert_id(插入的增長id)
$m->Insert("INSERT
INTO
`user`
(`name`,
`email`,
`age`,
`commit_time`)
VALUES
('張小花',
'[email protected]',
'22',
'".time()."')");
//SQL方法,返回值為資料庫影響的行數
$m->Insert("INSERT
INTO
`user`
(`name`,
`email`,
`age`,
`commit_time`)
VALUES
('張小花',
'[email protected]',
'22',
'".time()."')",
true);
//
同上,返回
last_insert_id
註:Insert
方法中的第二個參數若為null,可自動獲得插入表除
auto_increment
欄位之外的所有欄位,詳情請看M源文件;若要返回值為最後插入的
ID,那麼請設置
Insert
方法的最後一個參數為
true(默認是false);
方法2、Update()
修改數據
update
方法的全部使用案例如下:
復制代碼
代碼如下:
$m->Update("user",
array('name'=>'李茹茹',
'age'=>24),
"id=1");
//拼接方法,修改id為1的數據的名稱為「李茹茹」;年齡為「24」,其方法的返回值為受影響的行數
$m->Update("UPDATE
`user`
SET
`name`='李茹茹',
`age`=24
WHERE
id
=
1");
//SQL
用法,功能同上
方法3、Del()
刪除數據
Del
方法的全部使用案例如下:
復制代碼
代碼如下:
$m->Del('user',
'id=3');
//拼接方法:刪除`user`表中
id
為3的數據,返回受影響的行數
$m->Del("DELETE
FROM
`user`
WHERE
id=4");
//SQL方法:刪除`user`表中
id
為4的數據,返回受影響的行數
$m->Del("DELETE
FROM
`user`
WHERE
id
in
(10,
11,
12)");
//SQL方法:刪除多條數據,刪除`user`表中
id

10、11、12
的數據,返回受影響的行數
方法4、Total()
獲取記錄數,返回值都為int
Del
方法的全部使用案例如下:
復制代碼
代碼如下:
$m->Total('user');
//拼接方法:返回
`user`表中的記錄數,無條件
$m->Total('user',
'id>1');
//拼接方法:返回
`user`表中
id
大於1的記錄數,有條件
$m->Total("SELECT
COUNT(*)
AS
total
FROM
`user`");
//SQL方法,註:使用SQL方法,語句中必須使用
"AS
total",否則會報錯
方法5、IsExists()
檢查數據是否存在,返回值為boolean
復制代碼
代碼如下:
$m->IsExists('user',
"`name`='焦焦'");
//拼接方法:返回`user`表中是否存在`name`為「焦焦」的數據,返回true,若不存在,返回false
方法6、InsertId()
獲取表下一個添加的自動增長id,注意,這里不進行添加操作,只是獲取下一個增長id
復制代碼
代碼如下:
echo
$m->InsertId('user');
//獲取`user`
表下一個添加的自動增長id
方法7、GetRow()
返回單條數據,返回值為一維數組
GetRow
方法的全部使用案例如下:
復制代碼
代碼如下:
$data
=
$m->GetRow("SELECT
`name`,email
FROM
`user`
WHERE
id=1");
//SQL方法,返回一維數組,例如:Array
(
[name]
=>
焦焦
[email]
=>
[email protected]
)
$data
=
$m->GetRow("SELECT
u.`name`,
u.email,
c.class_name
FROM
`user`
u,
`class`
c
WHERE
u.class_id=c.class_id
AND
u.id=1");
//SQL方法,多表查詢
$data
=
$m->GetRow('user',
'`name`,email',
"id=1");
//拼接方法
$data
=
$m->GetRow('user
as
u,`class`
c',
'u.`name`,u.email,c.class_name',
"u.id=1
AND
u.class_id=c.class_id");
//拼接方法,多表查詢
$data
=
$m->GetRow("SELECT
`name`,email
FROM
`user`");
//如果沒有指定條件應該是顯示全部信息,但是在此方法中將默認顯示第一條(不推薦這么使用!!!)
$data
是查詢出來的一維數組。
方法8、GetOne()
返回單個數據
GetOne
方法的全部使用案例如下:
復制代碼
代碼如下:
$name
=
$m->GetOne("SELECT
`name`
FROM
`user`
WHERE
id=1");
//SQL方法,返回一個字元串,例如:焦焦
$name
=
$m->GetOne("user",
"name",
"id=1");
//拼接方法,返回一個字元串,例如:焦焦
方法9、FetchAll()
返回所有記錄
復制代碼
代碼如下:
$data
=
$m->FetchAll("user");
//返回`user`表中的所有記錄,以二維數組的形式
$data
=
$m->FetchAll("SELECT
*
FROM
`user`");
//SQL
方法,功能和返回值同上
$data
=
$m->FetchAll("user",
"name,email",
"id>1",
'id
DESC',
'2');
//返回兩條id>1的數據,只顯示name,email,並且以id
為倒序排序。註:請注意該方法的最後一個參數也可以為'0,2',目的是為分頁准備的,如果第一頁為'0,2'的話,那麼第二頁就是'2,2'
//該方法也支持聯表查詢和多表查詢,下面以聯表查詢為例
$data
=
$m->FetchAll("`user`
as
u
LEFT
JOIN
`class`
as
c
ON
u.class_id=c.class_id",
"u.`name`,u.email,
c.class_name",
"u.id=1");
//注意:該拼接方法中,ON
添加的位置
註:對於該
FetchAll
方法,後續我會寫一篇使用該方法進行完美分頁的文章!!請關注。
方法10、MultiQuery()
執行多條SQL語句
復制代碼
代碼如下:
$sql
=
"INSERT
INTO
user
(`name`,email,
age,
class_id,
commit_time)
VALUES
('賈花花',
'[email protected]',
'22',
'1',
'".time()."')";
//添加一個名叫「賈花花」的學生信息
$sql
.=
";DELETE
FROM
`user`
WHERE
`name`='焦焦'";
//刪除一條名叫「焦焦」的學生信息
//解釋:$sql
是多條
SQL
以英文;(分號)拼接起來的
$data
=
$m->MultiQuery($sql);
//返回為true,代表執行成功;為false,代表執行失敗
類庫講解完畢
到此該類庫的全部功能就講解完畢,希望你能多看看M文件,了解其內部運行的機制。M
文件不會存在執行緩慢情況,請大家放心使用。
如果在使用過程中出現
SQL
拼接錯誤,類庫會報出友善的錯誤提示。
有問題請留言,歡迎大家的批評和建議,加油!學習好運。

G. 什麼是函數庫什麼是內庫(類庫)

庫函數:和語言榜定,c庫,c++庫等,是最基本的庫,也最多支持。一般是國際標准。
比如printf,scanf就是c庫函數
swap就是c++的庫函數

類庫:比如mfc,atl一般類庫和廠家有關,廠家可以生產windows專有的類庫,也可以生產所有平台專有的類庫。一般不是國際標准,個人也可以開發類庫。比如mfc就是vc專用於windows,而boost,libpng(png圖片庫)就是跨平台的。

總之庫函數一般都不是一個人或公司說了算的,都是大家標準的結果,特點庫函數一般要求設計簡單所以不會涉及網路,資料庫,界面圖像等具體的運用,一般是字元(竄)處理,文件處理,線程進程等

H. php+mysql 連接伺服器、資料庫以及執行SQL語句的類庫

我這里有個很好的通用資料庫連接類,我就喜歡用這個,試試看.

<?php
class DB_Handle{

var $ClassName = "DB_Handle";

var $Server;
var $UserName;
var $Password;
var $Database;

var $LinkID=0;
var $QueryResult="";
var $LastInsertID = "";

/* private ignore=>ignore the error and continue, halt=>report the error and halt, report=>report the error and continue */
var $Halt_On_Error = "report";

var $Error = "";
var $ErrNo = 0;

/**public
* remark: This is the db_mysql_class's structure
* function: Set the server,username,password,database variable.
*/
function DB_Handle($server="",$username="",$password="",$database=""){
$this->Server = $server;
$this->UserName = $username;
$this->Password = $password;
$this->Database = $database;

}

/**public
* function: Connect database and select database
* success: retun 1
* failed: return 0
*/
function connect(){

$this->LinkID = mysql_connect($this->Server,$this->UserName,$this->Password);
if(!$this->LinkID){
$this->halt("mysql_connect($this->Server,$this->UserName,$this->Password): Failed");
return 0;
}
if(!@mysql_select_db($this->Database)){
$this->halt("mysql_select_db($this->Database) Failed.");
return 0;
}
mysql_query("SET NAMES UTF8");
return 1;
}

/**public
* function: Check the database, if exist then select
* exist: return 1
* not exist: return 0
*/
function selectDatabase(){
if(@mysql_select_db($this->Database))
return 1;
else
return 0;
}

/**public
* function: Execute SQL instruction
* success: return SQL Result.
* failed: return 0;
*/
function execQuery($sql=""){
if($this->LinkID == 0){
$this->halt("Execute SQL Failed: Hava not valid database connect.");
return 0;
}

ob_start();
$this->QueryResult = mysql_query($sql,$this->LinkID);
$error = ob_get_contents();
ob_end_clean();
if($error){

$this->halt("Execute SQL: mysql_query($sql,$this->LinkID) failed.");
return 0;
}
$reg = "#insert into#";
if(preg_match($reg,$sql)){
$sql = "select @@IDENTITY as id";
$res = mysql_query($sql,$this->LinkID);
$this->LastInsertID = mysql_result($res,0,id);
}
return $this->QueryResult;
}

/** public
* function :Get one query result .
* success:return result
* failed: return 0
*/

function getAresult($sql=""){
ob_start();
$this->QueryResult = mysql_query($sql,$this->LinkID);
$error = ob_get_contents();
ob_end_clean();
if($error){
$this->halt("Halt_On_Error! ");
return "Halt_On_Error! ";
}
$row = @mysql_num_rows($this->QueryResult);
if($row==0){
return "沒有記錄";
}
$rs= @mysql_fetch_row($thi->QueryResult);
echo $rs[0];
}

/**public
* function: Get the query result's row number
* success: return the row fo the Result
* failed: return 0
*/
function getTotalRowNum($result=""){
if($result != "") $this->QueryResult = $result;
$row = @mysql_num_rows($this->QueryResult);
if($row >= 0) return $row;
$this->halt("Get a row of result Failed: Result $result is invalid.");
return 0;
}

/**public
* function: Get the last insert record's id
* success: return id
* failed: return 0
*/
function lastInsertID(){
return $this->LastInsertID;
}

/**public
* function: Get a field's value
* success: return value of the field
* failed: return 0
*/
function getField($result="",$row=0,$field=0){
if($result != "") $this->QueryResult = $result;
$fieldvalue = @mysql_result($this->QueryResult,$row,$field);
if($fieldvalue != "") return $fieldvalue;
$this->halt("Get field: mysql_result($this->QueryResult,$row,$field) failed.");
return 0;

//Here should have error handle
}

/**public
* function: Get next record
* success: return a array of the record's value
* failed: return 0
*/
function nextRecord($result=""){
if($result != "") $this->QueryResult = $result;
$record = @mysql_fetch_array($this->QueryResult);
if(is_array($record)) return $record;
//$this->halt("Get the next record Failed: the Result $result is invalid.");
return 0;
}

/**public
* function: Free the Query Result
* success return 1
* failed: return 0
*/
function freeResult($result=""){
if($result != "") $this->QueryResult = $result;
return @mysql_free_result($this->QueryResult);
}

/**public
* function: Set the Halt_On_Error's state
* success: return 1
* failed: return 0
*/
function setHaltOnError($state="ignore"){
if(!($state == "ignore" || $state == "report" || $state == "halt")){
$this->halt("Set the Halt_On_Error Fail: There is no state value $state");
return 0;
}
$this->Halt_On_Error = $state;
return 1;
}

/**public
* function: Get the Halt_On_Error's state
*/
function getHaltOnError(){
return $this->Halt_On_Error;
}

/**public
* function: Get the class's name
*/
function toString(){
return $this->ClassName;
}

/**private
* function: Error handle
*/
function halt($msg){
$this->Error = @mysql_error($this->LinkID);
$this->ErrNo = @mysql_errno($this->LinkID);
if ($this->Halt_On_Error == "ignore") return;
$this->makeMsg($msg);
if ($this->Halt_On_Error == "halt") die("Session halted");
}

/**private
* function: Make error information and print
*/
function makeMsg($msg){
printf("Database error: %s\n", $msg);
printf("mysql Error: %s (%s)\n",$this->ErrNo,$this->Error);
}
}
//鏈接資料庫
$db=new DB_Handle("localhost","root","root","Database");
$db->connect();
?>

I. .NET里怎麼寫資料庫連接的類庫

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

namespace GameCard.DBUtility
{
public static class DBHelperSqlServer
{
private static SqlConnection connection;
/// <summary>
/// Connection 連接
/// </summary>
public static SqlConnection Connection
{
get
{
//讀取 配置 文件
string connectionString = ConfigurationManager.ConnectionStrings["sqlserver"].ConnectionString;
//沒有這個鏈接
if (connection == null)
{
//新的連接
connection = new SqlConnection(connectionString);
//打開
connection.Open();
}
//鏈接被關閉中
else if (connection.State == System.Data.ConnectionState.Closed)
{
connection.Open();
}
//鏈接在休眠中
else if (connection.State == System.Data.ConnectionState.Broken)
{
connection.Close();
connection.Open();
}
return connection;
}
}

/// <summary>
/// (刪,改)
/// </summary>
/// <param name="safeSql">SQL語句</param>
/// <returns>受影響的行數</returns>
public static int ExecuteCommand(string safeSql)
{
SqlCommand cmd = new SqlCommand(safeSql, Connection);
return cmd.ExecuteNonQuery();
}
/// <summary>
/// (刪,改)
/// </summary>
/// <param name="safeSql">SQL語句</param>
/// <param name="values">SqlParameter[]</param>
/// <returns>受影響的行數</returns>
public static int ExecuteCommand(string sql, params SqlParameter[] values)
{
SqlCommand cmd = new SqlCommand(sql, Connection);
cmd.Parameters.AddRange(values);
return cmd.ExecuteNonQuery();
}

/// <summary>
/// (增)
/// </summary>
/// <param name="safeSql">SQL語句</param>
/// <returns>當前行,第一列值</returns>
public static object GetScalar(string safeSql)
{
SqlCommand cmd = new SqlCommand(safeSql, Connection);
return cmd.ExecuteScalar();
}
/// <summary>
/// (增)
/// </summary>
/// <param name="safeSql">SQL語句</param>
/// <param name="values">SqlParameter[]</param>
/// <returns>當前行,第一列值</returns>
public static object GetScalar(string sql, params SqlParameter[] values)
{
SqlCommand cmd = new SqlCommand(sql, Connection);
cmd.Parameters.AddRange(values);
return cmd.ExecuteScalar();
}

/// <summary>
/// DataReader (查)
/// </summary>
/// <param name="safeSql">SQL語句</param>
/// <returns>SqlDataReader</returns>
public static SqlDataReader GetReader(string safeSql)
{
SqlCommand cmd = new SqlCommand(safeSql, Connection);
SqlDataReader reader = cmd.ExecuteReader();
return reader;
}
/// <summary>
/// DataReader (查)
/// </summary>
/// <param name="safeSql">SQL語句</param>
/// <param name="values">SqlParameter[]</param>
/// <returns>SqlDataReader</returns>
public static SqlDataReader GetReader(string sql, params SqlParameter[] values)
{
SqlCommand cmd = new SqlCommand(sql, Connection);
cmd.Parameters.AddRange(values);
SqlDataReader reader = cmd.ExecuteReader();
return reader;
}

/// <summary>
/// DataTable (查)
/// </summary>
/// <param name="safeSql">SQL語句</param>
/// <returns>DataTable</returns>
public static DataTable GetDataSet(string safeSql)
{
DataSet ds = new DataSet();
SqlCommand cmd = new SqlCommand(safeSql, Connection);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
return ds.Tables[0];
}
/// <summary>
/// DataTable (查)
/// </summary>
/// <param name="safeSql">SQL語句</param>
/// <param name="values">SqlParameter[]</param>
/// <returns>DataTable</returns>
public static DataTable GetDataSet(string sql, params SqlParameter[] values)
{
DataSet ds = new DataSet();
SqlCommand cmd = new SqlCommand(sql, Connection);
cmd.Parameters.AddRange(values);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
return ds.Tables[0];
}
/// <summary>
/// 輸入
/// </summary>
/// <param name="paraName">參數</param>
/// <param name="type">類型</param>
/// <param name="size">大小</param>
/// <param name="values">值</param>
/// <returns>SqlParameter</returns>
public static SqlParameter MakeInParameter(string paraName, SqlDbType type, int size, object values)
{
return MakeParam(paraName, (SqlDbType)type, size, ParameterDirection.Input, values);
}
/// <summary>
/// 輸出
/// </summary>
/// <param name="paraName">參數</param>
/// <param name="type">類型</param>
/// <param name="size">大小</param>
/// <param name="values">值</param>
/// <returns>SqlParameter</returns>
public static SqlParameter MakeOutParameter(string paraName, SqlDbType type, int size)
{
return MakeParam(paraName, (SqlDbType)type, size, ParameterDirection.Output, null);
}
private static SqlParameter MakeParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value)
{
SqlParameter param;

if (Size > 0)
{
param = new SqlParameter(ParamName, DbType, Size);
}
else
{
param = new SqlParameter(ParamName, DbType);
}
param.Direction = Direction;
if (!(Direction == ParameterDirection.Output && Value == null))
{
param.Value = Value;
}
return param;
}

}
}

熱點內容
android64位開發環境 發布:2025-01-20 01:58:01 瀏覽:261
阿里雲伺服器能搭美國站點 發布:2025-01-20 01:49:34 瀏覽:276
安卓手機壁紙如何更換成動態壁紙 發布:2025-01-20 01:40:27 瀏覽:705
安卓微信簽名在哪裡修改 發布:2025-01-20 01:25:31 瀏覽:109
安卓電腦管家怎麼恢復出廠設置 發布:2025-01-20 01:24:06 瀏覽:313
qt編譯sqlite庫 發布:2025-01-20 01:22:30 瀏覽:525
360攝像頭存儲設置 發布:2025-01-20 01:16:01 瀏覽:538
js防緩存 發布:2025-01-20 01:15:47 瀏覽:495
編程生日卡 發布:2025-01-20 01:15:14 瀏覽:206
android備忘錄源碼 發布:2025-01-20 01:06:32 瀏覽:455