我有一個表「SITECODE」與下面的模式「值不存在」 SQLite中柱:如何檢查是否使用C++
CREATE TABLE SiteCode(
ID INTEGER PRIMARY KEY,
Code TEXT(3) UNIQUE NOT NULL DEFAULT 0);
通過下面的代碼,我可以打開一個DB &訪問DB的元素並完美地執行查詢執行。
現在我想添加一個小的代碼片段,它可以檢查用戶是否希望刪除的元素是否存在。
例如:假設表SITECODE具有以下在代碼輸入柱:,,和和用戶輸入作爲輸入到刪除查詢然後它應該返回一個錯誤。
目前,如果用戶輸入444 作爲輸入到查詢則該查詢被而不檢查代碼柱且無任何錯誤成功執行。
我該如何解決這個問題。請幫助。
void DELETE_Site_Code()
{
int CodeA;
int rc = sqlite3_open("/DBsqlite3/empdbv3.db", &db);
if (rc != SQLITE_OK) {
cerr << "Cannot open database [ " << sqlite3_errmsg(db) << " ]" << endl;
sqlite3_close(db);
}
sql = "DELETE FROM SiteCode WHERE Code= @Code;";
rc = sqlite3_prepare_v2(db, sql, -1, &stmt4, 0);
if(SQLITE_OK != rc) {
cerr << "Failed to PREPARE DELETE statement for SiteCode Table [ " << sqlite3_errmsg(db) << " ]" << endl;
sqlite3_close(db);
exit(1);
}
else{
int Code_x = sqlite3_bind_parameter_index(stmt4, "@Code");
cout<< "Enter the Site Code That you wish to DELETE from table-SiteCode\n"<< endl;
cin>>CodeA;
if(cin.fail()) {
cout<<"\nPlease enter only digits\n"<<endl;
}
else {
if((CodeA >= 000) && (CodeA <= 998)) {
sqlite3_bind_int(stmt4, Code_x, CodeA);
}
else {
cout<< "Valid Site Code Should be between 000 to 998\n" <<endl;
}
} //else loop of (cin.fail) ends here
}
int step = sqlite3_step(stmt4);
if(SQLITE_DONE != step) {
cout<<"\nERROR while inserting into table\n"<< endl;
}
else {
cout<<"\nRecord DELETION completed"<<endl;
}
if(step == SQLITE_ROW){
cout<< sqlite3_column_text(stmt4, 0) << endl;
cout<< sqlite3_column_text(stmt4, 1) << endl;
}
sqlite3_finalize(stmt4);
sqlite3_close(db);
}
發出相應的'SELECT'請求以測試是否此行存在! – 2015-02-23 08:12:36
@BasileStarynkevitch查詢是DELETE。我如何提供SELECT請求並獲得與DELETE相同的輸出?你能否詳細說明一下。 – 2015-02-23 08:18:23
'從SiteCode中選擇count(*),其中ID = 444;'如果count == 1,那麼可以刪除,否則會出錯。 – 2015-02-23 08:34:16