2012-06-07 3 views
0

데이터를 삽입하는 데이 코드를 사용하지만 하드 코드에 데이터를 삽입하고 싶지만 사용자 측에서 C++을 사용하여 데이터를 삽입해야합니다. : ** 그것은 정말 당신이 특정 변수를 가지고있는 경우에 당신은 당신이 원하는 무엇을 acheive하는 std::stringsteam를 사용할 수 있습니다 당신이 저장되어있어 데이터의 내용에 따라C++ : sqlite3을 사용하여 클라이언트 측에서 데이터베이스에 값을 삽입하는 방법

#include <iostream> 
using namespace std; 
#include "sqlite3.h" 
int main (int argc, const char * argv[]) { 

sqlite3 *db; 
sqlite3_open("test1.db", & db); 


string createQuery = "CREATE TABLE IF NOT EXISTS items (userid INTEGER PRIMARY KEY, ipaddr TEXT,username TEXT,useradd TEXT,userphone INTEGER,age INTEGER, " 
               "time TEXT NOT NULL DEFAULT (NOW()));"; 
    sqlite3_stmt *createStmt; 
    cout << "Creating Table Statement" << endl; 
    sqlite3_prepare(db, createQuery.c_str(), createQuery.size(), &createStmt, NULL); 
    cout << "Stepping Table Statement" << endl; 
    if (sqlite3_step(createStmt) != SQLITE_DONE) cout << "Didn't Create Table!" << endl; 

    string insertQuery = "INSERT INTO items (time, ipaddr,username,useradd,userphone,age) VALUES ('', '192.167.37.1','rahul da','benerghatta','9966524824',24);"; // WORKS! 
    sqlite3_stmt *insertStmt;`enter code here` 
    cout << "Creating Insert Statement" << endl; 
    sqlite3_prepare(db, insertQuery.c_str(), insertQuery.size(), &insertStmt, NULL); 
    cout << "Stepping Insert Statement" << endl; 
    if (sqlite3_step(insertStmt) != SQLITE_DONE) cout << "Didn't Insert Item!" << endl; 

    string selectQuery = "select * from items where ipaddr='192.167.37.1' & username= 'rahul';"; 
    sqlite3_stmt *selectStmt; 
    cout << "Creating select Statement" << endl; 
    sqlite3_prepare(db, selectQuery.c_str(), selectQuery.size(), &selectStmt, NULL); 
    cout << "Stepping select Statement" << endl; 
    if (sqlite3_step(selectStmt) != SQLITE_DONE) cout << "Didn't Select Item!" << endl; 

    cout << "Success!" << endl; 

    return 0; 
} 
+2

-1 : 질문이 불완전합니다. 정확히 무엇을하려고하는지 자세히 설명하십시오. 예를 들어 당신이 말하는 "사용자 측"은 어디에 있습니까? –

+0

그것의 사용자 측 그것 측 다만 서버 측, 나는 gsoap를 ... 이용하고있다) – Satyam

답변

1

:.

std::stringstream insertQuery; 
insertQuery << "INSERT INTO items (time, ipaddr,username,useradd,userphone,age)" 
       " VALUES ('" << time 
      << "', '" << ipaddr 
      << "', '" << username 
      << "', '" << useradd 
      << "', '" << userphone 
      << "', " << age << ")"; 
sqlite3_prepare(db, insertQuery.str().c_str(), insertQuery.size(), &insertStmt, NULL); 

st를 반환하려면 stringstream에 .str()이라는 추가 호출이 있음에 유의하십시오. 반지.

물론 데이터를 삽입하려는 열의 유형에 맞는지 확인해야합니다. 사용자 입력이 곧바로 사용자에게 전달되는 경우 특히 그렇습니다. 내장 된 따옴표 및 메타 문자와 같은 일반적인 문제에주의하십시오.

+0

많은 감사 :) – Satyam