2013-02-17 4 views
0

를 조회합니다. 내가, 내 쿼리에 문자열 변수를 삽입 할 수 있도록하고 싶습니다 그래서 이런 식으로 뭔가 :추가 문자열은 내가 <a href="http://tangentsoft.net/mysql++/" rel="nofollow">MySQL++</a>을 시도하고 쿼리를 조사하고

query << "CREATE TABLE beer (" 
     << "beerID smallint(3) unsigned NOT NULL AUTO_INCREMENT," 
     << "beerName varchar(30) NOT NULL," 
     << "PRIMARY KEY (beerID));"; 

수 같은 :

query << "CREATE TABLE " << tableName << " (" 
     << fieldName1 << " smallint(3) unsigned NOT NULL AUTO_INCREMENT," 
     << fieldName2 << " varchar(30) NOT NULL," 
     << "PRIMARY KEY (" << fieldName1 << "));"; 

TABLENAME, 하여 FieldName1하고, fieldName2 사용자 테이블 및 필드 이름 (이상 테이블 데이터) 애플리케이션이 실행되는 동안 정의 할 수 있도록 실행시에 수정 될 수 문자열 변수의 모두가 어떤 유형이다. 그런 일이 가능한가? 그렇다면 어떻게? 필자가 본 문서는 이에 대해 명확하지 않으며 C++ 문자열을 사용하여 성공한 적이 없습니다.

답변

-1

당신은 http://tangentsoft.net/mysql++/doc/html/userman/tutorial.html#qescape

일예를 살펴해야 생산 :

SELECT * FROM stock WHERE item = 'Hotdog Buns' 

을 당신은 사용할 수 있습니다

string s = "Hotdog Buns"; 
query << "SELECT * FROM stock WHERE item = " << quote_only << s; 
+0

"이 quote_only이이 범위에서 선언되지 않았습니다"오류가 발생합니다. 지금까지는 다른 헤더 파일을 포함해야합니까 : #include #include "/usr/include/mysql++/cmdline.h" #include # 포함 Knet

+0

manip.h 포함 해보세요! http://tangentsoft.net/mysql++/doc/html/refman/manip_8h.html – Fafhrd

+0

@Fafhrd : 아니, 당신은 직접'manip.h' #include를 할 필요가 없습니다. 그것은 OP가 #included라고 말하는'mysql ++ .h'에 의해 간접적으로 포함된다. 나는 그것이 네임 스페이스 문제라고 내기하고있다. 그는이 코드 위에'using namespace mysqlpp '을 사용하거나 매니퓰레이터를 mysqlpp :: quote_only로 한정해야한다. –

0

나는 C++ 문자열을 사용하는 모든 성공을 없었어요.

당신은 당신이하려고하면 무엇을 얻을 오류가 표시되지 않습니다.

난 그냥 당신이하려는 일을하기 때문에 같은 examples/resetdb.cpp 수정 :

--- examples/resetdb.cpp (revision 2716) 
+++ examples/resetdb.cpp (working copy) 
@@ -132,14 +132,17 @@ 
     // Send the query to create the stock table and execute it. 
     cout << "Creating stock table..." << endl; 
     mysqlpp::Query query = con.query(); 
+  string table_name("stock"); 
+  string f1("item"), f2("num"), f3("weight"), f4("price"), 
+    f5("sdate"), f6("description"); 
     query << 
-    "CREATE TABLE stock (" << 
-    " item CHAR(30) NOT NULL, " << 
-    " num BIGINT NOT NULL, " << 
-    " weight DOUBLE NOT NULL, " << 
-    " price DECIMAL(6,2) NULL, " << // NaN & inf. == NULL 
-    " sdate DATE NOT NULL, " << 
-    " description MEDIUMTEXT NULL) " << 
+    "CREATE TABLE " << table_name << " (" << 
+    f1 << " CHAR(30) NOT NULL, " << 
+    f2 << " BIGINT NOT NULL, " << 
+    f3 << " DOUBLE NOT NULL, " << 
+    f4 << " DECIMAL(6,2) NULL, " << // NaN & inf. == NULL 
+    f5 << " DATE NOT NULL, " << 
+    f6 << " MEDIUMTEXT NULL) " << 
       "ENGINE = InnoDB " << 
       "CHARACTER SET utf8 COLLATE utf8_general_ci"; 
     query.execute(); 

내가 그 변화 ++ MySQL의 재건

, 그 자체 테스트 스위트를 다시 실행하고는 동일한 시험 결과를 제공합니다 전에.했다 테이블 구조가 변경 한 경우, 나는 실패 할 시험의 많은 기대.

그래서, 당신은 뭔가 다른 일을해야하지만, 내가 뭘 질문에서 추측 할 수 있습니다.

관련 문제