1. snprintf 函數 格式化的問題
char buf[256]={0};
std::string name("wangxu");
snprintf(buf,255,"My name is %s",name.c_str());//紅色部分如果該爲直接用name再運行時刻會拋出異常
2.Mysql語句對關鍵字作爲字段的問題
比如 lock ,password是Mysql中的關鍵字,如果用lock,password作爲表table1的字段名
而sql語句寫成這樣: select lock,password from table1;是錯的
可以隱藏關鍵字,比如改爲: select table1.lock,table1.password from table1;
或者: select T.lock,T.password from table1 T; --T做未table表的別名
3.試用Mysql中的時間函數問題,比如 select hour("2009-02-12 02:00:00"); 返回的64位的整數,如果使用32位去接收就會發現錯位的情況:比如
select hour(start_time),hour(end_time) from table2;
假設本來應該接收的應該是2,3
而你用兩個32位的整數去接收的話,而你可能接收到的就是2,0,3爲什麼是三個呢,呵呵.....
sql中此類函數很多,像count(),需要自己運用當中注意
4.寫這一條sql語句,如果表中有某人(以id作爲唯一標識)的信息則什麼都不做,如果沒有此人的信息則添加此人的信息到表中
insert into table1(id,name) values(1,'zhangsan') on duplicate key update id=values(id);--id爲主鍵
跟新插入多條時:
insert into table1(id,name) values(1,'zhangsan'),(2,'lisi') on duplicate key update id=values(id);
5.同時插入多條不同的記錄數據
insert into table1(id,name) values(1,'zhangsan'),(2,'lisi');
6.同時查詢多條滿足不同條件的記錄數據(如果是雙或者多主鍵可以 and or 結合起來)
select id,name from table1 where id=1 or id =2;
或者(下面table1和table2可以相同也可以不相同,但是必須在一個數據庫中)
select id,name from table1 where id=1 union select id,name from table2 where id=2;
7.同時更新滿足不同條件的記錄數據(table1和table2可以相同也可以不相同,但是必須在一個數據庫中)
update table1 t1,table2 t2 set t1.name='lisi',t2.name='zhangsan' where t1.id=1 and t2.id=2;
8.一個二級指針作爲默認參數的問題
template<typename T>
void fun(T a, T b ,T **p=NULL)
{
......
if((*p) != NULL) //此處判斷的是一級指針是否爲空,而默認參數確實二級指針指向的爲空,並沒有指定一級指針
//應該改爲
if(p != NULL)
{
....
}
.......
}
9.關於typedef
最近提了個需求,要求把原來32個字節的角色名長度改爲64個字節,這下是好了,沒辦法得一個一個找:
char playerName[32];
如果當時做成
typedef char PLAYERNAME[32];
PLAYERNAME playerName;
這樣也就不用這麼痛苦了...