當前位置:首頁 » 操作系統 » ci資料庫操作框架

ci資料庫操作框架

發布時間: 2022-04-03 20:08:37

⑴ 如何配置ci框架連接sqlserver

一、啟用FileTable
1、修改資料庫引擎的屬性
打開「SQL Server配置管理器」,修改SQL Server資料庫引擎的屬性。使用此頁可針對此 Microsoft SQL Server 2012安裝啟用 FILESTREAM。

(1)針對 Transact-SQL 訪問啟用 FILESTREAM
選中此項可針對 Transact-SQL 訪問啟用 FILESTREAM。 必須選中此控制選項,才能使用其他控制選項。如果不啟用此選項,就不能添加FileStream文件組。
(2)針對文件 I/O 流訪問啟用 FILESTREAM
選中此項可針對 FILESTREAM 啟用 Win32 流訪問。
(3)Windows 共享名
使用此控制選項可輸入將用來存儲 FILESTREAM 數據的 Windows 共享的名稱。默認為該SQL Server實例的名稱。
(4)允許遠程客戶端針對 FILESTREAM 數據啟用流訪問
選中此控制選項可允許遠程客戶端訪問此伺服器上的此 FILESTREAM 數據。

2、修改伺服器的屬性
打開「SQL Server Management Studio」,修改該實例的配置。默認配置如下:

上述選項解釋如下:
(1)「FILESTREAM 訪問級別」顯示 SQL Server 實例上支持的 FILESTREAM 的當前級別。若要更改訪問級別,請選擇以下值之一:
已禁用
無法將二進制大型對象 (BLOB) 數據存儲在文件系統中。此為默認值。即filestream access level=0
已啟用 Transact-SQL 訪問
可使用 Transact-SQL 訪問 FILESTREAM 數據,但不能通過文件系統進行訪問。即filestream access level=1
已啟用完全訪問
FILESTREAM 數據可使用 Transact-SQL 以及通過文件系統進行訪問。即filestream access level=0
注意:在首次啟用 FILESTREAM 時,您可能需要重新啟動計算機才能配置驅動程序。
(2)「FILESTREAM 共享名稱」顯示在安裝過程中選擇的 FILESTREAM 共享的只讀名稱。

在本次實驗中,我們將「FILESTREAM 訪問級別」 設定為:已啟用完全訪問。
如果是通過T-SQL腳本執行,則運行以下腳本:
EXEC sys.sp_configure N'filestream access level', N'2'
RECONFIGURE WITH OVERRIDE

注意:設置完成之後,重啟實例。

3、配置防火牆
若要在防火牆保護的環境中使用 FILESTREAM,客戶端和伺服器都必須能夠將 DNS 名稱解析為包含 FILESTREAM 文件的伺服器。FILESTREAM 要求 Windows 文件共享埠 139 和 445 處於打開狀態。

二、配置文件組
1、添加文件組
完成上述操作之後,就可以為該資料庫添加專用於FileStream的文件組。

如果是通過腳本操作,請運行以下腳本:
ALTER DATABASE [db01] ADD FILEGROUP [FileStreamFileGroup] CONTAINS FILESTREAM

2、添加文件
完成上述操作之後,就可以為該資料庫添加FilStream類型的資料庫文件。

在本例中,系統並沒有為「FileStream數據」的文件類型創建mdf或ndf文件,而是在文件夾C:\SqlData下面自動創建以邏輯名稱命名的文件夾,即 C:\SqlData\FileData。其中filestream.hdr 文件是 FILESTREAM 容器的頭文件。當這個資料庫被刪除時,mdf、ndf、log連同這個文件夾都會被刪除。

如果是通過腳本操作,請運行以下腳本:
ALTER DATABASE [db01] ADD FILE ( NAME = N'FileData', FILENAME = N'C:\SqlData\FileData' ) TO FILEGROUP [FileStreamFileGroup]
注意:在上例中,在運行腳本之前,必須存在C:\SqlData,建議使用右側的選擇按鈕選擇路徑。如果路徑不存在,就會報錯:

同時不能存在重復的文件夾,即不能存在C:\SqlData\FileData。否則也會報錯:


3、啟動非事務訪問
FileTable 使 Windows 應用程序可以獲取 FILESTREAM 數據的 Windows 文件句柄而不需要 SQL Server 事務。為了允許對 SQL Server 中存儲的文件進行此非事務性訪問,必須為要包含 FileTable 的每個資料庫在資料庫級別上指定所需的非事務性訪問級別。

選項解釋如下:
(1)FILESTREAM 非事務訪問
為從文件系統到 FileTables 中存儲的 FILESTREAM 數據的非事務性訪問指定以下選項之一:OFF、READ_ONLY 或 FULL。
如果在伺服器上未啟用 FILESTREAM,則該值將設置為 OFF 並且被禁用。在本次實驗中,將其設置為FULL。
(2)FILESTREAM 目錄名稱
為與所選資料庫相關聯的 FILESTREAM 數據指定目錄名稱。在 FileTable 文件夾層次結構中,此資料庫級目錄將成為在實例級別為 FILESTREAM 指定的共享名稱的子級以及在資料庫中創建的 FileTable 的父級。
如果啟用非事務性訪問時沒有提供目錄名稱,則在以後必須提供它,這樣才能在資料庫中創建 FileTable。

如果是通過腳本執行,如下:
ALTER DATABASE db01
SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'ImageFiles' )
注意:更改現有資料庫時,調用帶 DIRECTORY_NAME FILESTREAM 選項的 ALTER DATABASE (Transact-SQL) 語句。使用這些選項更改目錄名稱時,資料庫必須以獨占方式鎖定,沒有打開的文件句柄。

說明:為檢查是否在資料庫上啟用了非事務性訪問,可以查詢目錄視圖,腳本如下:
SELECT DB_NAME(database_id), non_transacted_access, non_transacted_access_desc
FROM sys.database_filestream_options

三、創建FileTable
1、創建第一個FileTable
「SQL Server Management Studio」只提供一個腳本模板,要想創建FileTable還是得用腳本完成:
USE db01
CREATE TABLE ImageTable1 AS FILETABLE
官方的範本為:
USE [db01]
CREATE TABLE [dbo].[ImageTable1] AS FILETABLE ON [PRIMARY] FILESTREAM_ON [FileStreamFileGroup]
WITH
(FILETABLE_DIRECTORY = N'ImageTable1', FILETABLE_COLLATE_FILENAME = Chinese_PRC_CI_AS)

2、創建第二個FileTable
CREATE TABLE ImageTable2 AS FILETABLE

3、獲取共享路徑
文件表創建之後,就會相應的產生一個文件表共享目錄,該目錄路徑可以通過內建函數獲取:
SELECT FileTableRootPath('ImageTable1')
本次實驗所返回的結果為:\\SQL1\SqlFile\ImageFiles\ImageTable1

4、查看
通過Windows資源管理器,可見已經創建了以GUID命名的文件夾。

通過SQL Server Management Studio,查看錶的結構。


四、操作
1、向文件夾中添加文件
通過 「Windows資源管理器」,向文件夾\\SQL1\SqlFile\ImageFiles\ImageTable1中添加一個文件A01.GIF。然後運行腳本:
select * from ImageTable1
結果如下:

可見, SQL Server自動在Table中添加了記錄。

2、文件改名
運行以下腳本:
update ImageTable1 set name='Cup.GIF' where name='A01.GIF'
通過「Windows資源管理器」,查看文件夾\\SQL1\SqlFile\ImageFiles\ImageTable1,可見文件A01.GIF已經被改名為Cup.GIF 。

3、查看共享文件夾
我們可以繼續復制其他文件,然後通過「Windows資源管理器」,查看文件夾。


4、刪除文件
可以使用腳本刪除,例如:
Delete ImageTable1 where name='Cup.GIF'
或者,通過「Windows資源管理器」直接刪除該文件。

五、備份和還原

1、備份資料庫
使用 SQL Server 備份資料庫時,FILESTREAM 數據將與資料庫中的結構化數據一起備份。


2、部分備份
如果不想將 FILESTREAM 數據與關系數據一起備份,則可以使用部分備份將 FILESTREAM 文件組排除在外。

⑵ ci框架中如何連接兩個資料庫,一個是本地的資料庫,一個是遠程的,我要同時操作兩個資料庫

ci手冊中貌似無法設置兩個資料庫,我遇到這樣的問題都是遠程資料庫有個介面地址。然後訪問它來取得遠程數據的。

⑶ ci框架如何使用 原生sql

是啊$sql = 'delete select update insert'; $this->db->query($sql);原生的沒有框架執速度快的,你不要誤導別人拉句子就是試驗品 查看更多答案>>

⑷ CI框架如何在視圖輸出控制器來的資料庫數據

php"><?phpecho$news_item[title];?>

改為

<?phpecho$news_item->title;?>

⑸ ci 框架怎麼用模型獲取數據顯示到視圖上

創建你的數據模型


資料庫的運算並不是在控制類中進行的,而是在數據模型中,這樣他們就可以在後面很容易地被反復使用。數據模型就是對你的資料庫或其他數據存儲方式進行取回、插入和更新的地方,它們的功能是展示你的數據(They

representyourdata)。


打開application/models文件夾新建一個文件news_model.php

,代碼如下。確保你已經按照這里的說明配置了自己的資料庫並且資料庫伺服器與PHP.ini有相應配置。

<?php
classNews_modelextendsCI_Model{
publicfunction__construct()
{
$this->load->database();
}
}


這段代碼和早前寫過的控制器的代碼類似。它創建了一個繼承CI_Model的數據模型,並用來載入資料庫。通過

$this->db對象就可以使用資料庫類了。


在對資料庫進行查詢前,我們要先建一個數據表。連接你的資料庫並執行下面的SQL命令,並在裡面加些內容。

CREATETABLEnews(
idint(11)NOTNULLAUTO_INCREMENT,
titlevarchar(128)NOTNULL,
slugvarchar(128)NOTNULL,
texttextNOTNULL,
PRIMARYKEY(id),
KEYslug(slug)
);


現在資料庫和數據模型都設置好了,我們需要一個方法來把我們的文章從資料庫中讀取出來。資料庫抽象層已經包含在CodeIgniter的ActiveRecord模式中了。這樣可以確保只寫一次查詢就可以應用到

所有的資料庫系統上。在你的資料庫模型中添加如下代碼。

publicfunctionget_news($slug=FALSE){
if($slug===FALSE)
{
$query=$this->db->get('news');
return$query->result_array();
}

$query=$this->db->get_where('news',array('slug'=>$slug));
return$query->row_array();
}


通過上面的代碼可以實現兩個不同的查詢,你可以得到所有的新聞紀錄,也可以通過slug得到某一篇新聞。你可能注意到了

$slug變數在查詢前並沒有被檢驗過(sanitized),因為ActiveRecord類已經把這個工作做完啦。


顯示新聞


既然查詢已經寫完了,我們就要把這個數據模型和用來顯示新聞內容的視圖聯系起來了。其實這個工作在我們之前寫的pages控制類中就可以實現,但為了更清楚地向大家說明,我們來定義一個新的news控制類

application/controllers/news.php,代碼如下。

<?php
classNewsextendsCI_Controller{
publicfunction__construct()
{
parent::__construct();
$this->load->model('news_model');
}
publicfunctionindex()
{
$data['news']=$this->news_model->get_news();
}
publicfunctionview($slug)
{
$data['news_item']=$this->news_model->get_news($slug);
}
}


看看上面的代碼就會發現和我們之前寫過的文件相似。首先,__construct方法是父級類(CI_Controller)

的構造函數,並調用了數據模型,這樣這個控制器中的其他方法就能使用那個數據模型了。


其次,這里有兩個方法分別用來顯示所有的新聞和某一條。在第二個方法中可以看到$slug

變數被傳遞給了數據模型中的方法。數據模型就是用這個slug來確定需要返回哪一篇文章的。


現在通過數據模型,數據已經被控制器獲得了,但還無法顯示出來。下面我們就要把數據傳遞給視圖了。

publicfunctionindex(){
$data['news']=$this->news_model->get_news();
$data['title']='Newsarchive';
$this->load->view('templates/header',$data);
$this->load->view('news/index',$data);
$this->load->view('templates/footer');
}


上面的代碼從數據模型中獲得了所有新聞的記錄,並把它們賦值給了一個變數。頁面的標題也賦給了$data['title']

,這些所有的數據都會傳遞給視圖。現在你需要創建一個視圖來顯示這些新聞。新建

application/views/news/index.php代碼如下。

<?phpforeach($newsas$news_item):?>
<h2><?phpecho$news_item['title']?></h2>
<divclass="main">
<?phpecho$news_item['text']?>
</div>
<p><ahref="http://[你的域名]/index.php/news/<?phpecho$news_item['slug']?>">Viewarticle</a></p>
<?phpendforeach?>


在這里,每條新聞都被循環出來展示給讀者了。你可以看到我們的模板是用PHP和HTML混著寫的,如果你更喜歡用模板語言的話,你可以用CodeIgniter的

模板解析器類或者第三方模板解析器(模板引擎)。


新聞概述頁面已經做好了,現在還缺少每一篇文章的頁面。之前寫好的數據模型現在就可以非常簡單地用來實現這個功能啦。你只需要添加一些代碼到控制器並且創建一個視圖。把下面的代碼添加到news控制器中。

publicfunctionview($slug){
$data['news_item']=$this->news_model->get_news($slug);
if(empty($data['news_item']))
{
show_404();
}
$data['title']=$data['news_item']['title'];
$this->load->view('templates/header',$data);
$this->load->view('news/view',$data);
$this->load->view('templates/footer');
}

這里,$slug變數作為參數傳遞給了get_news()
方法,這樣就可以返回特定的某一篇文章了。現在剩下的一件事就是創建視圖

application/views/news/view.php了,代碼如下。

<?php
echo'<h2>'.$news_item['title'].'</h2>';
echo$news_item['text'];


設置路由


因為之前設置了通配符路由規則,現在你需要額外的路由來顯示剛剛寫的控制器。按照下面的代碼修改你的路由文件

(application/config/routes.php)

,這樣就確保了請求調用的是news控制器而不是之前設置的pages控制器。第一行代碼表示的是控制器中通過slug讀取的那條新聞。

$route['news/(:any)']='news/view/$1';
$route['news']='news';
$route['(:any)']='pages/view/$1';
$route['default_controller']='pages/view';


把瀏覽器的地址改回根目錄,在後面加上index.php/news來看看你的新聞頁面吧。

⑹ ci框架怎麼讀寫操作mysql資料庫

首先呢,
1:在database裡面配置資料庫連接,
2:載入 $this->db->database();
3 : 操作資料庫,$this->db->select('*')->get('tablename');
純手打, 不會加技術交流群:522301635

⑺ CI框架如何在控制器裡面鏈接資料庫.然後執行SQL語句

在conf的自動載入,開啟database自動載入,配置好資料庫賬號密碼等,然後在控制器中如下:
$userInfo = $this->db->get('user'); //user為user表名
或者
$query = "select * from user";
$this->db->query($query);

⑻ CI框架中已經連接到一個資料庫,現在我有一個控制器,裡面操作的是另一個資料庫,怎麼連接這個資料庫

重新配置資料庫設置$this->db->databse($config);
$config是一個數組,包含
$config['host'] = ''
$config['database'] = ''
配置可以參考CI中的配置文件database.php

⑼ 您好 在CI框架 在進行資料庫updatae 操作時 方法執行成功了 數據表中卻沒有任何變化 這可能是哪兒出錯

控制層
function test_func(){
//獲取model頁面需要的兩個參數
$competition_id = $_GET["competition_id"];
$report_class = $_GET["report_class"];
$this->load->model("Action"); //引入model
$data["head"] = $this->Action->get_report_item($competition_id, $report_class); //引用model的函數
$this->load->view("test_result",$data); //將結果顯示在test_result.php頁面中
}
view層:
<div id='result_div'>
<h3 style="align:center;color:blue;">添加結果顯示</h3>
<?php if ($head){?> //此處選擇了循環輸出從控制層傳輸的結果
<table align="center"; border="1" cellpadding="1" cellspacing="1">
<tr align="center">
<td>欄位名稱(含義)</td> //該td中顯示的是你從資料庫、即model層中獲取到的數據的含義,想顯示多少,顯示哪個,在這里確認
</tr>
<?php foreach ($head as $item){ ?>
<tr align="center">
<td><?php echo $item->test; ?></td>
</tr>
</table>
<?php }else {
echo 「123」;
}?>
</div>

⑽ 怎麼用ci框架顯示資料庫中的圖片

顯示資料庫中的圖片跟是不是CI框架沒有任何的關系吧,把圖片路勁存到資料庫,然後在CI視圖裡面輸出圖片路勁就可以的,如果你是其他的問題,可以貼出代碼,我給你看下。
<img src="XXX這里輸出資料庫圖片的路勁">

熱點內容
關於安卓版手機不能下載怎麼辦 發布:2024-09-27 23:12:53 瀏覽:812
飢荒海灘安卓什麼時候 發布:2024-09-27 23:12:50 瀏覽:559
編譯卡諾圖化簡邏輯函數 發布:2024-09-27 22:47:07 瀏覽:804
為什麼華為賬號密碼總是登錄不上 發布:2024-09-27 22:46:54 瀏覽:882
長安cs55二代豪華版什麼配置 發布:2024-09-27 22:37:01 瀏覽:874
lol文件夾刪除 發布:2024-09-27 22:36:57 瀏覽:562
哪個配置債券性價比最好 發布:2024-09-27 22:36:54 瀏覽:335
上傳寶寶視頻 發布:2024-09-27 22:32:07 瀏覽:249
物聯網編譯器 發布:2024-09-27 22:21:49 瀏覽:140
oraclesql時間 發布:2024-09-27 22:21:48 瀏覽:894