//上述命令在MYSQL3.x版本上不能執(zhí)行,5.0.24的可以
比如我的Mysql當(dāng)中某database存在url這張表,現(xiàn)在要有C API 將url,url_hash,domain這三個(gè)變量的值插入到數(shù)據(jù)庫中,url_hash是主鍵,本來為了不至插入重復(fù)項(xiàng),應(yīng)該判斷一下的,現(xiàn)在只要這一條SQL語句就行了,什么都不要管,減少了大量的查詢和判斷工作,我只能說一句:太爽了。如下:
SQL語句:
insert into TABLE(FIELD0,FIELD1...) select VALUE0,VALUE1 ,... from dual where not exists(select * from TABLE where FIELDN=VALUEN)
代碼:
int store_url(char *url)
{
char *key, url_hash[HASHLEN], domain[DOMAINLEN], sqlstr[SQLSTRLEN];
......
sprintf (sqlstr, "insert into url(url,url_hash,domain) select '%s','%s','%s' from dual where not exists(select * from url where url_hash='%s') ", url, url_hash, domain, url_hash);
if (mysql_query (conn, sqlstr)) //大部分情況下失敗是由于數(shù)據(jù)庫關(guān)閉,所以可以在以下添加上再連接MySQL的代碼,不贅寫!
{
printf ("Error:%s\n", mysql_error (conn));
return;
}
}
清空表,在SQL和ACCESS中一般是delete * from tablename
而在MySQL中上述命令是不受支持的,
如下:
1,TRUNCATE TABLE TABLENAME
2,DELETE FROM TABLENAME