1-1.確認系統基本環境設定
1-2.網路TCP/IP設定
1-3.各種網路指令操作
1-4.電腦關機方式與電源計畫
2-1.本機使用者與群組帳戶管理
2-2.密碼的變更、備份與還原
3.本機 NTFS 檔案權限安全性管理
3-1.NTFS 權限種類
3-2.使用者的有限權限
3-3.檔案與資料夾的擁有權
3-4.檔案拷具或搬移後的權限變化
4.管理使用者設定檔之工作環境
4-1.本機使用者設定檔
4-2.漫遊與強制使用者設定檔
4-3.自訂 Default 設定檔
4-4.登入指令檔
4-5.利用「主資料夾」來儲存私人檔案
5.遠端桌面連線管理及磁碟系統的管理
博客來網路書店查詢
星期六, 11月 16, 2024
Windows Server 進度
星期二, 3月 14, 2023
Python AI 第一階段可學技能-1
了解程式基本處理
除了傳統的循序執行、條件分析、重複執行外,
還可以了解各種資料處理,例如字串、list、dict等,
可於開會時模擬客戶需求建構程式流程,確認後再回公司進行語法轉換。
也就是可以一邊聊是非一邊寫出程式,確認客戶的想法是可行的。
例如字串接龍這樣的遊戲,可以在聊天歡樂的氣氛中寫出來,介面等部份可以回辦公室後再改用別的程式語言設計,其他程式語言很難以明確簡單優雅的方式設計程式。
進行程式流程溝通時就會有資料傳遞上的困擾,傳統上我們必須要明確確認有多少資料要傳遞,但初步溝通為何不能愉快的方式完成?
如果客戶說最多三件事情,但可能一件或兩件,其他程式很困擾,Python沒問題,函數就規劃預設初始值,你傳遞一個兩個三個資料都沒問題。
那如果客戶說我不知道幾件事情,至少一個,反正能多就多。其他程式語言會很難規劃,Python簡單啦..那就不固定參數,你愛傳遞多少就傳遞多少。
星期四, 9月 24, 2020
ckip詞性說明
| A | 非謂形容詞 |
| Caa | 對等連接詞 |
| Cab | 連接詞,如:等等 |
| Cba | 連接詞,如:的話 |
| Cbb | 關聯連接詞 |
| D | 副詞 |
| Da | 數量副詞 |
| Dfa | 動詞前程度副詞 |
| Dfb | 動詞後程度副詞 |
| Di | 時態標記 |
| Dk | 句副詞 |
| DM | 定量式 |
| I | 感嘆詞 |
| Na | 普通名詞 |
| Nb | 專有名詞 |
| Nc | 地方詞 |
| Ncd | 位置詞 |
| Nd | 時間詞 |
| Nep | 指代定詞 |
| Neqa | 數量定詞 |
| Neqb | 後置數量定詞 |
| Nes | 特指定詞 |
| Neu | 數詞定詞 |
| Nf | 量詞 |
| Ng | 後置詞 |
| Nh | 代名詞 |
| Nv | 名物化動詞 |
| P | 介詞 |
| T | 語助詞 |
| VA | 動作不及物動詞 |
| VAC | 動作使動動詞 |
| VB | 動作類及物動詞 |
| VC | 動作及物動詞 |
| VCL | 動作接地方賓語動詞 |
| VD | 雙賓動詞 |
| VF | 動作謂賓動詞 |
| VE | 動作句賓動詞 |
| VG | 分類動詞 |
| VH | 狀態不及物動詞 |
| VHC | 狀態使動動詞 |
| VI | 狀態類及物動詞 |
| VJ | 狀態及物動詞 |
| VK | 狀態句賓動詞 |
| VL | 狀態謂賓動詞 |
| V_2 | 有 |
| DE | 的之得地 |
| SHI | 是 |
| FW | 外文 |
| COLONCATEGORY | 冒號 |
| COMMACATEGORY | 逗號 |
| DASHCATEGORY | 破折號 |
| DOTCATEGORY | 點號 |
| ETCCATEGORY | 刪節號 |
| EXCLAMATIONCATEGORY | 驚嘆號 |
| PARENTHESISCATEGORY | 括號 |
| PAUSECATEGORY | 頓號 |
| PERIODCATEGORY | 句號 |
| QUESTIONCATEGORY | 問號 |
| SEMICOLONCATEGORY | 分號 |
| SPCHANGECATEGORY | 雙直線 |
| WHITESPACE | 空白 |
nltk詞性說明
| 詞性代碼 | 主要詞性分類 | 詞性說明 | 例子 |
| CC | 連接詞 | 連接詞(Coord Conjuncn) | and,but,or |
| CD | 名詞 | 數字(Cardinal number) | one,two |
| DT | 冠詞 | 冠詞(Determiner) | the,some |
| EX | 名詞 | 存在詞(Existential there) | there |
| FW | (外語) | 外語(Foreign Word) | mon dieu |
| IN | 介系詞 | 介詞(Preposition) | of,in,by |
| JJ | 形容詞 | 形容詞(Adjective) | big |
| JJR | 形容詞 | 形容詞,比較級(Adj., comparative) | bigger |
| JJS | 形容詞 | 形容詞,最高級(Adj., superlative) | biggest |
| LS | 標點符號 | 列點標示(List item marker) | 1,One |
| MD | 動詞 | 助動詞(Modal) | can,should |
| NN | 名詞 | 名詞,單數或不可數(Noun, sing. or mass) | dog |
| NNS | 名詞 | 名詞,複數(Noun, plural) | dogs |
| NNP | 名詞 | 專有名詞,單數(Proper noun, sing.) | Edinburgh |
| NNPS | 名詞 | 專有名詞,複數(Proper noun, plural) | Smiths |
| POS | 介系詞 | 名詞所有格的完結(Possessive ending) | Õs |
| PDT | 形容詞 | 前限定詞(Predeterminer) | all, both |
| PP$ | 代名詞 | 所有代名詞(Possessive pronoun) | my,oneÕs |
| PRP | 代名詞 | 人稱代名詞(Personal pronoun) | I,you,she |
| RB | 副詞 | 助動詞(Adverb) | quickly |
| RBR | 副詞 | 助動詞,比較級(Adverb, comparative) | faster |
| RBS | 副詞 | 助動詞,最高級(Adverb, superlative) | fastest |
| RP | 介系詞 | 虛詞(Particle) | up,off |
| SYM | 標點符號 | 符號(Symbol) | +,%,& |
| TO | 介系詞 | to | to |
| UH | 感嘆詞 | 感嘆詞(Interjection) | oh, oops |
| URL | 名詞 | 網址(URL) | http://blog.pulipuli.info/ |
| VB | 動詞 | 動詞,原型(verb, base form) | eat |
| VBD | 動詞 | 動詞,過去式(verb, past tense) | ate |
| VBG | 動詞 | 動詞,現在進行式(verb, gerund) | eating |
| VBN | 動詞 | 動詞,過去完成式(verb, past part) | eaten |
| VBP | 動詞 | 動詞,現在式(Verb, present) | eat |
| VBZ | 動詞 | 動詞,現在式第三人用(Verb, present) | eats |
| WDT | 名詞 | Wh開頭的限定詞(Wh-determiner) | which,that |
| WP | 代名詞 | Wh代名詞(Wh pronoun) | who,what |
| WP$ | 代名詞 | Wh所有格(Possessive-Wh) | whose |
| WRB | 副詞 | Wh助動詞(Wh-adverb) | how,where |
| , | (標點符號) | 逗點符號(Comma) | , |
| . | (標點符號) | 句子完結符號(Sent-final punct) | . ! ? |
| : | (標點符號) | 句子中間符號(Mid-sent punct.) | : ; Ñ |
| $ | (標點符號) | 金錢符號(Dollar sign) | $ |
| # | (標點符號) | 英鎊符號(Pound sign) | # |
| " | (標點符號) | 括號(quote) | " |
| ( | (標點符號) | 左括弧(Left paren) | ( |
| ) | (標點符號) | 右括弧(Right paren) | ) |
jieba的詞性說明
| 詞性代碼 | 主要詞性分類 | 詞性說明 |
| a | 形容詞 | 取英語形容詞adjective的第1個字母。 |
| ag | 形容詞性語素 | 形容詞代碼為a,語素代碼g前面置以a。 |
| ad | 形容詞-副形詞 | 直接作狀語的形容詞。形容詞代碼a和副詞代碼d並在一起。 |
| an | 形容詞-名形詞 | 具有名詞功能的形容詞。形容詞代碼a和名詞代碼n並在一起。 |
| b | 形容詞-區別詞 | 取漢字“別”的聲母。 |
| c | 連接詞 | 取英語連詞conjunction的第1個字母。 |
| d | 副詞 | 取adverb的第2個字母,因其第1個字母已用於形容詞。 |
| dg | 副詞性語素 | 副詞代碼為d,語素代碼g前面置以d。只有兩個。 |
| df * | 能願動詞: 不要 | 專指不要 |
| e | 嘆詞 | 取英語嘆詞exclamation的第1個字母。 |
| eng * | 外語 | |
| f | 動詞-方位詞(趨向動詞) | 取漢字“方”的聲母。 |
| g | 難以判斷-語素 | 絕大多數語素都能作為合成詞的“詞根”,取漢字“根”的聲母。 |
| h | 副詞-前接成分 | 取英語head的第1個字母。只有兩個。 |
| i | 形容詞-成語 | 取英語成語idiom的第1個字母。 |
| j | 名詞-簡稱略語 | 取漢字“簡”的聲母。 |
| k | 後接成分代詞 | 只有四個。 |
| l | 難以判斷-慣用語 | 慣用語尚未成為成語,有點“臨時性”,取“臨”的聲母。 |
| m | 數詞 | 取英語numeral的第3個字母,n,u已有他用。 |
| mg * | 名詞-干支 | 只有兩個。 |
| mq * | 指示代詞 | 布丁註:不太確定。 |
| n | 名詞 | 取英語名詞noun的第1個字母。 |
| ng | 名詞性語素 | 名詞代碼為n,語素代碼g前面置以n。 |
| nr | 名詞-人名 | 名詞代碼n和“人(ren)”的聲母並在一起。 |
| nrfg * | 名詞-完整人名 | 明確可以辨別為人名的詞。 |
| nrt * | 外國名詞 | 布丁註:不太確定。 |
| ns | 名詞-地名 | 名詞代碼n和處所詞代碼s並在一起。 |
| nt | 名詞-機構團體 | “團”的聲母為t,名詞代碼n和t並在一起。 |
| nz | 名詞-其他專名 | “專”的聲母的第1個字母為z,名詞代碼n和z並在一起。 |
| o | 擬聲詞 | 取英語擬聲詞onomatopoeia的第1個字母。 |
| p | 介詞 | 取英語介詞prepositional的第1個字母。 |
| q | 量詞 | 取英語quantity的第1個字母。 |
| r | 代詞 | 取英語代詞pronoun的第2個字母,因p已用於介詞。 |
| rg * | 代詞-茲 | 只有一個。 |
| rr * | 多數代詞 | 只有三個。 |
| rz * | 代詞-這位 | 只有一個。 |
| s | 名詞-處所詞 (方位名詞) | 取英語space的第1個字母。 |
| t | 時間詞 | 取英語time的第1個字母。 |
| tg | 名詞-時間詞性語素 | 時間詞代碼為t,在語素的代碼g前面置以t。 |
| u | 助詞 | 取英語助詞auxiliary的第2個字母,因a已用於形容詞。 |
| ud * | 結構助詞: 得 | 只有一個。 |
| uj * | 結構助詞: 的 | 只有一個。 |
| uv * | 結構助詞: 地 | 只有一個。 |
| ug * | 動態助詞: 過 | 只有一個。 |
| ul * | 動態助詞: 了 | 只有一個。 |
| uz * | 動態助詞: 著 | 只有一個。 |
| v | 動詞 | 取英語動詞verb的第一個字母。 |
| vg | 動詞性語素 | 動詞代碼為v。在語素的代碼g前面置以V。 |
| vd | 副動詞 | 直接作狀語的動詞。動詞和副詞的代碼並在一起。只有三個。 |
| vi * | 不及物動詞(內動詞) | 只有四個。 |
| vn | 動詞-名動詞 | 指具有名詞功能的動詞。動詞和名詞的代碼並在一起。 |
| vq * | 完成動詞 | 只有四個。 |
| w | 標點符號 | |
| x | 非語素字 | 非語素字只是一個符號,字母x通常用於代表未知數、符號。 |
| y | 語氣詞(語氣助詞) | 取漢字“語”的聲母。 |
| z | 形容詞-狀態詞 | 取漢字“狀”的聲母的前一個字母。 |
| zg * | 副狀態詞 |
星期一, 4月 20, 2020
YOLO於Win10上的安裝-3
請於終端機執行以下敘述
darknet.exe detect cfg\yolov3.cfg yolov3.weights data\dog.jpg
發現到兩個問題
1.
請拷貝「C:\OpenCV」內的「build」的「x64」的「vc15」的「bin」 目錄內的 「opencv_world430.dll 」
到「C:\darknet\」資料夾。
2.
請拷貝「C:\Darknet」內的「build」的「darknet」的「x64」目錄內的 「pthreadVC2.dll 」
到「C:\darknet\」資料夾。
請再次執行以下的語法
darknet.exe detect cfg\yolov3.cfg yolov3.weights data\dog.jpg
關於YOLO於Windows環境內的設定修改與執行請看影片介紹
YOLO於Win10上的安裝-2
1.上方選擇「Release」+「x64」。
2.右方的「方案總管」點選「ALL_BUILD」,再請按下右鍵選擇「建置」點選後執行。
3.右方的「方案總管」點選「INSTALL」,再請按下右鍵選擇「建置」點選後執行。
E- 修改系統變數
請於
Win10的「控制台」的「系統」的「關於」,點選「系統資訊 」。
再請點選「進階系統設定」的「進階」書籤 內「環境變數」 。
請於「系統變數」的「Path」按下「編輯」,於後面增加以下的文字:
%OPENCV_DIR%\x64\vc15\bin;%OPENCV_DIR%\x64\vc15\lib;C:\darknet\build\darknet\x64
F- 下載檔案至darknet資料夾
1.
請下載msvcr100.dll,並放到darknet資料夾中。
https://wikidll.com/microsoft/msvcr100-dll
2.
請下載yolov3.weights,並放到darknet資料夾中。
https://pjreddie.com/media/files/yolov3.weights
關於CMake安裝後YOLO的準備工作請看影片介紹
YOLO於Win10上的安裝-1
1.
請先安裝好Nvidia顯示卡驅動程式與相關資源,
請留意如果您的顯示卡不支援,那這三個安裝程式可能都會失敗。
https://www.nvidia.com/Download/index.aspx?lang=en-us#
https://developer.nvidia.com/cuda-toolkit-archive
https://developer.nvidia.com/cuDNN
2.
請下載並安裝github
https://git-scm.com/
3.
請下載並安裝最新版本的CMake
https://cmake.org/download/
4.
請下載並安裝最新版本的OpenCV:https://opencv.org/releases/
解壓縮後會得到一個叫opencv的文件夾,請把這個文件夾拷貝到C:磁區根目錄下。
5.
由於opencv內提供的相對支援語法只到VS2017,建議安裝VS2017。
下載安裝Visual Studio 2017 Community(Version 15.9)。
但由於DarkNet的元件是2015版本,但Win10執行VS2015會有異狀,
所以點選「使用C++的桌面開發」後請記得點選安裝
「桌上型電腦版的VC++ 2015.3 V14.00 (v140)工具」。
另請記得點選「.Net 桌面開發」 與「使用C++的桌面開發」
B- 下載Darknet與環境變數修改
1.
請開啟檔案總管,切換到C根目錄後輸入cmd後按下enter。
2.
請於終端機輸入
git clone https://github.com/AlexeyAB/darknet.git
3.
請於
Win10的「控制台」的「系統」的「關於」,點選「系統資訊 」。
再請點選「進階系統設定」的「進階」書籤 內「環境變數」 。
請於「使用者變數」按下「新增」
變數名稱 OPENCV_DIR
變數值 C:\\opencv\build
再請按下「確定」。

C- CMake操作
開啟視窗程式後,
請您於「Where is the source code 」點選「Browse Source 」點選darknet目錄,預設於C:\內。
接著也請您於「Where to build the binaries 」點選「Browse Source 」點選darknet目錄,預設於C:\內。
1.
點選「Configure」按鈕,接著
請您於「Specify the generator for this project」點選「Visual Studio 15 2017」
請您於「Optional platform for generator (if empty, generator users:Win32」點選「x64」
下方選擇鈕請點選「Use default native compiliers 」
再請按下「Finish」。
2.
然後點擊「Generate」按鈕,最後點擊「Open Project」按鈕,將會啟動VS2017後開啟「Darknet.sln」。
然後點擊「Generate」按鈕,最後點擊「Open Project」按鈕,將會啟動VS2017後開啟「Darknet.sln」。
星期二, 2月 18, 2020
2020年Python課程開課時間
2020年Python課程開課時間(若有變更則以公司發布的訊息為準):
0408週日開始第四階段
0424週二晚上開始第一階段
0504周一晚上開始第一階段
0507週四晚上開始第二階段
0614週日開始第一階段
0727周一晚上開始第二階段
0804周二晚上開始第三階段
0906周日開始第二階段
1019周一晚上開始第一階段
1027周二晚上開始第二階段
0408週日開始第四階段
0424週二晚上開始第一階段
0504周一晚上開始第一階段
0507週四晚上開始第二階段
0614週日開始第一階段
0727周一晚上開始第二階段
0804周二晚上開始第三階段
0906周日開始第二階段
1019周一晚上開始第一階段
1027周二晚上開始第二階段
星期日, 9月 03, 2017
解釋物件導向與繼承、抽象類別
為了解釋物件導向與繼承..就這樣做了一個十六分鐘的題目。的確有些複雜,建議參考配合C#物件導向章節,如果仍不是很清楚,依照目前課程規劃,比較接近的是C/C++進階課程,再請各位到教室來了解物件導向的來龍去脈。這是第1個檔案(共計四個)。
這是第2個檔案(共計四個)。
這是第3個檔案(共計四個)。
這是第4個檔案(共計四個)。
這是第2個檔案(共計四個)。
這是第3個檔案(共計四個)。
這是第4個檔案(共計四個)。
星期六, 9月 24, 2016
CodeBlocks於Win7 中文碰到問題
中文碰到問題的說明,以Win7為主
Settings功能表內的 editor內
Encoding settings 設定為UTF-8
Settings功能表內的 Compiler內
Compiler settings內的
Other compiler options內輸入
-fexec-charset=BIG-5
-------->
BIG5 是無效的 BIG-5才有效
-->
加入設定後,建議可先把程式碼拷貝出來,儲存成
文字檔案,避免變成亂碼。
重新啟動CodeBlocks
專案略做修改 讓他重新編譯
如果專案修改後還是亂碼,建議開啟新的專案 重新打字
或者拷貝文字檔的內容進去
------------------------------------
XP環境建議改為Windows-950編碼
Settings功能表內的 editor內
Encoding settings 設定為UTF-8
Settings功能表內的 Compiler內
Compiler settings內的
Other compiler options內輸入
-fexec-charset=BIG-5
-------->
BIG5 是無效的 BIG-5才有效
-->
加入設定後,建議可先把程式碼拷貝出來,儲存成
文字檔案,避免變成亂碼。
重新啟動CodeBlocks
專案略做修改 讓他重新編譯
如果專案修改後還是亂碼,建議開啟新的專案 重新打字
或者拷貝文字檔的內容進去
------------------------------------
XP環境建議改為Windows-950編碼
Code::Blocks操作
綠色代表已經儲存
工具列上的Abort按鈕並不是關閉程式
而是將程式轉移到背景
如果不小心轉移到背景 請利用工作管理員找尋
再強制關閉
程式編譯之前必須先把執行的程式關閉
如果寫好的程式在執行 是無法編譯
專案的切換
一次只能執行一個專案 一個專案內只能有一個main() 語法
請在你想要執行的專案名稱上點兩下就可以切換
程式碼是哪一個專案?
左上角會顯示
如果真的找不出來是哪個專案 建議關閉後重新開啟
Code::Blocks Debug
除錯的目的
檢查程式流程確認資料的變化
執行的時候 可以按 F7 或著
Next Line的按鈕 往下一行執行
就可以了解程式執行的流程-->
如果程式跑的流程跟你想的不一樣,
請再確認你的想法,如果你的想法正確,
請修改程式流程。
也可以監看變數的變化
可以在Watches內新增監看的變數
這個新增的變數內容可以修改 不影響原有的資料
只是要做流程的驗證
程式執行流程 也可以查看最下方的Debugger的訊息顯示
除錯若要結束 可以按除錯工具列的X鈕結束
星期二, 8月 16, 2016
視窗程式設計流程
視窗程式設計流程
1.請由左側工具列點選工具置放於表單上
2.右上角的方案總管內設定資源或是視窗程式所需的新增項目
3.右下角的屬性視窗:可變更表單上的控制項屬性
4.右下角的事件視窗:可選擇表單上的控制項執行哪一個事件
例如 我按下按鈕之後,label上會顯示現在的時間
==>
按鈕被按下了,才會有後面的事情。所以程式寫在button1的click事件內
至於程式部分該怎麼寫,就請參考成是基本處理流程
--------------------------------------------------------------------
程式基本處理流程
1.先有想法才有做法。請先把想法整理出來,一次只做一個動作,請排順序。
2.畫流程圖
3.流程圖中每一個執行動作可以有多個上一步,但每個執行動作只能有一個下一步。
若對這主題想做進一步社團討論,請參考以下連結
1.請由左側工具列點選工具置放於表單上
2.右上角的方案總管內設定資源或是視窗程式所需的新增項目
3.右下角的屬性視窗:可變更表單上的控制項屬性
4.右下角的事件視窗:可選擇表單上的控制項執行哪一個事件
例如 我按下按鈕之後,label上會顯示現在的時間
==>
按鈕被按下了,才會有後面的事情。所以程式寫在button1的click事件內
至於程式部分該怎麼寫,就請參考成是基本處理流程
--------------------------------------------------------------------
程式基本處理流程
1.先有想法才有做法。請先把想法整理出來,一次只做一個動作,請排順序。
2.畫流程圖
3.流程圖中每一個執行動作可以有多個上一步,但每個執行動作只能有一個下一步。
若對這主題想做進一步社團討論,請參考以下連結
星期一, 6月 06, 2016
蘋果電腦上的C++程式開發
首先請先開啟Xcode,也就是最左邊數過來第三個軟體:
接著請您點選 Create a new Xcode project:
接著請您選取OS X內的Application內的Command Line Tool後按下Next:
請您輸入專案名稱(Product Name)以及組織單位簡稱(Organization identifier),再請您挑選程式語言(Language),為了配合課本,C語言只提格式代碼,後續練習均以C++為主,再請按下Next:
請您輸入挑選儲存的路徑,再請按下Create,專案建立了:
請您輸入程式碼,接著再請您按下執行鈕(最左邊的三角形按鈕):
執行畫面將會出現在程式碼的右下方:
接著請您點選 Create a new Xcode project:
請您輸入專案名稱(Product Name)以及組織單位簡稱(Organization identifier),再請您挑選程式語言(Language),為了配合課本,C語言只提格式代碼,後續練習均以C++為主,再請按下Next:
請您輸入挑選儲存的路徑,再請按下Create,專案建立了:
請您輸入程式碼,接著再請您按下執行鈕(最左邊的三角形按鈕):
執行畫面將會出現在程式碼的右下方:
星期日, 5月 29, 2016
組裝的第二個問題-電池供電給Arduino板子
本例由電池供電給Arduino板子有2種方式
1. 使用圖一的DC快速接頭(公頭), 接至Arduino板子的DC母插座, 正極是接至L298N的12V-GND-5V插座中的5V
2. 直接由L298N 5V拉一條線(杜邦公公線即可)接至Arduino板子的VIN供電
1是之前的接法, 2是簡化後的接法, 都可以
--
L298N的GND一條是接到電池負極, 一條是接到Arduino板的GND
--
因掃地機有多個馬達, 故電池採用4節+2節(原2馬達輪子用的話, 4節就夠了), 所以請將4+2電池盒串聯(4節的黑接到2節的紅)即可
--
快速接頭使用較彈性, 一個可用在掃地機, 另一個可搭配9V電池扣, 使用9V電池供電給離線的Arduino板使用(例機械手臂、LED/LCD)
另外一個配線的補充
星期五, 5月 27, 2016
C++與SQLite--資料列表
void getTableData()
{
sqlite3_stmt *statement;
char *query = "select * from student";
if ( sqlite3_prepare(dbfile, query, -1, &statement, 0 ) == SQLITE_OK )
{
int ctotal = sqlite3_column_count(statement);
int res = 0;
while ( 1 )
{
res = sqlite3_step(statement);
if ( res == SQLITE_ROW )
{
for ( int i = 0; i < ctotal; i++ )
{
string s = (char*)sqlite3_column_text(statement, i);
cout << s << " " ;
}
cout << endl;
}
if ( res == SQLITE_DONE )
{
cout << "done " << endl;
break;
}
}
}
}
{
sqlite3_stmt *statement;
char *query = "select * from student";
if ( sqlite3_prepare(dbfile, query, -1, &statement, 0 ) == SQLITE_OK )
{
int ctotal = sqlite3_column_count(statement);
int res = 0;
while ( 1 )
{
res = sqlite3_step(statement);
if ( res == SQLITE_ROW )
{
for ( int i = 0; i < ctotal; i++ )
{
string s = (char*)sqlite3_column_text(statement, i);
cout << s << " " ;
}
cout << endl;
}
if ( res == SQLITE_DONE )
{
cout << "done " << endl;
break;
}
}
}
}
C++與SQLite--刪除資料
int deleteRow()
{
int rollno;
cout << " 輸入學號 :" ;
cin >> rollno ;
if(cin.fail( ))
{
cin.clear( );
cout<<"學號格式錯了";
return 0;
}
std::stringstream strm;
strm << "delete from student " << " where roll=" << rollno ;
string s = strm.str();
char *str = &s[0];
//cout << str << endl;
sqlite3_stmt *statement;
int result;
char *query = str;
{
if(sqlite3_prepare(dbfile,query,-1,&statement,0)==SQLITE_OK)
{
int res=sqlite3_step(statement);
result=res;
sqlite3_finalize(statement);
}
return result;
}
return 0;
}
{
int rollno;
cout << " 輸入學號 :" ;
cin >> rollno ;
if(cin.fail( ))
{
cin.clear( );
cout<<"學號格式錯了";
return 0;
}
std::stringstream strm;
strm << "delete from student " << " where roll=" << rollno ;
string s = strm.str();
char *str = &s[0];
//cout << str << endl;
sqlite3_stmt *statement;
int result;
char *query = str;
{
if(sqlite3_prepare(dbfile,query,-1,&statement,0)==SQLITE_OK)
{
int res=sqlite3_step(statement);
result=res;
sqlite3_finalize(statement);
}
return result;
}
return 0;
}
C++與SQLite--更新資料
int updateRow()
{
int rollno;
float gpa;
cout << " 輸入學號 :" ;
cin >> rollno ;
if(cin.fail( ))
{
cin.clear( );
cout<<"學號格式錯了";
return 0;
}
cout << " 輸入新的平均成績 : " ;
cin >> gpa;
if(cin.fail( ))
{
cin.clear( );
cout<<"成績格式錯了";
return 0;
}
std::stringstream strm;
strm << "update student set cgpa=" << gpa << " where roll=" << rollno ;
string s = strm.str();
char *str = &s[0];
//cout << str << endl;
sqlite3_stmt *statement;
int result;
//char *query="update student set cgpa=3.66 where roll=11";
char *query = str;
{
if(sqlite3_prepare(dbfile,query,-1,&statement,0)==SQLITE_OK)
{
int res=sqlite3_step(statement);
result=res;
sqlite3_finalize(statement);
}
return result;
}
return 0;
}
{
int rollno;
float gpa;
cout << " 輸入學號 :" ;
cin >> rollno ;
if(cin.fail( ))
{
cin.clear( );
cout<<"學號格式錯了";
return 0;
}
cout << " 輸入新的平均成績 : " ;
cin >> gpa;
if(cin.fail( ))
{
cin.clear( );
cout<<"成績格式錯了";
return 0;
}
std::stringstream strm;
strm << "update student set cgpa=" << gpa << " where roll=" << rollno ;
string s = strm.str();
char *str = &s[0];
//cout << str << endl;
sqlite3_stmt *statement;
int result;
//char *query="update student set cgpa=3.66 where roll=11";
char *query = str;
{
if(sqlite3_prepare(dbfile,query,-1,&statement,0)==SQLITE_OK)
{
int res=sqlite3_step(statement);
result=res;
sqlite3_finalize(statement);
}
return result;
}
return 0;
}
C++與SQLite--新增資料
student getStudent()
{
student stud;
int id;
string name;
float gpa;
cout << " 輸入學號 :" ;
cin >> id;
if(cin.fail( ))
{
cin.clear( );
cout<<"學號格式錯了";
}
cout << " 輸入姓名 : " ;
cin >> name;
cout << " 輸入平均成績 : " ;
cin >> gpa;
if(cin.fail( ))
{
cin.clear( );
cout<<"成績格式錯了";
}
stud.setid(id);
stud.setName(name);
stud.setcgpa(gpa);
return stud;
}
int addDataRow()
{
student stud = getStudent();
//cout << stud.getName() << endl;
std::stringstream strm;
strm << "insert into student(roll,name,cgpa) values(" << stud.getid() << ",'" << stud.getName() << "'," << stud.getcgpa() << ")";
string s = strm.str();
char *str = &s[0];
//cout << str << endl;
sqlite3_stmt *statement;
int result;
//char *query="insert into student(roll,name,cgpa)values(4,'uuu',6.6)";
char *query = str;
{
if(sqlite3_prepare(dbfile,query,-1,&statement,0)==SQLITE_OK)
{
int res=sqlite3_step(statement);
result=res;
sqlite3_finalize(statement);
}
return result;
}
return 0;
}
{
student stud;
int id;
string name;
float gpa;
cout << " 輸入學號 :" ;
cin >> id;
if(cin.fail( ))
{
cin.clear( );
cout<<"學號格式錯了";
}
cout << " 輸入姓名 : " ;
cin >> name;
cout << " 輸入平均成績 : " ;
cin >> gpa;
if(cin.fail( ))
{
cin.clear( );
cout<<"成績格式錯了";
}
stud.setid(id);
stud.setName(name);
stud.setcgpa(gpa);
return stud;
}
int addDataRow()
{
student stud = getStudent();
//cout << stud.getName() << endl;
std::stringstream strm;
strm << "insert into student(roll,name,cgpa) values(" << stud.getid() << ",'" << stud.getName() << "'," << stud.getcgpa() << ")";
string s = strm.str();
char *str = &s[0];
//cout << str << endl;
sqlite3_stmt *statement;
int result;
//char *query="insert into student(roll,name,cgpa)values(4,'uuu',6.6)";
char *query = str;
{
if(sqlite3_prepare(dbfile,query,-1,&statement,0)==SQLITE_OK)
{
int res=sqlite3_step(statement);
result=res;
sqlite3_finalize(statement);
}
return result;
}
return 0;
}
訂閱:
文章 (Atom)











