segmentation fault 即 段錯誤
一般都是非法記憶體操作,例如陣列越界,指標亂指什麼的。。。
我猜可能是strcat(temp, number);這句有問題。
strcat是連線字串吧,第二個引數是字串頭地址,number估計是整型吧,用在這裡肯定非法操作了。
用sprintf吧
sprintf(temp, "SELECT * FROM student WHERE NUMBER= "%d";", number);
那就設斷點除錯,看temp具體是否正確,把sqlite3_get_table的返回值賦值,看是否查詢成功。
不設斷點那就插入printf隨便輸出點資訊看看到底到那裡出錯了
printf("sql: %s",temp);
result = sqlite3_get_table( db , temp , &azResult , &nrow , &ncolumn , &zErrMsg );
if(SQLITE_OK == result)
{
for( i=0 ; i<( nrow + 1 ) * ncolumn ; i++ )
printf( "azResult[%d] = %s\n", i , azResult[i] );
}
else
printf("查詢失敗\n");
//.......
segmentation fault 即 段錯誤
一般都是非法記憶體操作,例如陣列越界,指標亂指什麼的。。。
我猜可能是strcat(temp, number);這句有問題。
strcat是連線字串吧,第二個引數是字串頭地址,number估計是整型吧,用在這裡肯定非法操作了。
用sprintf吧
sprintf(temp, "SELECT * FROM student WHERE NUMBER= "%d";", number);
那就設斷點除錯,看temp具體是否正確,把sqlite3_get_table的返回值賦值,看是否查詢成功。
不設斷點那就插入printf隨便輸出點資訊看看到底到那裡出錯了
printf("sql: %s",temp);
result = sqlite3_get_table( db , temp , &azResult , &nrow , &ncolumn , &zErrMsg );
if(SQLITE_OK == result)
{
for( i=0 ; i<( nrow + 1 ) * ncolumn ; i++ )
printf( "azResult[%d] = %s\n", i , azResult[i] );
}
else
{
printf("查詢失敗\n");
//.......
}