mirror of
https://github.com/mdbtools/mdbtools.git
synced 2025-04-05 20:31:00 +08:00
Add function mdb_read_table_by_name
This commit is contained in:
parent
30e79efcce
commit
3d47cc5570
15
ChangeLog
15
ChangeLog
@ -1,3 +1,18 @@
|
||||
Fri Jul 2 07:27:32 CDT 2004 Jeff Smith <whydoubt@yahoo.com>
|
||||
* src/libmdb/backend.c:
|
||||
* src/libmdb/table.c:
|
||||
* src/sql/mdbsql.c:
|
||||
* src/util/mdb-array.c:
|
||||
* src/util/mdb-export.c:
|
||||
* src/util/mdb-import.c:
|
||||
* src/util/mdb-prop.c:
|
||||
* src/util/prdata.c:
|
||||
* src/util/prindex.c:
|
||||
* src/util/prole.c:
|
||||
* src/util/sargtest.c:
|
||||
* src/util/updrow.c:
|
||||
* include/mdbtools.h: Add function mdb_read_table_by_name
|
||||
|
||||
Wed Jun 23 23:19:43 CDT 2004 Jeff Smith <whydoubt@yahoo.com>
|
||||
* src/libmdb/table.c:
|
||||
* src/util/mdb-array.c:
|
||||
|
@ -416,6 +416,7 @@ extern char *mdb_get_objtype_string(int obj_type);
|
||||
extern MdbTableDef *mdb_alloc_tabledef(MdbCatalogEntry *entry);
|
||||
extern void mdb_free_tabledef(MdbTableDef *table);
|
||||
extern MdbTableDef *mdb_read_table(MdbCatalogEntry *entry);
|
||||
extern MdbTableDef *mdb_read_table_by_name(MdbHandle *mdb, gchar *table_name, int obj_type);
|
||||
extern void mdb_append_column(GPtrArray *columns, MdbColumn *in_col);
|
||||
extern void mdb_free_columns(GPtrArray *columns);
|
||||
extern GPtrArray *mdb_read_columns(MdbTableDef *table);
|
||||
|
@ -258,22 +258,7 @@ char *mdb_get_relationships(MdbHandle *mdb)
|
||||
}
|
||||
|
||||
if (is_init == 0) {
|
||||
MdbCatalogEntry *entry;
|
||||
|
||||
mdb_read_catalog (mdb, MDB_TABLE);
|
||||
|
||||
/* loop over each entry in the catalog */
|
||||
for (i=0; i < mdb->num_catalog; i++) {
|
||||
entry = g_ptr_array_index (mdb->catalog, i);
|
||||
if ((entry->object_type == MDB_TABLE) &&
|
||||
(strncmp (entry->object_name, "MSysRelationships", 17) == 0))
|
||||
break;
|
||||
}
|
||||
if (i == mdb->num_catalog) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
table = mdb_read_table (entry);
|
||||
table = mdb_read_table_by_name(mdb, "MSysRelationships", MDB_TABLE);
|
||||
if ((!table) || (table->num_rows == 0)) {
|
||||
return NULL;
|
||||
}
|
||||
|
@ -117,6 +117,21 @@ MdbTableDef *mdb_read_table(MdbCatalogEntry *entry)
|
||||
|
||||
return table;
|
||||
}
|
||||
MdbTableDef *mdb_read_table_by_name(MdbHandle *mdb, gchar *table_name, int obj_type)
|
||||
{
|
||||
unsigned int i;
|
||||
MdbCatalogEntry *entry;
|
||||
|
||||
mdb_read_catalog(mdb, obj_type);
|
||||
|
||||
for (i=0; i<mdb->num_catalog; i++) {
|
||||
entry = g_ptr_array_index(mdb->catalog, i);
|
||||
if (!strcasecmp(entry->object_name, table_name))
|
||||
return mdb_read_table(entry);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
** read the next page if offset is > pg_size
|
||||
|
@ -574,7 +574,6 @@ void mdb_sql_describe_table(MdbSQL *sql)
|
||||
{
|
||||
MdbTableDef *ttable, *table = NULL;
|
||||
MdbSQLTable *sql_tab;
|
||||
MdbCatalogEntry *entry;
|
||||
MdbHandle *mdb = sql->mdb;
|
||||
MdbColumn *col;
|
||||
int i;
|
||||
@ -593,16 +592,7 @@ void mdb_sql_describe_table(MdbSQL *sql)
|
||||
|
||||
sql_tab = g_ptr_array_index(sql->tables,0);
|
||||
|
||||
mdb_read_catalog(mdb, MDB_TABLE);
|
||||
|
||||
for (i=0;i<mdb->num_catalog;i++) {
|
||||
entry = g_ptr_array_index(mdb->catalog,i);
|
||||
if (entry->object_type == MDB_TABLE &&
|
||||
!strcasecmp(entry->object_name,sql_tab->name)) {
|
||||
table = mdb_read_table(entry);
|
||||
break;
|
||||
}
|
||||
}
|
||||
table = mdb_read_table_by_name(mdb, sql_tab->name, MDB_TABLE);
|
||||
if (!table) {
|
||||
mdb_sql_error("%s is not a table in this database", sql_tab->name);
|
||||
/* the column and table names are no good now */
|
||||
@ -670,7 +660,6 @@ void
|
||||
mdb_sql_select(MdbSQL *sql)
|
||||
{
|
||||
int i,j;
|
||||
MdbCatalogEntry *entry;
|
||||
MdbHandle *mdb = sql->mdb;
|
||||
MdbTableDef *table = NULL;
|
||||
MdbSQLTable *sql_tab;
|
||||
@ -685,16 +674,7 @@ int found = 0;
|
||||
|
||||
sql_tab = g_ptr_array_index(sql->tables,0);
|
||||
|
||||
mdb_read_catalog(mdb, MDB_TABLE);
|
||||
|
||||
for (i=0;i<mdb->num_catalog;i++) {
|
||||
entry = g_ptr_array_index(mdb->catalog,i);
|
||||
if (entry->object_type == MDB_TABLE &&
|
||||
!strcasecmp(entry->object_name,sql_tab->name)) {
|
||||
table = mdb_read_table(entry);
|
||||
break;
|
||||
}
|
||||
}
|
||||
table = mdb_read_table_by_name(mdb, sql_tab->name, MDB_TABLE);
|
||||
if (!table) {
|
||||
mdb_sql_error("%s is not a table in this database", sql_tab->name);
|
||||
/* the column and table names are no good now */
|
||||
|
@ -30,9 +30,8 @@
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
int i, j;
|
||||
int j;
|
||||
MdbHandle *mdb;
|
||||
MdbCatalogEntry *entry;
|
||||
MdbTableDef *table;
|
||||
MdbColumn *col;
|
||||
/* doesn't handle tables > 256 columns. Can that happen? */
|
||||
@ -51,15 +50,9 @@ int started;
|
||||
mdb_init();
|
||||
mdb = mdb_open (argv [1], MDB_NOFLAGS);
|
||||
|
||||
mdb_read_catalog (mdb, MDB_TABLE);
|
||||
|
||||
for (i = 0; i < mdb->num_catalog; i++)
|
||||
{
|
||||
entry = g_ptr_array_index (mdb->catalog, i);
|
||||
if (entry->object_type == MDB_TABLE &&
|
||||
!strcmp (entry->object_name, argv [2]))
|
||||
table = mdb_read_table_by_name (mdb, argv[2], MDB_TABLE);
|
||||
if (table)
|
||||
{
|
||||
table = mdb_read_table (entry);
|
||||
mdb_read_columns (table);
|
||||
mdb_rewind_table (table);
|
||||
|
||||
@ -123,7 +116,6 @@ int started;
|
||||
|
||||
mdb_free_tabledef(table);
|
||||
}
|
||||
}
|
||||
|
||||
mdb_close (mdb);
|
||||
mdb_exit();
|
||||
|
@ -49,9 +49,8 @@ print_col(gchar *col_val, int quote_text, int col_type)
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
int i, j;
|
||||
int j;
|
||||
MdbHandle *mdb;
|
||||
MdbCatalogEntry *entry;
|
||||
MdbTableDef *table;
|
||||
MdbColumn *col;
|
||||
/* doesn't handle tables > 256 columns. Can that happen? */
|
||||
@ -120,87 +119,75 @@ main(int argc, char **argv)
|
||||
mdb_init();
|
||||
|
||||
if (!(mdb = mdb_open(argv[optind], MDB_NOFLAGS))) {
|
||||
g_free (delimiter);
|
||||
g_free (row_delimiter);
|
||||
mdb_exit();
|
||||
exit(1);
|
||||
}
|
||||
|
||||
table = mdb_read_table_by_name(mdb, argv[argc-1], MDB_TABLE);
|
||||
if (!table) {
|
||||
g_free (delimiter);
|
||||
g_free (row_delimiter);
|
||||
mdb_close(mdb);
|
||||
mdb_exit();
|
||||
exit(0);
|
||||
}
|
||||
|
||||
mdb_read_columns(table);
|
||||
mdb_rewind_table(table);
|
||||
|
||||
if (!mdb_read_catalog (mdb, MDB_TABLE)) {
|
||||
fprintf(stderr,"File does not appear to be an Access database\n");
|
||||
exit(1);
|
||||
for (j=0;j<table->num_cols;j++) {
|
||||
bound_values[j] = (char *) g_malloc0(MDB_BIND_SIZE);
|
||||
mdb_bind_column(table, j+1, bound_values[j]);
|
||||
mdb_bind_len(table, j+1, &bound_lens[j]);
|
||||
}
|
||||
|
||||
for (i=0;i<mdb->num_catalog;i++) {
|
||||
entry = g_ptr_array_index(mdb->catalog,i);
|
||||
if (entry->object_type == MDB_TABLE &&
|
||||
!strcmp(entry->object_name,argv[argc-1])) {
|
||||
table = mdb_read_table(entry);
|
||||
mdb_read_columns(table);
|
||||
mdb_rewind_table(table);
|
||||
|
||||
for (j=0;j<table->num_cols;j++) {
|
||||
bound_values[j] = (char *) g_malloc(MDB_BIND_SIZE);
|
||||
bound_values[j][0] = '\0';
|
||||
mdb_bind_column(table, j+1, bound_values[j]);
|
||||
mdb_bind_len(table, j+1, &bound_lens[j]);
|
||||
}
|
||||
if (header_row) {
|
||||
col=g_ptr_array_index(table->columns,0);
|
||||
fprintf(stdout,"%s",col->name);
|
||||
for (j=1;j<table->num_cols;j++) {
|
||||
col=g_ptr_array_index(table->columns,j);
|
||||
fprintf(stdout,"%s%s",delimiter,col->name);
|
||||
}
|
||||
fprintf(stdout,"\n");
|
||||
}
|
||||
|
||||
while(mdb_fetch_row(table)) {
|
||||
|
||||
if (insert_statements) {
|
||||
fprintf(stdout, "INSERT INTO %s (",
|
||||
sanitize_name(argv[optind + 1],sanitize));
|
||||
for (j=0;j<table->num_cols;j++) {
|
||||
if (j>0) fprintf(stdout, ", ");
|
||||
col=g_ptr_array_index(table->columns,j);
|
||||
fprintf(stdout,"%s", sanitize_name(col->name,sanitize));
|
||||
}
|
||||
fprintf(stdout, ") VALUES (");
|
||||
}
|
||||
|
||||
col=g_ptr_array_index(table->columns,0);
|
||||
if (col->col_type == MDB_OLE) {
|
||||
mdb_ole_read(mdb, col, bound_values[0], MDB_BIND_SIZE);
|
||||
}
|
||||
|
||||
if (insert_statements && !bound_lens[0])
|
||||
print_col("NULL",0,col->col_type);
|
||||
else
|
||||
print_col(bound_values[0],
|
||||
quote_text,
|
||||
col->col_type);
|
||||
|
||||
for (j=1;j<table->num_cols;j++) {
|
||||
col=g_ptr_array_index(table->columns,j);
|
||||
if (col->col_type == MDB_OLE) {
|
||||
if (col->cur_value_len)
|
||||
mdb_ole_read(mdb, col, bound_values[j], MDB_BIND_SIZE);
|
||||
}
|
||||
fprintf(stdout,"%s",delimiter);
|
||||
if (insert_statements && !bound_lens[j])
|
||||
print_col("NULL",0,col->col_type);
|
||||
else
|
||||
print_col(bound_values[j],
|
||||
quote_text,
|
||||
col->col_type);
|
||||
}
|
||||
if (insert_statements) fprintf(stdout,")");
|
||||
fprintf(stdout,"%s", row_delimiter);
|
||||
}
|
||||
for (j=0;j<table->num_cols;j++) {
|
||||
g_free(bound_values[j]);
|
||||
}
|
||||
mdb_free_tabledef(table);
|
||||
if (header_row) {
|
||||
col=g_ptr_array_index(table->columns,0);
|
||||
fprintf(stdout,"%s",col->name);
|
||||
for (j=1;j<table->num_cols;j++) {
|
||||
col=g_ptr_array_index(table->columns,j);
|
||||
fprintf(stdout,"%s%s",delimiter,col->name);
|
||||
}
|
||||
fprintf(stdout,"\n");
|
||||
}
|
||||
|
||||
while(mdb_fetch_row(table)) {
|
||||
|
||||
if (insert_statements) {
|
||||
fprintf(stdout, "INSERT INTO %s (",
|
||||
sanitize_name(argv[optind + 1],sanitize));
|
||||
for (j=0;j<table->num_cols;j++) {
|
||||
if (j>0) fprintf(stdout, ", ");
|
||||
col=g_ptr_array_index(table->columns,j);
|
||||
fprintf(stdout,"%s", sanitize_name(col->name,sanitize));
|
||||
}
|
||||
fprintf(stdout, ") VALUES (");
|
||||
}
|
||||
|
||||
for (j=0;j<table->num_cols;j++) {
|
||||
col=g_ptr_array_index(table->columns,j);
|
||||
if ((col->col_type == MDB_OLE)
|
||||
&& ((j==0) || (col->cur_value_len))) {
|
||||
mdb_ole_read(mdb, col, bound_values[j], MDB_BIND_SIZE);
|
||||
}
|
||||
if (j>0) {
|
||||
fprintf(stdout,"%s",delimiter);
|
||||
}
|
||||
if (insert_statements && !bound_lens[j]) {
|
||||
print_col("NULL",0,col->col_type);
|
||||
} else {
|
||||
print_col(bound_values[j], quote_text, col->col_type);
|
||||
}
|
||||
}
|
||||
if (insert_statements) fprintf(stdout,")");
|
||||
fprintf(stdout,"%s", row_delimiter);
|
||||
}
|
||||
for (j=0;j<table->num_cols;j++) {
|
||||
g_free(bound_values[j]);
|
||||
}
|
||||
mdb_free_tabledef(table);
|
||||
|
||||
g_free (delimiter);
|
||||
g_free (row_delimiter);
|
||||
mdb_close(mdb);
|
||||
|
@ -150,7 +150,6 @@ main(int argc, char **argv)
|
||||
{
|
||||
int i, row;
|
||||
MdbHandle *mdb;
|
||||
MdbCatalogEntry *entry;
|
||||
MdbTableDef *table;
|
||||
MdbField fields[256];
|
||||
unsigned char line[MAX_ROW_SIZE];
|
||||
@ -196,23 +195,15 @@ main(int argc, char **argv)
|
||||
exit(1);
|
||||
}
|
||||
|
||||
mdb_read_catalog(mdb, MDB_TABLE);
|
||||
|
||||
for (i=0;i<mdb->num_catalog;i++) {
|
||||
entry = g_ptr_array_index(mdb->catalog,i);
|
||||
if (entry->object_type == MDB_TABLE &&
|
||||
!strcmp(entry->object_name,argv[argc-2])) {
|
||||
table = mdb_read_table(entry);
|
||||
mdb_read_columns(table);
|
||||
mdb_read_indices(table);
|
||||
mdb_rewind_table(table);
|
||||
break;
|
||||
}
|
||||
}
|
||||
table = mdb_read_table_by_name(mdb, argv[argc-2], MDB_TABLE);
|
||||
if (!table) {
|
||||
fprintf(stderr,"Table %s not found in database\n", argv[argc-2]);
|
||||
exit(1);
|
||||
}
|
||||
mdb_read_columns(table);
|
||||
mdb_read_indices(table);
|
||||
mdb_rewind_table(table);
|
||||
|
||||
/*
|
||||
* open the CSV file and read any header rows
|
||||
*/
|
||||
|
@ -33,10 +33,9 @@ MdbHandle *mdb;
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
int i, len, pos, col_num;
|
||||
int len, pos, col_num;
|
||||
MdbColumn *col;
|
||||
MdbTableDef *table;
|
||||
MdbCatalogEntry *entry;
|
||||
gchar name[256];
|
||||
gchar buf[MDB_BIND_SIZE];
|
||||
gchar kkd_pg[200000];
|
||||
@ -57,15 +56,7 @@ main(int argc, char **argv)
|
||||
if (!(mdb = mdb_open(argv[optind], MDB_NOFLAGS))) {
|
||||
exit(1);
|
||||
}
|
||||
mdb_read_catalog(mdb, MDB_ANY);
|
||||
|
||||
for (i=0;i<mdb->num_catalog;i++) {
|
||||
entry = g_ptr_array_index(mdb->catalog,i);
|
||||
if (!strcmp(entry->object_name,MSYSOBJECTS)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
table = mdb_read_table(entry);
|
||||
table = mdb_read_table_by_name(mdb, MSYSOBJECTS, MDB_ANY);
|
||||
mdb_read_columns(table);
|
||||
mdb_rewind_table(table);
|
||||
|
||||
|
@ -23,10 +23,8 @@
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
int i;
|
||||
MdbHandle *mdb;
|
||||
MdbCatalogEntry *entry;
|
||||
MdbTableDef *table;
|
||||
MdbHandle *mdb;
|
||||
MdbTableDef *table;
|
||||
|
||||
if (argc<2) {
|
||||
fprintf(stderr,"Usage: %s <file> <table>\n",argv[0]);
|
||||
@ -36,17 +34,11 @@ MdbTableDef *table;
|
||||
mdb_init();
|
||||
mdb = mdb_open(argv[1], MDB_NOFLAGS);
|
||||
|
||||
mdb_read_catalog(mdb, MDB_TABLE);
|
||||
|
||||
for (i=0;i<mdb->num_catalog;i++) {
|
||||
entry = g_ptr_array_index(mdb->catalog,i);
|
||||
if (entry->object_type == MDB_TABLE &&
|
||||
!strcmp(entry->object_name,argv[2])) {
|
||||
table = mdb_read_table(entry);
|
||||
mdb_read_columns(table);
|
||||
mdb_data_dump(table);
|
||||
mdb_free_tabledef(table);
|
||||
}
|
||||
table = mdb_read_table_by_name(mdb, argv[2], MDB_TABLE);
|
||||
if (table) {
|
||||
mdb_read_columns(table);
|
||||
mdb_data_dump(table);
|
||||
mdb_free_tabledef(table);
|
||||
}
|
||||
|
||||
mdb_close(mdb);
|
||||
|
@ -26,13 +26,10 @@ void walk_index(MdbHandle *mdb, MdbIndex *idx);
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
int i, j;
|
||||
MdbHandle *mdb;
|
||||
MdbCatalogEntry *entry;
|
||||
MdbTableDef *table;
|
||||
MdbIndex *idx;
|
||||
int found = 0;
|
||||
|
||||
int j;
|
||||
MdbHandle *mdb;
|
||||
MdbTableDef *table;
|
||||
MdbIndex *idx;
|
||||
|
||||
if (argc<4) {
|
||||
fprintf(stderr,"Usage: %s <file> <table> <index>\n",argv[0]);
|
||||
@ -45,31 +42,22 @@ int found = 0;
|
||||
exit(1);
|
||||
}
|
||||
|
||||
mdb_read_catalog(mdb, MDB_TABLE);
|
||||
table = mdb_read_table_by_name(mdb, argv[2], MDB_TABLE);
|
||||
|
||||
for (i=0;i<mdb->num_catalog;i++) {
|
||||
entry = g_ptr_array_index(mdb->catalog,i);
|
||||
if (entry->object_type == MDB_TABLE &&
|
||||
!strcmp(entry->object_name,argv[2])) {
|
||||
table = mdb_read_table(entry);
|
||||
mdb_read_columns(table);
|
||||
mdb_read_indices(table);
|
||||
for (j=0;j<table->num_idxs;j++) {
|
||||
idx = g_ptr_array_index (table->indices, j);
|
||||
if (!strcmp(idx->name, argv[3])) {
|
||||
walk_index(mdb, idx);
|
||||
}
|
||||
}
|
||||
mdb_free_tabledef(table);
|
||||
|
||||
//mdb_table_dump(entry);
|
||||
found++;
|
||||
if (table) {
|
||||
mdb_read_columns(table);
|
||||
mdb_read_indices(table);
|
||||
for (j=0;j<table->num_idxs;j++) {
|
||||
idx = g_ptr_array_index (table->indices, j);
|
||||
if (!strcmp(idx->name, argv[3])) {
|
||||
walk_index(mdb, idx);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!found) {
|
||||
mdb_free_tabledef(table);
|
||||
} else {
|
||||
fprintf(stderr,"No table named %s found.\n", argv[2]);
|
||||
}
|
||||
|
||||
mdb_close(mdb);
|
||||
mdb_exit();
|
||||
|
||||
|
@ -25,12 +25,10 @@ void dump_ole(MdbTableDef *table, char *colname, char *sargname);
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
int i;
|
||||
MdbHandle *mdb;
|
||||
MdbCatalogEntry *entry;
|
||||
MdbTableDef *table;
|
||||
char *dot, *colname, *tabname;
|
||||
char *sargname = NULL;
|
||||
MdbHandle *mdb;
|
||||
MdbTableDef *table;
|
||||
char *dot, *colname, *tabname;
|
||||
char *sargname = NULL;
|
||||
|
||||
|
||||
if (argc<2) {
|
||||
@ -51,17 +49,12 @@ char *sargname = NULL;
|
||||
*dot='\0';
|
||||
colname = ++dot;
|
||||
|
||||
mdb_read_catalog(mdb, MDB_TABLE);
|
||||
table = mdb_read_table_by_name(mdb, tabname, MDB_TABLE);
|
||||
|
||||
for (i=0;i<mdb->num_catalog;i++) {
|
||||
entry = g_ptr_array_index(mdb->catalog,i);
|
||||
if (entry->object_type == MDB_TABLE &&
|
||||
!strcmp(entry->object_name,tabname)) {
|
||||
table = mdb_read_table(entry);
|
||||
mdb_read_columns(table);
|
||||
dump_ole(table, colname, sargname);
|
||||
mdb_free_tabledef(table);
|
||||
}
|
||||
if (table) {
|
||||
mdb_read_columns(table);
|
||||
dump_ole(table, colname, sargname);
|
||||
mdb_free_tabledef(table);
|
||||
}
|
||||
|
||||
mdb_close(mdb);
|
||||
|
@ -28,12 +28,8 @@ void print_table(MdbTableDef *table);
|
||||
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
int rows;
|
||||
int i;
|
||||
unsigned char buf[2048];
|
||||
MdbHandle *mdb;
|
||||
MdbCatalogEntry *entry;
|
||||
MdbTableDef *table;
|
||||
MdbHandle *mdb;
|
||||
MdbTableDef *table;
|
||||
|
||||
mdb_init();
|
||||
|
||||
@ -41,16 +37,11 @@ MdbTableDef *table;
|
||||
exit(1);
|
||||
}
|
||||
|
||||
mdb_read_catalog(mdb, MDB_TABLE);
|
||||
table = mdb_read_table_by_name(mdb, TABLE_NAME, MDB_TABLE);
|
||||
|
||||
for (i=0;i<mdb->num_catalog;i++) {
|
||||
entry = g_ptr_array_index(mdb->catalog,i);
|
||||
if (entry->object_type == MDB_TABLE &&
|
||||
!strcmp(entry->object_name,TABLE_NAME)) {
|
||||
table = mdb_read_table(entry);
|
||||
print_table(table);
|
||||
mdb_free_tabledef(table);
|
||||
}
|
||||
if (table) {
|
||||
print_table(table);
|
||||
mdb_free_tabledef(table);
|
||||
}
|
||||
|
||||
mdb_close(mdb);
|
||||
|
@ -26,9 +26,7 @@ void read_to_row(MdbTableDef *table, char *sargname);
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
int i;
|
||||
MdbHandle *mdb;
|
||||
MdbCatalogEntry *entry;
|
||||
MdbTableDef *table;
|
||||
char *colname, *tabname;
|
||||
char *colval;
|
||||
@ -49,26 +47,21 @@ int len;
|
||||
sargname = argv[3];
|
||||
updstr = strdup(argv[4]);
|
||||
|
||||
mdb_read_catalog(mdb, MDB_TABLE);
|
||||
table = mdb_read_table_by_name(mdb, tabname, MDB_TABLE);
|
||||
|
||||
for (i=0;i<mdb->num_catalog;i++) {
|
||||
entry = g_ptr_array_index(mdb->catalog,i);
|
||||
if (entry->object_type == MDB_TABLE &&
|
||||
!strcmp(entry->object_name,tabname)) {
|
||||
table = mdb_read_table(entry);
|
||||
mdb_read_columns(table);
|
||||
mdb_read_indices(table);
|
||||
printf("updstr %s\n",updstr);
|
||||
colname = strtok(updstr,"=");
|
||||
colval = strtok(NULL,"=");
|
||||
bind_column(table, colname, data, &len);
|
||||
read_to_row(table, sargname);
|
||||
printf("current value of %s is %s, changing to %s\n", colname, data, colval);
|
||||
len = strlen(colval);
|
||||
strcpy(data,colval);
|
||||
mdb_update_row(table);
|
||||
mdb_free_tabledef(table);
|
||||
}
|
||||
if (table) {
|
||||
mdb_read_columns(table);
|
||||
mdb_read_indices(table);
|
||||
printf("updstr %s\n",updstr);
|
||||
colname = strtok(updstr,"=");
|
||||
colval = strtok(NULL,"=");
|
||||
bind_column(table, colname, data, &len);
|
||||
read_to_row(table, sargname);
|
||||
printf("current value of %s is %s, changing to %s\n", colname, data, colval);
|
||||
len = strlen(colval);
|
||||
strcpy(data,colval);
|
||||
mdb_update_row(table);
|
||||
mdb_free_tabledef(table);
|
||||
}
|
||||
|
||||
mdb_close(mdb);
|
||||
|
Loading…
Reference in New Issue
Block a user