On Jun 27, 2009, at 2:47 PM, chandan wrote: > The code snippet is shown below: > > / > **************************************************************************************************/ > #include <stdio.h> > #include <stdlib.h> > #include <stdint.h> > #include <string.h> > #include <sqlite3.h> > > const char *create_and_insert = "create table some_tbl (id int primary > key, version text check (version in (\"1.0\")));" > "insert into some_tbl (id) values (1);"; > const char *update_sql = "update some_tbl set version = ? where id > = ?"; > > int32_t main(int32_t argc, char *argv[]) > { > sqlite3 *db; > char *err_msg; > sqlite3_stmt *stmt; > int32_t ret; > > if (argc != 2) { > fprintf(stderr, "Usage: %s <database name>.\n", argv[0]); > goto out1; > } > > db = NULL; > ret = sqlite3_open(argv[1], &db); > if (ret != SQLITE_OK) { > fprintf(stderr, "Unable to open database.\n"); > goto out1; > } > > err_msg = NULL; > ret = sqlite3_exec(db, create_and_insert, NULL, NULL, &err_msg); > if (ret != SQLITE_OK) { > fprintf(stderr, "sqlite3_exec: %s.\n", err_msg); > sqlite3_free(err_msg); > } > > stmt = NULL; > ret = sqlite3_prepare_v2(db, update_sql, strlen(update_sql) + 1, > &stmt, NULL); > if (ret != SQLITE_OK) { > fprintf(stderr, "sqlite3_stmt: %s", sqlite3_errmsg(db)); > goto out2; > } > > ret = sqlite3_bind_text(stmt, 1, "1.1", strlen("1.1") + 1, > SQLITE_TRANSIENT); > if (ret != SQLITE_OK) { > fprintf(stderr, "sqlite3_bind_text: %s", > sqlite3_errmsg(db)); > goto out3; > } > > ret = sqlite3_bind_int(stmt, 2, 0);
The 0 above should be 1. Also, you don't need to add one to the return of strlen(). Dan. > > if (ret != SQLITE_OK) { > fprintf(stderr, "sqlite3_bind_int: %s", > sqlite3_errmsg(db)); > goto out3; > } > > ret = sqlite3_step(stmt); > if (ret != SQLITE_DONE) { > fprintf(stderr, "sqlite3_step: %s", > sqlite3_errmsg(db)); > goto out3; > } > > ret = sqlite3_finalize(stmt); > if (ret != SQLITE_OK) { > fprintf(stderr, "sqlite3_finalize: %s", > sqlite3_errmsg(db)); > } > > ret = sqlite3_close(db); > if (ret != SQLITE_OK) { > fprintf(stderr, "Unable to close the database.\n"); > } > > exit(0); > > out3: > ret = sqlite3_finalize(stmt); > if (ret != SQLITE_OK) { > fprintf(stderr, "sqlite3_finalize: %s", > sqlite3_errmsg(db)); > } > out2: > ret = sqlite3_close(db); > out1: > exit(1); > } > / > ********************************************************************************************/ > > > Roger Binns wrote: >> -----BEGIN PGP SIGNED MESSAGE----- >> Hash: SHA1 >> >> chandan wrote: >> >>> I have attached the C program along this mail. >>> >> >> This mailing list strips all attachments, so we can't see your >> code :-) >> >> >>> Am i doing anything wrong in the program? >>> >> >> Yes. SQLite does fundamentally work. We'd have noticed by now if a >> simple update didn't work :-) >> >> You should look over the programming documentation on the web site >> including sample programs again. >> >> Roger >> -----BEGIN PGP SIGNATURE----- >> Version: GnuPG v1.4.9 (GNU/Linux) >> >> iEYEARECAAYFAkpF0O4ACgkQmOOfHg372QQlrQCffy0JJqpxSaDR8pg9B903eofi >> DYYAnR/gOPJLgpdC1c0CLwa0rA7IOJG0 >> =MP0E >> -----END PGP SIGNATURE----- >> _______________________________________________ >> sqlite-users mailing list >> sqlite-users@sqlite.org >> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users >> >> > > _______________________________________________ > sqlite-users mailing list > sqlite-users@sqlite.org > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users