最近,在我使用qt和sqlite資料庫進行程式設計的時候,不免得利用資料庫語句在資料庫中進行查詢,並且提取出我認為有用的資料。在我對資料型別進行轉換的過程中,發現乙個驚人的陷阱,就是qstring和int型別的變數都可以儲存資料庫的執行結果,唯獨char型別不可以。
比如我想要在資料庫查詢某個欄位的值是否存在,我會使用如下的語句。 select count(*) from student where name='***'; 結果無非就是0或者!0。
光看這個1,肯定會先想到用int去儲存,或者是char,甚至用到字串,其實並沒有任何的區別。
但是,這個致命的陷阱是,用char儲存不會有任何的報錯,只是結果為空而已。
還有乙個比較坑的地方,就是c++原生的語法並不支援switch語句去判斷乙個字串,但是switch char是可以的。
這不,又讓人不由自主地想要去用char了嗎? 比如這個result欄位的結果,我想要根據result的結果去為使用者做乙個智慧型推薦,switch(result)顯然是第一反應,但遺憾的是用char去儲存result的查詢結果,程式不能完成我想要的工作,也不會報錯。
而且,講道理c++也不怎麼支援string強行轉char,因為可能會越界,所以就只能用如下相當尷尬的方法了。乙個尷尬但有用的強制轉換方式。 以後大家想要運算元據庫的時候,可千萬記得用string型別儲存資料庫的查詢結果,不要再去用char了。
了解乙個A 資料庫的資料
查詢最大的資料表資料樣本 通過expdp,發現匯出的最大表,並進行相應查詢 檢視最大的表的資料案例 將table name替換為最大的表的表名 查詢前100行,了解資料樣本格式 查詢表的資料行數 select count 1 from all tables where owner 327 查詢最大表...
資料庫 乙個題目
求至少用了 商 s1 所 的全部零件的工程號 的兩種解法 這個問題存在歧義,博主的是一種理解,我的理解是選擇的工程嚴格地用了 商 s1 所 的全部零件,且這些零件不是由其他 商 的。select distinct jno from select jno from spj where sno s1 a...
實現乙個簡單的資料庫
所有應用軟體之中,資料庫可能是最複雜的。mysql的手冊有3000多頁,postgresql的手冊有2000多頁,oracle的手冊更是比它們相加還要厚。但是,自己寫乙個最簡單的資料庫,做起來並不難。reddit上面有乙個帖子,只用了幾百個字,就把原理講清楚了。下面是我根據這個帖子整理的內容。第一步...