No, that is not problem.
Taleeb Anwar wrote:
>
> /* 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,",");
> }
>
> The problem is, perhaps, in the query created through this loop. An extra
> ',' will get appended after the last column name. that is if you have two
> columns called column1 and column2 so your query will be
> SELECT column1,column2, FROM... //(note ',' after column2)
>
> I may be wrong for more or less I've forgotten "C"; but personally I think
> the sqlite should be throwing exception...
>
> Thanks & Regards
> Taleeb bin Waquar
>
> *Hum Mashriq Ke "Miskeenon" Ka Dil Maghrib men Ja Atka Hai!!*
>
>
>
>
> On Thu, Feb 9, 2012 at 3:51 PM, bhaskarReddy <[email protected]> wrote:
>
>>
>> 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
>> [email protected]
>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>>
> _______________________________________________
> sqlite-users mailing list
> [email protected]
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>
>
--
View this message in context:
http://old.nabble.com/sqlite3_step-getting-core-dumbed.-tp33292180p33292404.html
Sent from the SQLite mailing list archive at Nabble.com.
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users