新聞中心
現(xiàn)代軟件開發(fā)的復(fù)雜性和規(guī)模越來越高,如何提高開發(fā)效率和縮短開發(fā)周期成為了每個開發(fā)人員和團隊的共同問題。在這個過程中,數(shù)據(jù)庫操作往往是一個很耗費時間和精力的環(huán)節(jié),尤其是對于大型應(yīng)用和數(shù)據(jù)量龐大的數(shù)據(jù)庫。本篇文章將介紹如何通過簡化CodeIgniter(CI)框架的數(shù)據(jù)庫操作,提高開發(fā)效率和代碼質(zhì)量。

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比桑植網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式桑植網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋桑植地區(qū)。費用合理售后完善,10年實體公司更值得信賴。
1. ci數(shù)據(jù)庫操作簡介
CodeIgniter是一個輕量級的PHP框架,自帶了強大的數(shù)據(jù)庫類庫,可以方便地進行數(shù)據(jù)讀取、寫入、更新和刪除等操作。CI使用了Active Record的設(shè)計模式,將數(shù)據(jù)操作映射到類的方法中,使得代碼更加直觀和易于維護。但是,CI的數(shù)據(jù)庫操作也存在一些問題,例如:
– Active Record的方法名和參數(shù)存在一定的限制和局限性,可能無法滿足特定的SQL需求;
– 數(shù)據(jù)表和字段的寫法必須遵循一定的規(guī)范和格式,可能會造成代碼的冗余和復(fù)雜性;
– 操作數(shù)據(jù)表的方法存在嵌套和連貫的問題,可能會增加代碼的深度和復(fù)雜度;
– 對于復(fù)雜的數(shù)據(jù)庫操作,需要手動拼接SQL語句,容易出現(xiàn)錯誤和安全問題。
這些問題都會影響開發(fā)效率和代碼質(zhì)量,為此,我們需要進行一些改進和優(yōu)化。
2. 簡化CI數(shù)據(jù)庫操作的方法
為了簡化CI數(shù)據(jù)庫操作,我們可以采用一些有用的方法和技巧,例如:
2.1 引入Query Builder
CodeIgniter 3.0以上版本中,引入了Query Builder類,它是一種更加靈活和易用的數(shù)據(jù)庫操作方式,可以方便地構(gòu)造SQL語句并執(zhí)行查詢。使用Query Builder的好處有:
– 不限制方法和參數(shù),可以使用任意的SQL語句和查詢條件;
– 可以使用各種流暢接口(Fluent Interfaces)和函數(shù)式編程(Functional Programming)的方法,使得代碼更加簡潔和易讀;
– 支持事務(wù)和錯誤處理,可以有效地保證數(shù)據(jù)操作的安全和正確性。
因此,我們建議在CI項目中盡可能使用Query Builder而不是Active Record來進行數(shù)據(jù)庫操作。以下是一些使用Query Builder的例子:
// 初始化Query Builder對象
$this->db->select(‘name, eml’);
$this->db->from(‘users’);
$this->db->where([‘id’=>$id, ‘status’=>1]);
$this->db->limit(10);
$result = $this->db->get()->result_array();
// 使用Query Builder插入數(shù)據(jù)
$data = [
‘name’ => ‘Peter’,
’eml’ => ‘peter@example.com’,
‘created_at’ => date(‘Y-m-d H:i:s’)
];
$this->db->insert(‘users’, $data);
// 使用Query Builder更新數(shù)據(jù)
$data = [
‘name’ => ‘John’,
’eml’ => ‘john@example.com’,
‘updated_at’ => date(‘Y-m-d H:i:s’)
];
$this->db->where(‘id’, $id);
$this->db->update(‘users’, $data);
2.2 使用ORM框架
ORM(Object-Relational Mapping)框架是一種將對象和關(guān)系型數(shù)據(jù)表進行映射的方法,可以將數(shù)據(jù)庫操作轉(zhuǎn)換為面向?qū)ο蟮牟僮?,使得代碼更加清晰和易于維護。在CI項目中,我們可以使用一些流行的ORM框架來簡化數(shù)據(jù)庫操作,例如:
– Doctrine:一個全面性的ORM框架,支持多種數(shù)據(jù)庫和高級查詢語言;
– Eloquent:Laravel框架自帶的ORM框架,擁有流暢的查詢接口和方便的數(shù)據(jù)操作方法;
– CodeIgniter-Doctrine:CI框架的Doctrine封裝,提供了類似Active Record的數(shù)據(jù)操作方式。
使用ORM框架的好處有:
– 代碼風(fēng)格更加清晰和易于維護,可以避免手寫SQL語句和復(fù)雜的數(shù)據(jù)操作方法;
– 可以提高代碼的復(fù)用性和靈活性,支持多種查詢方式和擴展方法;
– 支持對象的自動映射和關(guān)聯(lián),可以方便地處理復(fù)雜的數(shù)據(jù)結(jié)構(gòu)和關(guān)系。
以下是使用Eloquent框架的例子:
// 定義模型類
class User extends \Illuminate\Database\Eloquent\Model {
protected $table = ‘users’;
protected $fillable = [‘name’, ’eml’, ‘password’];
public function profile() {
return $this->hasOne(Profile::class);
}
}
class Profile extends \Illuminate\Database\Eloquent\Model {
protected $table = ‘user_profiles’;
protected $fillable = [‘a(chǎn)ge’, ‘gender’, ‘phone’];
public function user() {
return $this->belongsTo(User::class);
}
}
// 查詢用戶信息及其關(guān)聯(lián)數(shù)據(jù)
$user = User::with(‘profile’)->find(1);
echo $user->name . ‘ age is ‘ . $user->profile->age;
// 新建用戶并關(guān)聯(lián)數(shù)據(jù)
$user = User::create([
‘name’ => ‘John’,
’eml’ => ‘john@example.com’,
‘password’ => ‘123456’
]);
$user->profile()->create([
‘a(chǎn)ge’ => 25,
‘gender’ => ‘male’,
‘phone’ => ‘1234567890’
]);
2.3 封裝常用操作
在開發(fā)過程中,我們通常需要進行一些常見的數(shù)據(jù)庫操作,如查詢分頁、批量更新、批量插入等。為了提高開發(fā)效率和代碼質(zhì)量,我們可以將這些操作封裝成類庫或擴展,以便更方便地復(fù)用和調(diào)用。以下是一些常用的CI數(shù)據(jù)庫操作封裝方法:
– Pagination:封裝了CI的分頁查詢功能,支持自定義分頁大小和樣式;
– Bulk Update:封裝了CI的批量更新功能,支持快速更新大量數(shù)據(jù);
– Batch Insert:封裝了CI的批量插入功能,支持快速插入大量數(shù)據(jù);
– Query Debug:封裝了CI的調(diào)試功能,支持打印執(zhí)行的SQL語句和耗時信息。
這些封裝方法可以在不增加太多代碼和復(fù)雜度的情況下,提高代碼的復(fù)用性和開發(fā)效率。例如,使用Pagination類庫可以在簡單的幾行代碼中實現(xiàn)分頁功能:
// 引入Pagination類庫
$this->load->library(‘pagination’);
// 設(shè)置分頁參數(shù)
$config[‘base_url’] = base_url(‘/users’);
$config[‘total_rows’] = $this->db->count_all(‘users’);
$config[‘per_page’] = 10;
// 初始化分頁類
$this->pagination->initialize($config);
// 查詢數(shù)據(jù)并顯示分頁
$data[‘users’] = $this->db->get(‘users’, $config[‘per_page’], $this->uri->segment(3));
$this->load->view(‘users’, $data);
echo $this->pagination->create_links();
3.
通過上述方法和技巧,我們可以有效地和代碼質(zhì)量。需要注意的是,CI數(shù)據(jù)庫操作雖然簡單易用,但仍然需要謹慎處理,避免出現(xiàn)數(shù)據(jù)安全和性能問題。因此,在開發(fā)過程中,需要對數(shù)據(jù)表和字段進行規(guī)范和合理設(shè)計,對數(shù)據(jù)操作和查詢進行優(yōu)化和測試,以確保代碼的正確和可靠。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗豐富以策略為先導(dǎo)10多年以來專注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計,響應(yīng)式網(wǎng)站制作,設(shè)計師量身打造品牌風(fēng)格,熱線:028-86922220CI的session生成后放在哪
CI的session生成后,默認放在數(shù)據(jù)庫,cookie放在客戶端
CI的session 信息默認是放在cookie里吧,只有在config.php啟用數(shù)據(jù)庫才把session_data 和user_data 放在數(shù)據(jù)庫。
Session 類可以使用戶在瀏覽您的網(wǎng)站時,維持他們的狀態(tài)并跟蹤他們的行為。 Session 類將每個用戶的 session 信息序列化(serialize)后存儲到到 cookie 中(并同時進行加密)。 您還可以將 session 數(shù)據(jù)存儲到數(shù)據(jù)庫中來增強安全性,但是這時要求存儲在用戶 cookie 中的 session ID 值能與數(shù)據(jù)庫中存儲的用戶 session ID 值相匹配。程序默認只在 cookie 中存儲 session。如果您要在數(shù)據(jù)庫中存儲 session 的話,需要按照下面指示的方法,在您的數(shù)據(jù)庫中創(chuàng)建需要的數(shù)據(jù)表。
CI的session 信息默認是放在cookie里吧,只有在config.php啟用數(shù)據(jù)庫才把session_data 和user_data 放在數(shù)據(jù)庫。
你用 IE 的 Internet 設(shè)置里的查看文件夾來查看。
sql server 2023怎么建數(shù)據(jù)庫
、啟用FileTable
1、修改數(shù)據(jù)庫引擎屬性
打SQL Server配置管理器修改SQL Server數(shù)據(jù)庫引擎屬性使用頁針 Microsoft SQL Server 2023安裝啟用 FILESTREAM
?。?)針 Transact-SQL 訪問啟用 FILESTREAM
選項針 Transact-SQL 訪問啟用 FILESTREAM 必須選控制選項才能使用其控制選項啟用選項能添加FileStream文件組
(2)針文件 I/O 流訪問啟用 FILESTREAM
選項針 FILESTREAM 啟用 Win32 流訪問
?。?)Windows 共享名
使用控制選項輸入用存儲 FILESTREAM 數(shù)據(jù) Windows 共享名稱默認該SQL Server實例名稱
(4)允許遠程客戶端針 FILESTREAM 數(shù)據(jù)啟用流訪問
選控制選項允許遠程客戶端訪問服務(wù)器 FILESTREAM 數(shù)據(jù)
2、修改服務(wù)器屬性
打SQL Server Management Studio修改該實例配置默認配置:
述選項解釋:
(1)FILESTREAM 訪問級別顯示 SQL Server 實例支持 FILESTREAM 前級別若要更改訪問級別請選擇值:
已禁用
二進制型象 (BLOB) 數(shù)據(jù)存儲文件系統(tǒng)默認值即filestream access level=0
已啟用 Transact-SQL 訪問
使用 Transact-SQL 訪問 FILESTREAM 數(shù)據(jù)能通文件系統(tǒng)進行訪問即filestream access level=1
已啟用完全訪問
FILESTREAM 數(shù)據(jù)使用 Transact-SQL 及通文件系統(tǒng)進行訪問即filestream access level=0
注意:首啟用 FILESTREAM 您能需要重新啟計算機才能配置驅(qū)程序
?。?)FILESTREAM 共享名稱顯示安裝程選擇 FILESTREAM 共享讀名稱
本實驗我FILESTREAM 訪問級別 設(shè)定:已啟用完全訪問
通T-SQL腳本執(zhí)行則運行腳本:
EXEC sys.sp_configure N’filestream access level’, N’2′
RECONFIGURE WITH OVERRIDE
注意:設(shè)置完重啟實例
3、配置防火墻
若要防火墻保護環(huán)境使用 FILESTREAM客戶端服務(wù)器都必須能夠 DNS 名稱解析包含 FILESTREAM 文件服務(wù)器FILESTREAM 要求 Windows 文件共享端口處于打狀態(tài)
二、配置文件組
1、添加文件組
完述操作該數(shù)據(jù)庫添加專用于FileStream文件組
通腳本操作請運行腳本:
ALTER DATABASE ADD FILEGROUP CONTAINS FILESTREAM
2、添加文件
完述操作該數(shù)據(jù)庫添加FilStream類型數(shù)據(jù)庫文件
本例系統(tǒng)并沒FileStream數(shù)據(jù)文件類型創(chuàng)建mdf或ndf文件文件夾C:\SqlData面自創(chuàng)建邏輯名稱命名文件夾即 C:\SqlData\FileData其filestream.hdr 文件 FILESTREAM 容器文件數(shù)據(jù)庫刪除mdf、ndf、log連同文件夾都刪除
通腳本操作請運行腳本:
ALTER DATABASE ADD FILE ( NAME = N’FileData’, FILENAME = N’C:\SqlData\FileData’ ) TO FILEGROUP
注意:例運行腳本前必須存C:\SqlData建議使用右側(cè)選擇按鈕選擇路徑路徑存報錯:
同能存重復(fù)文件夾即能存C:\SqlData\FileData否則報錯:
3、啟非事務(wù)訪問
FileTable 使 Windows 應(yīng)用程序獲取 FILESTREAM 數(shù)據(jù) Windows 文件句柄需要 SQL Server 事務(wù)允許 SQL Server 存儲文件進行非事務(wù)性訪問必須要包含 FileTable 每數(shù)據(jù)庫數(shù)據(jù)庫級別指定所需非事務(wù)性訪問級別
選項解釋:
?。?)FILESTREAM 非事務(wù)訪問
文件系統(tǒng) FileTables 存儲 FILESTREAM 數(shù)據(jù)非事務(wù)性訪問指定選項:OFF、READ_ON 或 FULL
服務(wù)器未啟用 FILESTREAM則該值設(shè)置 OFF 并且禁用本實驗其設(shè)置FULL
?。?)FILESTREAM 目錄名稱
與所選數(shù)據(jù)庫相關(guān)聯(lián) FILESTREAM 數(shù)據(jù)指定目錄名稱 FileTable 文件夾層結(jié)構(gòu)數(shù)據(jù)庫級目錄實例級別 FILESTREAM 指定共享名稱級及數(shù)據(jù)庫創(chuàng)建 FileTable 父級
啟用非事務(wù)性訪問沒提供目錄名稱則必須提供才能數(shù)據(jù)庫創(chuàng)建 FileTable
通腳本執(zhí)行:
ALTER DATABASE db01
SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N’ImageFiles’ )
注意:更改現(xiàn)數(shù)據(jù)庫調(diào)用帶 DIRECTORY_NAME FILESTREAM 選項 ALTER DATABASE (Transact-SQL) 語句使用些選項更改目錄名稱數(shù)據(jù)庫必須獨占式鎖定沒打文件句柄
說明:檢查否數(shù)據(jù)庫啟用非事務(wù)性訪問查詢目錄視圖腳本:
SELECT DB_NAME(database_id), non_transacted_access, non_transacted_access_desc
FROM sys.database_filestream_options
三、創(chuàng)建FileTable
1、創(chuàng)建第FileTable
SQL Server Management Studio提供腳本模板要想創(chuàng)建FileTable用腳本完:
USE db01
CREATE TABLE ImageTable1 AS FILETABLE
官范本:
USE
CREATE TABLE . AS FILETABLE ON FILESTREAM_ON
WITH
(FILETABLE_DIRECTORY = N’ImageTable1′, FILETABLE_COLLATE_FILENAME = Chinese_PRC_CI_AS)
2、創(chuàng)建第二FileTable
CREATE TABLE ImageTable2 AS FILETABLE
3、獲取共享路徑
文件表創(chuàng)建相應(yīng)產(chǎn)文件表共享目錄該目錄路徑通內(nèi)建函數(shù)獲?。?/p>
SELECT FileTableRootPath(‘ImageTable1’)
本實驗所返結(jié):\\SQL1\SqlFile\ImageFiles\ImageTable1
4、查看
通Windows資源管理器見已經(jīng)創(chuàng)建GUID命名文件夾
通SQL Server Management Studio查看表結(jié)構(gòu)
四、操作
1、向文件夾添加文件
通 Windows資源管理器向文件夾\\SQL1\SqlFile\ImageFiles\ImageTable1添加文件A01.GIF運行腳本:
select * from ImageTable1
結(jié):
見 SQL Server自Table添加記錄
2、文件改名
運行腳本:
update ImageTable1 set name=’Cup.GIF’ where name=’A01.GIF’
通Windows資源管理器查看文件夾\\SQL1\SqlFile\ImageFiles\ImageTable1見文件A01.GIF已經(jīng)改名Cup.GIF
3、查看共享文件夾
我繼續(xù)復(fù)制其文件通Windows資源管理器查看文件夾
4、刪除文件
使用腳本刪除例:
Delete ImageTable1 where name=’Cup.GIF’
或者通Windows資源管理器直接刪除該文件
五、備份原
1、備份數(shù)據(jù)庫
使用 SQL Server 備份數(shù)據(jù)庫FILESTREAM 數(shù)據(jù)與數(shù)據(jù)庫結(jié)構(gòu)化數(shù)據(jù)起備份
2、部備份
ci數(shù)據(jù)庫操作的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于ci數(shù)據(jù)庫操作,簡化CI數(shù)據(jù)庫操作,提高開發(fā)效率,CI的session生成后放在哪,sql server 2023怎么建數(shù)據(jù)庫的信息別忘了在本站進行查找喔。
創(chuàng)新互聯(lián)【028-86922220】值得信賴的成都網(wǎng)站建設(shè)公司。多年持續(xù)為眾多企業(yè)提供成都網(wǎng)站建設(shè),成都品牌建站設(shè)計,成都高端網(wǎng)站制作開發(fā),SEO優(yōu)化排名推廣服務(wù),全網(wǎng)營銷讓企業(yè)網(wǎng)站產(chǎn)生價值。
文章題目:簡化CI數(shù)據(jù)庫操作,提高開發(fā)效率(ci數(shù)據(jù)庫操作)
鏈接地址:http://www.dlmjj.cn/article/dpgepji.html


咨詢
建站咨詢
