HI Friends, I dont know why the sqlite3_step getting core dumped.
#include <stdio.h> #include <stdlib.h> #include "sqlitedb1.h" #include <string.h> #include <sqlite3.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int db_retrieve_row(char *db_name, char *table_name, int num_of_keys, char * col_names[],column_value_t * col_values); int main(void) { column_type_t enm[2]; // int retVal; char *col_name[3]; char *db_name = "LR6002.db"; char *table_name = "ONTTable"; column_value_t col_val[3]; enm[0] = COLUMN_TYPE_INT; // slotId enm[1] = COLUMN_TYPE_STRING; col_val[0].number = 1; col_val[1].number = 2; col_val[2].number = 3; /* Array of Column Names. */ col_name[0] = "slotId"; col_name[1] = "ponChannelId"; col_name[2] = "onuType"; db_retrieve_row(db_name, table_name, 3, col_name,col_val); return 0; } int db_retrieve_row(char *db_name, char *table_name, int num_of_keys, char * col_names[],column_value_t * col_values) { sqlite3 *db; sqlite3_stmt *stmt; int status = 0,loopVar,noOfColumns; char *query = NULL,**colNames,*str; int retVal,*colType; retVal = sqlite3_open(db_name, &db); if(retVal) { fprintf(stderr,"Can't open database: %s\n",sqlite3_errmsg(db)); sqlite3_close(db); exit(1); } /* A Query to find the number of columns in the table. */ query = (char *)malloc(sizeof(char) * 255); memset(query,0,255); strcat(query, "SELECT * FROM "); strcat(query, table_name); strcat(query, ";"); status = sqlite3_prepare_v2(db,query,strlen(query) + 1, &stmt, NULL); if(status != SQLITE_OK) { printf("Prepare error: %s\n", sqlite3_errmsg(db)); exit(1); } noOfColumns = sqlite3_column_count(stmt); if(SQLITE_OK != sqlite3_finalize(stmt)) { printf("The prepared statement is Not deleted.\n"); } free(query); query = NULL; /* A Query to find the Names of each column. */ query = (char *)malloc(sizeof(char) * 255); memset(query,0,255); strcat(query, "SELECT * FROM "); strcat(query, table_name); strcat(query, ";"); //stmt = NULL; status = sqlite3_prepare_v2(db,query,strlen(query) + 1, &stmt, NULL); if(status != SQLITE_OK) { printf("Prepare error: %s\n", sqlite3_errmsg(db)); exit(1); } colNames = (char **)malloc(sizeof(char)); memset(colNames,0,1); for(loopVar = 0; loopVar < noOfColumns; loopVar++) { colNames[loopVar] = (char *)malloc(sizeof(char) * 20); memset(colNames[loopVar], 0, 20); strcat(colNames[loopVar],sqlite3_column_name(stmt, loopVar)); } if(SQLITE_OK != sqlite3_finalize(stmt)) { printf("The prepared statement is Not deleted.\n"); } free(query); query = NULL; /* A Query to find types of each column. */ str = (char *)malloc(sizeof(char) * 255); memset(str, 0, 255); strcat(str, "SELECT "); for(loopVar = 0; loopVar < noOfColumns; loopVar++) { strcat(str, colNames[loopVar]); if(loopVar < (noOfColumns -1)) strcat(str,","); } strcat(str, " FROM "); strcat(str, table_name); strcat(str, ";"); status=sqlite3_prepare_v2(db,str,strlen(str)+1, &stmt, NULL); if (status != SQLITE_OK) { printf("prepare error:%s\n",sqlite3_errmsg(db)); exit(1); } sqlite3_step(stmt); //Causing Segmentation Fault. // colType = (int *)malloc(sizeof(int) * noOfColumns); for(loopVar = 0; loopVar < noOfColumns; loopVar++){ colType[loopVar] = sqlite3_column_type(stmt, loopVar); printf("Column Types = %d\n",colType[loopVar]); } if(SQLITE_OK != sqlite3_finalize(stmt)) { printf("The prepared statement is Not deleted.\n"); } free(query); query = NULL; } And the API 'sqlite3_column_type" always returning 5, i.e., NULL. Can any one tell me what was the problem that i did. Regards, Bhaskar. -- View this message in context: http://old.nabble.com/sqlite3_step-getting-core-dumbed.-tp33292180p33292180.html Sent from the SQLite mailing list archive at Nabble.com. _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users