2016-04-25 70 views
0

我願意訪問存在於coloumn的特定元素在我的SQLite數據庫,所以爲了達到這一點,我已經使用了select語句例外使用SQLite select語句拋出

char *query = {0}; 
      strcat(query, "SELECT ");//exception thrown here 
      strcat(query, (char*)arr);//The value to be asscessed 
      strcat(query, " FROM CARS"); 

但這拋出異常在ucrtbased.dll中爲什麼?

更新

我已經提到這個答案here並試圖此,char* line1 = "SELECT "; char* line2 = (char*)arr; char* line3 = " FROM CARS"; size_t len1 = strlen(line1); size_t len2 = strlen(line2); size_t len3 = strlen(line3); char *query = (char*)malloc(len1 + len2 + len3 + 1); if (!query) abort(); memcpy(query, line1, len1); memcpy(query + len1, line2, len2); query[len1 + len2 + len3] = '\0';

,但我發現,我做錯了什麼(因爲出放跳到else語句,這意味着無效sqlite的聲明)我無法弄清楚它是否會幫助我。

我還提到本教程@ cplusplus.com但無法弄清楚 謝謝

回答

1

您還沒有分配任何內存query,並試圖一些字符複製到它。如果大小已知,您可以在堆棧上創建一個變量,如char query[256] = {0};。否則,您可以使用new[]動態分配內存,然後使用delete[]進行釋放。

+0

那麼,我應該使用malloc?爲查詢變量?謝謝 – user105127

+0

@ user105127:已更新的答案。 – Naveen

+1

會不會更好使用'std :: string',然後用'.c_str()'吐出一個char *?您避免分配內存,釋放內存,並獲得更簡單的級聯來引導。 – enhzflep