新聞中心
在數(shù)據(jù)庫中儲存布爾類型數(shù)據(jù)是一項(xiàng)非?;A(chǔ)的操作,但也會存在一些需要注意的問題。本文將介紹在不同數(shù)據(jù)庫中如何儲存布爾類型數(shù)據(jù)以及注意事項(xiàng)。

增城網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),增城網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為增城千余家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)營銷網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的增城做網(wǎng)站的公司定做!
一、MySQL
MySQL中沒有布爾類型,通??梢允褂胻inyint(1)類型來模擬布爾類型,其中1表示True,0表示False。同時(shí),MySQL中也支持Bool類型,但是僅作為一個別名,并沒有實(shí)際存在。
對于查詢布爾類型數(shù)據(jù),可以使用以下方式:
SELECT * FROM 表 WHERE 字段 = TRUE/FALSE;
二、Oracle
在Oracle數(shù)據(jù)庫中可以使用char(1)或者NUMBER(1)類型來儲存布爾類型數(shù)據(jù)。其中,char(1)類型中使用T或者F表示True或者False,而Number(1)則使用1或者0來表示True或者False。
查詢布爾類型數(shù)據(jù)可以使用以下方式:
SELECT * FROM 表 WHERE 字段 = ‘T’/‘F’ OR 字段 = 0/1;
三、SQL Server
SQL Server中可以使用bit類型來儲存布爾類型數(shù)據(jù),1表示True,0表示False。
查詢布爾類型數(shù)據(jù)可以使用以下方式:
SELECT * FROM 表 WHERE 字段 = 1/0 OR 字段 = CAST(‘TRUE’/’FALSE’ AS BIT);
四、PostgreSQL
在PostgreSQL中也沒有專門的布爾類型,通常使用bool類型來代表布爾類型數(shù)據(jù)。其中,True和False都是常規(guī)的布爾值。
查詢布爾類型數(shù)據(jù)可以使用以下方式:
SELECT * FROM 表 WHERE 字段 = TRUE/FALSE;
注意事項(xiàng):
1、在插入布爾類型數(shù)據(jù)時(shí),需要注意使用True或者False而不是1或者0,否則在查詢時(shí)可能出現(xiàn)問題。
2、某些數(shù)據(jù)庫中的工具可能無法正確處理布爾類型數(shù)據(jù),在這種情況下,需要將數(shù)據(jù)轉(zhuǎn)換成整型或者字符串來進(jìn)行處理。
3、在進(jìn)行特定操作時(shí),如更新數(shù)據(jù),應(yīng)該使用布爾型數(shù)據(jù)的相應(yīng)函數(shù)來確保正確性,如使用CAST函數(shù)來確保值的正確轉(zhuǎn)換。
在不同數(shù)據(jù)庫中存儲布爾類型數(shù)據(jù)是非?;A(chǔ)的操作。需要注意不同數(shù)據(jù)庫的存儲方式并進(jìn)行相應(yīng)的適配。同時(shí),在使用工具進(jìn)行操作時(shí),也要留意工具對于布爾類型數(shù)據(jù)的支持限制,以保證數(shù)據(jù)的正確性。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù)!
Sybase數(shù)據(jù)類型里怎么找不到Boolean
數(shù)據(jù)庫不認(rèn)識boolean,用其他類型代替,number或者varchar
如果你的class中用的boolean,數(shù)據(jù)庫中用varchar,把映射文件中property的type寫成yes_no,數(shù)據(jù)庫保存的會是Y和N,執(zhí)行hql時(shí),hibernate會把Y和true,N和false相互轉(zhuǎn)換,。
如果你的class中用的boolean,數(shù)據(jù)庫中用的number,悔慶蠢把映射文件中property的type寫成byte,數(shù)據(jù)庫保存的會是1和0,執(zhí)行hql時(shí),hibernate會把1和true,差巧0和false互相碧陪轉(zhuǎn)換,。
好像是 BIT就是bool,
是不是有bit
Android中用什么方法來存儲數(shù)據(jù),最常的方式是什么? 像 QQ 微信的數(shù)據(jù)如何存儲的?
Android應(yīng)用開發(fā)中,給我們提供了5種數(shù)據(jù)的存儲方式
1 使用SharedPreferences存儲數(shù)據(jù)
2 文件存儲數(shù)據(jù)
3 SQLite數(shù)據(jù)庫存儲數(shù)據(jù)
4 使用ContentProvider存儲數(shù)據(jù)
5 網(wǎng)絡(luò)存儲數(shù)據(jù)
不同的業(yè)務(wù)邏輯,或者大渣嘩需求,用不同的實(shí)現(xiàn)方式,以下是這幾中數(shù)據(jù)存儲方式的說明用及法:
之一種: 使用SharedPreferences存儲數(shù)據(jù)
SharedPreferences是Android平臺上一個輕量級的存儲類,主要是保存一些常用的配置比如窗口狀態(tài),
一般在Activity中 重載窗口狀態(tài)onSaveInstanceState保存一般使用SharedPreferences完成,
它提供了Android平臺常規(guī)的Long長 整形、Int整形、String字符串型的保存。
SharedPreferences類似過去Windows系統(tǒng)上的ini配置文件,但是它分為多種權(quán)限,
可以全局共享訪問,android123提示最終是以xml方式來保存,整體效率來看不是特別的高,
對于常規(guī)的輕量級而言比SQLite要好不少,如果真的存儲量不大可以考慮自己定義文件格式。
xml 處理時(shí)Dalvik會通過自帶底層的本地XML Parser解析,比如XMLpull方式,這樣對于內(nèi)存資源占用比較好。
它的本質(zhì)是基于XML文件存儲key-value鍵值對數(shù)據(jù),通常用來存儲一些簡單的配置信息。
其存儲位置在/data/data//shared_prefs目錄下。
SharedPreferences對象本身只能獲取數(shù)據(jù)而不支持存儲和修改,存儲修改是通過Editor對象實(shí)現(xiàn)。
實(shí)現(xiàn)SharedPreferences存儲的步驟如下:
一、根據(jù)Context獲取SharedPreferences對象
二、利用edit()方法獲取Editor對象。
三、通過Editor對象存儲key-value鍵值對數(shù)據(jù)。
四、通過commit()方法提交數(shù)據(jù)。
下面是示例代碼:
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//獲取SharedPreferences對象
Context ctx = MainActivity.this;
SharedPreferences sp = ctx.getSharedPreferences(“SP”, MODE_PRIVATE);
//存入數(shù)據(jù)
Editor editor = sp.edit();
editor.putString(“STRING_KEY”, “string”);
editor.putInt(“INT_KEY”, 0);
editor.putBoolean(“BOOLEAN_KEY”, true);
editor.commit();
//返回STRING_KEY的值
Log.d(“SP”, sp.getString(“STRING_KEY”, “none”));
//如果NOT_EXIST不存在,則返回值為”none”
Log.d(“SP”, sp.getString(“NOT_EXIST”, “none”));
}
}
這段代碼執(zhí)行過后,即在/data/data/com.test/shared_prefs目錄下生成了一個SP.xml文件,一個應(yīng)用可以創(chuàng)建多個這樣的xml文件。
SharedPreferences對象與SQLite數(shù)據(jù)庫相比,免去了創(chuàng)建數(shù)據(jù)庫,創(chuàng)建表,寫SQL語句等諸多操作,相對而言更加方便,簡潔。
但是SharedPreferences也有其自身缺陷,比如其職能存儲boolean,int,float,long和String五種簡單的數(shù)據(jù)類型,比如其無法進(jìn)行條件查詢等。
所以不論SharedPreferences的數(shù)據(jù)存儲操作是如何簡單,它也只能是存儲方式的一種補(bǔ)充,而無法完全替代如SQLite數(shù)據(jù)庫這樣的其他數(shù)據(jù)存儲方式。
第二種: 文件存儲數(shù)據(jù)
關(guān)于文件存儲,Activity提供了openFileOutput()方法可以用于把數(shù)據(jù)輸出到文件中,具體的實(shí)現(xiàn)過程與在J2SE環(huán)境滾行中保存數(shù)據(jù)到文件中是一樣的。
文件可用來存放大量數(shù)據(jù),如文本、圖梁宴片、音頻等。
默認(rèn)位置:/data/data//files/***.***。
代碼示例:
public void save(){
try {
FileOutputStream outStream=this.openFileOutput(“a.txt”,Context.MODE_WORLD_READABLE);
outStream.write(text.getText().toString().getBytes());
outStream.close();
Toast.makeText(MyActivity.this,”Saved”,Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {
return;
}
catch (IOException e){
return ;
}
}
openFileOutput()方法的之一參數(shù)用于指定文件名稱,不能包含路徑分隔符“/” ,如果文件不存在,Android 會自動創(chuàng)建它。
創(chuàng)建的文件保存在/data/data//files目錄,如: /data/data/cn.itcast.action/files/itcast.txt ,
通過點(diǎn)擊Eclipse菜單“Window”-“Show View”-“Other”,在對話窗口中展開android文件夾,
選擇下面的File Explorer視圖,然后在File Explorer視圖中展開/data/data//files目錄就可以看到該文件。
openFileOutput()方法的第二參數(shù)用于指定操作模式,有四種模式,分別為:
Context.MODE_PRIVATE = 0
Context.MODE_APPEND = 32768
Context.MODE_WORLD_READABLE = 1
Context.MODE_WORLD_WRITEABLE = 2
Context.MODE_PRIVATE:為默認(rèn)操作模式,代表該文件是私有數(shù)據(jù),只能被應(yīng)用本身訪問,在該模式下,寫入的內(nèi)容會覆蓋原文件的內(nèi)容,如果想把新寫入的內(nèi)容追加到原文件中??梢允褂肅ontext.MODE_APPEND
Context.MODE_APPEND:模式會檢查文件是否存在,存在就往文件追加內(nèi)容,否則就創(chuàng)建新文件。
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用來控制其他應(yīng)用是否有權(quán)限讀寫該文件。
MODE_WORLD_READABLE:表示當(dāng)前文件可以被其他應(yīng)用讀取;
MODE_WORLD_WRITEABLE:表示當(dāng)前文件可以被其他應(yīng)用寫入。
如果希望文件被其他應(yīng)用讀和寫,可以傳入: openFileOutput(“itcast.txt”, Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE); android有一套自己的安全模型,當(dāng)應(yīng)用程序(.apk)在安裝時(shí)系統(tǒng)就會分配給他一個userid,當(dāng)該應(yīng)用要去訪問其他資源比如文件的時(shí)候,就需要userid匹配。默認(rèn)情況下,任何應(yīng)用創(chuàng)建的文件,sharedpreferences,數(shù)據(jù)庫都應(yīng)該是私有的(位于/data/data//files),其他程序無法訪問。
除非在創(chuàng)建時(shí)指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE ,只有這樣其他程序才能正確訪問。
讀取文件示例:
public void load(){
try {
FileInputStream inStream=this.openFileInput(“a.txt”);
ByteArrayOutputStream stream=new ByteArrayOutputStream();
byte buffer=new byte;
int length=-1;
while((length=inStream.read(buffer))!=-1) {
stream.write(buffer,0,length);
}
stream.close();
inStream.close();
text.setText(stream.toString());
Toast.makeText(MyActivity.this,”Loaded”,Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (IOException e){
return ;
}
}
對于私有文件只能被創(chuàng)建該文件的應(yīng)用訪問,
如果希望文件能被其他應(yīng)用讀和寫,
可以在創(chuàng)建文件時(shí),指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE權(quán)限。
Activity還提供了getCacheDir()和getFilesDir()方法: g
etCacheDir()方法用于獲取/data/data//cache目錄 getFilesDir()方法用于獲取/data/data//files目錄。
把文件存入SDCard:
使用Activity的openFileOutput()方法保存文件,文件是存放在手機(jī)空間上,
一般手機(jī)的存儲空間不是很大,存放些小文件還行,如果要存放像視頻這樣的大文件,是不可行的。
對于像視頻這樣的大文件,我們可以把它存放在SDCard。
SDCard是干什么的?你可以把它看作是移動硬盤或U盤。
在模擬器中使用SDCard,你需要先創(chuàng)建一張SDCard卡(當(dāng)然不是真的SDCard,只是鏡像文件)。
創(chuàng)建SDCard可以在Eclipse創(chuàng)建模擬器時(shí)隨同創(chuàng)建,也可以使用DOS命令進(jìn)行創(chuàng)建,
如下: 在Dos窗口中進(jìn)入android SDK安裝路徑的tools目錄,
輸入以下命令創(chuàng)建一張容量為2G的SDCard,文件后綴可以隨便取,
建議使用.img: mksdcard 2023M D:\AndroidTool\sdcard.img 在程序中訪問SDCard,你需要申請?jiān)L問SDCard的權(quán)限。
在AndroidManifest.xml中加入訪問SDCard的權(quán)限如下:
要往SDCard存放文件,程序必須先判斷手機(jī)是否裝有SDCard,并且可以進(jìn)行讀寫。
注意:訪問SDCard必須在AndroidManifest.xml中加入訪問SDCard的權(quán)限。
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
File sdCardDir = Environment.getExternalStorageDirectory();//獲取SDCard目錄
File saveFile = new File(sdCardDir, “a.txt”);
FileOutputStream outStream = new FileOutputStream(saveFile);
outStream.write(“test”.getBytes());
outStream.close();
}
Environment.getExternalStorageState()方法用于獲取SDCard的狀態(tài),如果手機(jī)裝有SDCard,并且可以進(jìn)行讀寫,那么方法返回的狀態(tài)等于Environment.MEDIA_MOUNTED。
Environment.getExternalStorageDirectory()方法用于獲取SDCard的目錄,當(dāng)然要獲取SDCard的目錄,你也可以這樣寫:
File sdCardDir = new File(“/sdcard”); //獲取SDCard目錄
File saveFile = new File(sdCardDir, “itcast.txt”);
//上面兩句代碼可以合成一句:
File saveFile = new File(“/sdcard/a.txt”);
FileOutputStream outStream = new FileOutputStream(saveFile);
outStream.write(“test”.getBytes());
outStream.close();
第三種: SQLite數(shù)據(jù)庫存儲數(shù)據(jù)
SQLite是輕量級嵌入式數(shù)據(jù)庫引擎,它支持 SQL 語言,
并且只利用很少的內(nèi)存就有很好的性能。
此外它還是開源的,任何人都可以使用它。
許多開源項(xiàng)目((Mozilla, PHP, Python)都使用了 SQLite
SQLite 由以下幾個組件組成:SQL 編譯器、內(nèi)核、后端以及附件。
SQLite 通過利用虛擬機(jī)和虛擬數(shù)據(jù)庫引擎(VDBE),使調(diào)試、修改和擴(kuò)展 SQLite 的內(nèi)核變得更加方便。
特點(diǎn):
面向資源有限的設(shè)備,
沒有服務(wù)器進(jìn)程,
所有數(shù)據(jù)存放在同一文件中跨平臺,
可自由復(fù)制。
SQLite 基本上符合 SQL-92 標(biāo)準(zhǔn),和其他的主要 SQL 數(shù)據(jù)庫沒什么區(qū)別。它的優(yōu)點(diǎn)就是高效,Android 運(yùn)行時(shí)環(huán)境包含了完整的 SQLite。
SQLite 和其他數(shù)據(jù)庫更大的不同就是對數(shù)據(jù)類型的支持,創(chuàng)建一個表時(shí),可以在 CREATE TABLE 語句中指定某列的數(shù)據(jù)類型,但是你可以把任何數(shù)據(jù)類型放入任何列中。當(dāng)某個值插入數(shù)據(jù)庫時(shí),SQLite 將檢查它的類型。如果該類型與關(guān)聯(lián)的列不匹配,則 SQLite 會嘗試將該值轉(zhuǎn)換成該列的類型。如果不能轉(zhuǎn)換,則該值將作為其本身具有的類型存儲。比如可以把一個字符串(String)放入 INTEGER 列。SQLite 稱這為“弱類型”(manifest typing.)。 此外,SQLite 不支持一些標(biāo)準(zhǔn)的 SQL 功能,特別是外鍵約束(FOREIGN KEY constrains),嵌套 transcaction 和 RIGHT OUTER JOIN 和 FULL OUTER JOIN, 還有一些 ALTER TABLE 功能。 除了上述功能外,SQLite 是一個完整的 SQL 系統(tǒng),擁有完整的觸發(fā)器,交易等等。
Android 集成了 SQLite 數(shù)據(jù)庫 Android 在運(yùn)行時(shí)(run-time)集成了 SQLite,所以每個 Android 應(yīng)用程序都可以使用 SQLite 數(shù)據(jù)庫。
對于熟悉 SQL 的開發(fā)人員來時(shí),在 Android 開發(fā)中使用 SQLite 相當(dāng)簡單。但是,由于 JDBC 會消耗太多的系統(tǒng)資源,所以 JDBC 對于手機(jī)這種內(nèi)存受限設(shè)備來說并不合適。因此,Android 提供了一些新的 API 來使用 SQLite 數(shù)據(jù)庫,Android 開發(fā)中,程序員需要學(xué)使用這些 API。
數(shù)據(jù)庫存儲在 data//databases/ 下。 Android 開發(fā)中使用 SQLite 數(shù)據(jù)庫 Activites 可以通過 Content Provider 或者 Service 訪問一個數(shù)據(jù)庫。
下面會詳細(xì)講解如果創(chuàng)建數(shù)據(jù)庫,添加數(shù)據(jù)和查詢數(shù)據(jù)庫。 創(chuàng)建數(shù)據(jù)庫 Android 不自動提供數(shù)據(jù)庫。在 Android 應(yīng)用程序中使用 SQLite,必須自己創(chuàng)建數(shù)據(jù)庫,然后創(chuàng)建表、索引,填充數(shù)據(jù)。
Android 提供了 SQLiteOpenHelper 幫助你創(chuàng)建一個數(shù)據(jù)庫,你只要繼承 SQLiteOpenHelper 類,就可以輕松的創(chuàng)建數(shù)據(jù)庫。SQLiteOpenHelper 類根據(jù)開發(fā)應(yīng)用程序的需要,封裝了創(chuàng)建和更新數(shù)據(jù)庫使用的邏輯。
SQLiteOpenHelper 的子類,至少需要實(shí)現(xiàn)三個方法:
1 構(gòu)造函數(shù),調(diào)用父類 SQLiteOpenHelper 的構(gòu)造函數(shù)。這個方法需要四個參數(shù):上下文環(huán)境(例如,一個 Activity),數(shù)據(jù)庫名字,一個可選的游標(biāo)工廠(通常是 Null),一個代表你正在使用的數(shù)據(jù)庫模型版本的整數(shù)。
2 onCreate()方法,它需要一個 SQLiteDatabase 對象作為參數(shù),根據(jù)需要對這個對象填充表和初始化數(shù)據(jù)。
3 onUpgrage() 方法,它需要三個參數(shù),一個 SQLiteDatabase 對象,一個舊的版本號和一個新的版本號,這樣你就可以清楚如何把一個數(shù)據(jù)庫從舊的模型轉(zhuǎn)變到新的模型。
第四種 使用ContentProvider存儲數(shù)據(jù) ContentProvider其實(shí)也是通過數(shù)據(jù)庫的方式來存儲數(shù)據(jù)的,因此這里不再做詳細(xì)介紹
關(guān)于數(shù)據(jù)庫怎么存儲boolean的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
四川成都云服務(wù)器租用托管【創(chuàng)新互聯(lián)】提供各地服務(wù)器租用,電信服務(wù)器托管、移動服務(wù)器托管、聯(lián)通服務(wù)器托管,云服務(wù)器虛擬主機(jī)租用。成都機(jī)房托管咨詢:13518219792
創(chuàng)新互聯(lián)(www.cdcxhl.com)擁有10多年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)、開啟建站+互聯(lián)網(wǎng)銷售服務(wù),與企業(yè)客戶共同成長,共創(chuàng)價(jià)值。
當(dāng)前題目:如何在數(shù)據(jù)庫中儲存布爾類型數(shù)據(jù)?(數(shù)據(jù)庫怎么存儲boolean)
文章轉(zhuǎn)載:http://m.fisionsoft.com.cn/article/cddooeg.html


咨詢
建站咨詢
