2014-01-25 98 views
3

我讀過在創建數據庫後不能更改數據庫的文本編碼,並且任何嘗試這樣做的嘗試都將被默默忽略。 here在sqlite中爲主數據庫設置PRAGMA編碼=「UTF-16」

弗羅姆this post,創建主數據庫,說SQLite中 'databasename.db',我們必須鍵入命令提示符下:

sqlite3的databasename.db

它創建數據庫一個d顯示sqlite shell爲:

C:\Documents and Settings\Administrator>sqlite3 AudioData.db 
SQLite version 3.7.11 2012-03-20 11:35:50 
Enter ".help" for instructions 
Enter SQL statements terminated with a ";" 
sqlite> 

在這種情況下,如何設置PRAGMA編碼?如何在創建數據庫命令之前給PRAGMA命令,因爲sqlite shell在創建數據庫命令之後啓動? 在此先感謝!

回答

6

您只需在寫入時調用sqlite3。目前只有一個空文件。然後你設定你的編譯指示。包含所有設置的數據庫將在創建第一個表後寫入。所有環境變量的編寫時間都很重要。就在這時數據庫真的被創建了。所以只需在創建第一個表之前設置您的編譯指示。
例如

sqlite3 test.db 

開放源碼,沒有什麼是當時

pragma encoding=utf16; 

書面還有什麼書面

.quit 

關閉sqlite的,一個空文件test.db的被創建

sqlite3 test.db 

打開sqlite

pragma encoding = utf16; 
pragma nnnn=xxx; 

設置編譯(S),該​​文件test.db的仍然是空

create table test (testid integer); 

現在數據庫中獲取真正創建數據庫文件test.db的獲取與內容寫

+0

我使用DOS命令提示符來運行此命令。所以在連接上面創建數據庫之後,當我在命令複製粘貼中使用非英文字符時,它使「???」例如我試過的命令是插入ENG_MAR_MAPPING(ENG_WORD,MAR_WORD)值('zenith','कळस');但在DOS提示符下,它插入到ENG_MAR_MAPPING(ENG_WORD,MAR_WORD)值中('zenith','???');那麼我的非英文字符是否真的達到了DB? –

+0

按照http://stackoverflow.com/questions/388490/unicode-characters-in-windows-command-line-how/388500#388500,那麼你可以驗證 – sqlab

-2

使用SQLlite瀏覽器來實現這些高級功能。這是非常直接的使用。