mirror of
https://github.com/mdbtools/mdbtools.git
synced 2026-03-10 00:20:54 +08:00
Combine functions that bind a column and its length
This commit is contained in:
23
ChangeLog
23
ChangeLog
@@ -1,3 +1,26 @@
|
|||||||
|
Thu Dec 30 19:26:01 CST 2004 Jeff Smith <whydoubt@yahoo.com>
|
||||||
|
* HACKING:
|
||||||
|
* doc/reference/libmdb/libmdb-sections.txt:
|
||||||
|
* include/mdbsql.h:
|
||||||
|
* include/mdbtools.h:
|
||||||
|
* src/gmdb/table_data.c:
|
||||||
|
* src/gmdb/table_export.c:
|
||||||
|
* src/gmdb2/sql.c:
|
||||||
|
* src/gmdb2/table_data.c:
|
||||||
|
* src/gmdb2/table_export.c:
|
||||||
|
* src/libmdb/backend.c:
|
||||||
|
* src/libmdb/catalog.c:
|
||||||
|
* src/libmdb/data.c:
|
||||||
|
* src/libmdb/file.c:
|
||||||
|
* src/odbc/odbc.c:
|
||||||
|
* src/sql/mdbsql.c:
|
||||||
|
* src/util/mdb-array.c:
|
||||||
|
* src/util/mdb-export.c:
|
||||||
|
* src/util/mdb-prop.c:
|
||||||
|
* src/util/prole.c:
|
||||||
|
* src/util/sargtest.c:
|
||||||
|
* src/util/updrow.c: Combine functions that bind a column and its length
|
||||||
|
|
||||||
Thu Dec 30 06:36:25 CST 2004 Jeff Smith <whydoubt@yahoo.com>
|
Thu Dec 30 06:36:25 CST 2004 Jeff Smith <whydoubt@yahoo.com>
|
||||||
* include/mdbtools.h: Fix MdbSargTreeFunc's typedef
|
* include/mdbtools.h: Fix MdbSargTreeFunc's typedef
|
||||||
* src/sql/lexer.l: Fix flex warning about A-z ambiguity
|
* src/sql/lexer.l: Fix flex warning about A-z ambiguity
|
||||||
|
|||||||
4
HACKING
4
HACKING
@@ -300,9 +300,9 @@ next_pg field.
|
|||||||
| Iterate for the number of num_cols (18 bytes per column) |
|
| Iterate for the number of num_cols (18 bytes per column) |
|
||||||
+-------------------------------------------------------------------------+
|
+-------------------------------------------------------------------------+
|
||||||
| ???? | 1 byte | col_type | Column Type (see table below) |
|
| ???? | 1 byte | col_type | Column Type (see table below) |
|
||||||
| ???? | 2 bytes | col_pos | Column Position, (counts deleted cols) |
|
| ???? | 2 bytes | col_num | Column Number (includes deleted columns) |
|
||||||
| ???? | 2 bytes | offset_V | Offset for variable length columns |
|
| ???? | 2 bytes | offset_V | Offset for variable length columns |
|
||||||
| ???? | 4 bytes | ??? | |
|
| ???? | 2 bytes | col_num | Column Number |
|
||||||
| ???? | 2 bytes | ??? | |
|
| ???? | 2 bytes | ??? | |
|
||||||
| ???? | 1 byte | precision | precision if numeric column |
|
| ???? | 1 byte | precision | precision if numeric column |
|
||||||
| ???? | 1 byte | scale | scale if numeric column |
|
| ???? | 1 byte | scale | scale if numeric column |
|
||||||
|
|||||||
@@ -58,7 +58,6 @@ mdb_col_to_string
|
|||||||
mdb_find_end_of_row
|
mdb_find_end_of_row
|
||||||
mdb_col_fixed_size
|
mdb_col_fixed_size
|
||||||
mdb_col_disp_size
|
mdb_col_disp_size
|
||||||
mdb_bind_len
|
|
||||||
mdb_ole_read_next
|
mdb_ole_read_next
|
||||||
mdb_ole_read
|
mdb_ole_read
|
||||||
mdb_set_date_fmt
|
mdb_set_date_fmt
|
||||||
|
|||||||
@@ -73,7 +73,6 @@ extern int mdb_sql_eval_expr(MdbSQL *sql, char *const1, int op, char *const2);
|
|||||||
extern void mdb_sql_bind_all(MdbSQL *sql);
|
extern void mdb_sql_bind_all(MdbSQL *sql);
|
||||||
extern int mdb_sql_fetch_row(MdbSQL *sql, MdbTableDef *table);
|
extern int mdb_sql_fetch_row(MdbSQL *sql, MdbTableDef *table);
|
||||||
extern int mdb_sql_add_temp_col(MdbSQL *sql, MdbTableDef *ttable, int col_num, char *name, int col_type, int col_size, int is_fixed);
|
extern int mdb_sql_add_temp_col(MdbSQL *sql, MdbTableDef *ttable, int col_num, char *name, int col_type, int col_size, int is_fixed);
|
||||||
extern void mdb_sql_bind_column(MdbSQL *sql, int colnum, char *varaddr);
|
extern void mdb_sql_bind_column(MdbSQL *sql, int colnum, char *varaddr, int *len_ptr);
|
||||||
extern void mdb_sql_bind_len(MdbSQL *sql, int colnum, int *len_ptr);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -436,9 +436,9 @@ extern int mdb_is_user_table(MdbCatalogEntry *entry);
|
|||||||
extern int mdb_is_system_table(MdbCatalogEntry *entry);
|
extern int mdb_is_system_table(MdbCatalogEntry *entry);
|
||||||
|
|
||||||
/* data.c */
|
/* data.c */
|
||||||
extern int mdb_bind_column_by_name(MdbTableDef *table, gchar *col_name, void *bind_ptr);
|
extern int mdb_bind_column_by_name(MdbTableDef *table, gchar *col_name, void *bind_ptr, int *len_ptr);
|
||||||
extern void mdb_data_dump(MdbTableDef *table);
|
extern void mdb_data_dump(MdbTableDef *table);
|
||||||
extern void mdb_bind_column(MdbTableDef *table, int col_num, void *bind_ptr);
|
extern void mdb_bind_column(MdbTableDef *table, int col_num, void *bind_ptr, int *len_ptr);
|
||||||
extern int mdb_rewind_table(MdbTableDef *table);
|
extern int mdb_rewind_table(MdbTableDef *table);
|
||||||
extern int mdb_fetch_row(MdbTableDef *table);
|
extern int mdb_fetch_row(MdbTableDef *table);
|
||||||
extern int mdb_is_fixed_col(MdbColumn *col);
|
extern int mdb_is_fixed_col(MdbColumn *col);
|
||||||
@@ -447,7 +447,6 @@ extern int mdb_find_pg_row(MdbHandle *mdb, int pg_row, char **buf, int *off, int
|
|||||||
extern int mdb_find_end_of_row(MdbHandle *mdb, int row);
|
extern int mdb_find_end_of_row(MdbHandle *mdb, int row);
|
||||||
extern int mdb_col_fixed_size(MdbColumn *col);
|
extern int mdb_col_fixed_size(MdbColumn *col);
|
||||||
extern int mdb_col_disp_size(MdbColumn *col);
|
extern int mdb_col_disp_size(MdbColumn *col);
|
||||||
extern void mdb_bind_len(MdbTableDef *table, int col_num, int *len_ptr);
|
|
||||||
extern int mdb_ole_read_next(MdbHandle *mdb, MdbColumn *col, void *ole_ptr);
|
extern int mdb_ole_read_next(MdbHandle *mdb, MdbColumn *col, void *ole_ptr);
|
||||||
extern int mdb_ole_read(MdbHandle *mdb, MdbColumn *col, void *ole_ptr, int chunk_size);
|
extern int mdb_ole_read(MdbHandle *mdb, MdbColumn *col, void *ole_ptr, int chunk_size);
|
||||||
extern void mdb_set_date_fmt(const char *);
|
extern void mdb_set_date_fmt(const char *);
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ GMdbDataWindow *dataw = NULL;
|
|||||||
/* bind columns */
|
/* bind columns */
|
||||||
bound_data[i] = (char *) malloc(MDB_BIND_SIZE);
|
bound_data[i] = (char *) malloc(MDB_BIND_SIZE);
|
||||||
bound_data[i][0] = '\0';
|
bound_data[i][0] = '\0';
|
||||||
mdb_bind_column(table, i+1, bound_data[i]);
|
mdb_bind_column(table, i+1, bound_data[i], NULL);
|
||||||
|
|
||||||
/* display column titles */
|
/* display column titles */
|
||||||
col=g_ptr_array_index(table->columns,i);
|
col=g_ptr_array_index(table->columns,i);
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ char msg[100];
|
|||||||
/* bind columns */
|
/* bind columns */
|
||||||
bound_data[i] = (char *) malloc(MDB_BIND_SIZE);
|
bound_data[i] = (char *) malloc(MDB_BIND_SIZE);
|
||||||
bound_data[i][0] = '\0';
|
bound_data[i][0] = '\0';
|
||||||
mdb_bind_column(table, i+1, bound_data[i]);
|
mdb_bind_column(table, i+1, bound_data[i], NULL);
|
||||||
|
|
||||||
/* display column titles */
|
/* display column titles */
|
||||||
col=g_ptr_array_index(table->columns,i);
|
col=g_ptr_array_index(table->columns,i);
|
||||||
|
|||||||
@@ -450,7 +450,7 @@ gmdb_sql_execute_cb(GtkWidget *w, GladeXML *xml)
|
|||||||
for (i=0;i<sql->num_columns;i++) {
|
for (i=0;i<sql->num_columns;i++) {
|
||||||
bound_data[i] = (char *) malloc(MDB_BIND_SIZE);
|
bound_data[i] = (char *) malloc(MDB_BIND_SIZE);
|
||||||
bound_data[i][0] = '\0';
|
bound_data[i][0] = '\0';
|
||||||
mdb_sql_bind_column(sql, i+1, bound_data[i]);
|
mdb_sql_bind_column(sql, i+1, bound_data[i], NULL);
|
||||||
sqlcol = g_ptr_array_index(sql->columns,i);
|
sqlcol = g_ptr_array_index(sql->columns,i);
|
||||||
column = gtk_tree_view_column_new_with_attributes(sqlcol->name, renderer, "text", i, NULL);
|
column = gtk_tree_view_column_new_with_attributes(sqlcol->name, renderer, "text", i, NULL);
|
||||||
gtk_tree_view_append_column(GTK_TREE_VIEW (treeview), column);
|
gtk_tree_view_append_column(GTK_TREE_VIEW (treeview), column);
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ GMdbDataWindow *dataw = NULL;
|
|||||||
/* bind columns */
|
/* bind columns */
|
||||||
bound_data[i] = (char *) malloc(MDB_BIND_SIZE);
|
bound_data[i] = (char *) malloc(MDB_BIND_SIZE);
|
||||||
bound_data[i][0] = '\0';
|
bound_data[i][0] = '\0';
|
||||||
mdb_bind_column(table, i+1, bound_data[i]);
|
mdb_bind_column(table, i+1, bound_data[i], NULL);
|
||||||
|
|
||||||
/* display column titles */
|
/* display column titles */
|
||||||
col=g_ptr_array_index(table->columns,i);
|
col=g_ptr_array_index(table->columns,i);
|
||||||
|
|||||||
@@ -190,7 +190,7 @@ int rows=0;
|
|||||||
/* bind columns */
|
/* bind columns */
|
||||||
bound_data[i] = (char *) malloc(MDB_BIND_SIZE);
|
bound_data[i] = (char *) malloc(MDB_BIND_SIZE);
|
||||||
bound_data[i][0] = '\0';
|
bound_data[i][0] = '\0';
|
||||||
mdb_bind_column(table, i+1, bound_data[i]);
|
mdb_bind_column(table, i+1, bound_data[i], NULL);
|
||||||
|
|
||||||
/* display column titles */
|
/* display column titles */
|
||||||
col=g_ptr_array_index(table->columns,i);
|
col=g_ptr_array_index(table->columns,i);
|
||||||
|
|||||||
@@ -265,10 +265,10 @@ char *mdb_get_relationships(MdbHandle *mdb)
|
|||||||
for (i=0;i<4;i++) {
|
for (i=0;i<4;i++) {
|
||||||
bound[i] = (char *) g_malloc0(MDB_BIND_SIZE);
|
bound[i] = (char *) g_malloc0(MDB_BIND_SIZE);
|
||||||
}
|
}
|
||||||
mdb_bind_column_by_name(table, "szColumn", bound[0]);
|
mdb_bind_column_by_name(table, "szColumn", bound[0], NULL);
|
||||||
mdb_bind_column_by_name(table, "szObject", bound[1]);
|
mdb_bind_column_by_name(table, "szObject", bound[1], NULL);
|
||||||
mdb_bind_column_by_name(table, "szReferencedColumn", bound[2]);
|
mdb_bind_column_by_name(table, "szReferencedColumn", bound[2], NULL);
|
||||||
mdb_bind_column_by_name(table, "szReferencedObject", bound[3]);
|
mdb_bind_column_by_name(table, "szReferencedObject", bound[3], NULL);
|
||||||
mdb_rewind_table(table);
|
mdb_rewind_table(table);
|
||||||
|
|
||||||
is_init = 1;
|
is_init = 1;
|
||||||
|
|||||||
@@ -86,10 +86,10 @@ GPtrArray *mdb_read_catalog (MdbHandle *mdb, int objtype)
|
|||||||
|
|
||||||
mdb_read_columns(table);
|
mdb_read_columns(table);
|
||||||
|
|
||||||
mdb_bind_column_by_name(table, "Id", obj_id);
|
mdb_bind_column_by_name(table, "Id", obj_id, NULL);
|
||||||
mdb_bind_column_by_name(table, "Name", obj_name);
|
mdb_bind_column_by_name(table, "Name", obj_name, NULL);
|
||||||
mdb_bind_column_by_name(table, "Type", obj_type);
|
mdb_bind_column_by_name(table, "Type", obj_type, NULL);
|
||||||
mdb_bind_column_by_name(table, "Flags", obj_flags);
|
mdb_bind_column_by_name(table, "Flags", obj_flags, NULL);
|
||||||
|
|
||||||
mdb_rewind_table(table);
|
mdb_rewind_table(table);
|
||||||
|
|
||||||
|
|||||||
@@ -41,18 +41,22 @@ void mdb_set_date_fmt(const char *fmt)
|
|||||||
strncpy(date_fmt, fmt, 63);
|
strncpy(date_fmt, fmt, 63);
|
||||||
}
|
}
|
||||||
|
|
||||||
void mdb_bind_column(MdbTableDef *table, int col_num, void *bind_ptr)
|
void mdb_bind_column(MdbTableDef *table, int col_num, void *bind_ptr, int *len_ptr)
|
||||||
{
|
{
|
||||||
MdbColumn *col;
|
MdbColumn *col;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** the column arrary is 0 based, so decrement to get 1 based parameter
|
** the column arrary is 0 based, so decrement to get 1 based parameter
|
||||||
*/
|
*/
|
||||||
col=g_ptr_array_index(table->columns, col_num - 1);
|
col=g_ptr_array_index(table->columns, col_num - 1);
|
||||||
|
|
||||||
|
if (bind_ptr)
|
||||||
col->bind_ptr = bind_ptr;
|
col->bind_ptr = bind_ptr;
|
||||||
|
if (len_ptr)
|
||||||
|
col->len_ptr = len_ptr;
|
||||||
}
|
}
|
||||||
int
|
int
|
||||||
mdb_bind_column_by_name(MdbTableDef *table, gchar *col_name, void *bind_ptr)
|
mdb_bind_column_by_name(MdbTableDef *table, gchar *col_name, void *bind_ptr, int *len_ptr)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
int col_num = -1;
|
int col_num = -1;
|
||||||
@@ -61,21 +65,17 @@ mdb_bind_column_by_name(MdbTableDef *table, gchar *col_name, void *bind_ptr)
|
|||||||
for (i=0;i<table->num_cols;i++) {
|
for (i=0;i<table->num_cols;i++) {
|
||||||
col=g_ptr_array_index(table->columns,i);
|
col=g_ptr_array_index(table->columns,i);
|
||||||
if (!strcmp(col->name,col_name)) {
|
if (!strcmp(col->name,col_name)) {
|
||||||
col_num = col->col_num + 1;
|
col_num = i + 1;
|
||||||
mdb_bind_column(table, col_num, bind_ptr);
|
if (bind_ptr)
|
||||||
|
col->bind_ptr = bind_ptr;
|
||||||
|
if (len_ptr)
|
||||||
|
col->len_ptr = len_ptr;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return col_num;
|
return col_num;
|
||||||
}
|
}
|
||||||
void mdb_bind_len(MdbTableDef *table, int col_num, int *len_ptr)
|
|
||||||
{
|
|
||||||
MdbColumn *col;
|
|
||||||
|
|
||||||
col=g_ptr_array_index(table->columns, col_num - 1);
|
|
||||||
col->len_ptr = len_ptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* mdb_find_pg_row
|
* mdb_find_pg_row
|
||||||
@@ -397,7 +397,7 @@ void mdb_data_dump(MdbTableDef *table)
|
|||||||
|
|
||||||
for (i=0;i<table->num_cols;i++) {
|
for (i=0;i<table->num_cols;i++) {
|
||||||
bound_values[i] = (char *) g_malloc(256);
|
bound_values[i] = (char *) g_malloc(256);
|
||||||
mdb_bind_column(table, i+1, bound_values[i]);
|
mdb_bind_column(table, i+1, bound_values[i], NULL);
|
||||||
}
|
}
|
||||||
mdb_rewind_table(table);
|
mdb_rewind_table(table);
|
||||||
while (mdb_fetch_row(table)) {
|
while (mdb_fetch_row(table)) {
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ MdbFormatConstants MdbJet4Constants = {
|
|||||||
4096, 0x0c, 16, 45, 47, 51, 55, 56, 63, 12, 15, 23, 5, 25, 59, 7, 21, 9
|
4096, 0x0c, 16, 45, 47, 51, 55, 56, 63, 12, 15, 23, 5, 25, 59, 7, 21, 9
|
||||||
};
|
};
|
||||||
MdbFormatConstants MdbJet3Constants = {
|
MdbFormatConstants MdbJet3Constants = {
|
||||||
2048, 0x08, 12, 25, 27, 31, 35, 36, 43, 8, 13, 16, 1, 18, 39, 3, 14, 5 /* not sure on 5, need to check */
|
2048, 0x08, 12, 25, 27, 31, 35, 36, 43, 8, 13, 16, 1, 18, 39, 3, 14, 5
|
||||||
};
|
};
|
||||||
|
|
||||||
static ssize_t _mdb_read_pg(MdbHandle *mdb, unsigned char *pg_buf, unsigned long pg);
|
static ssize_t _mdb_read_pg(MdbHandle *mdb, unsigned char *pg_buf, unsigned long pg);
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
#include "connectparams.h"
|
#include "connectparams.h"
|
||||||
|
|
||||||
static char software_version[] = "$Id: odbc.c,v 1.27 2004/12/11 06:07:22 whydoubt Exp $";
|
static char software_version[] = "$Id: odbc.c,v 1.28 2004/12/31 01:26:50 whydoubt Exp $";
|
||||||
static void *no_unused_var_warn[] = {software_version,
|
static void *no_unused_var_warn[] = {software_version,
|
||||||
no_unused_var_warn};
|
no_unused_var_warn};
|
||||||
|
|
||||||
@@ -803,11 +803,8 @@ struct _sql_bind_info *cur;
|
|||||||
while (cur) {
|
while (cur) {
|
||||||
if (cur->column_number>0 &&
|
if (cur->column_number>0 &&
|
||||||
cur->column_number <= env->sql->num_columns) {
|
cur->column_number <= env->sql->num_columns) {
|
||||||
mdb_sql_bind_column(env->sql,
|
mdb_sql_bind_column(env->sql, cur->column_number,
|
||||||
cur->column_number, cur->varaddr);
|
cur->varaddr, cur->column_lenbind);
|
||||||
if (cur->column_lenbind)
|
|
||||||
mdb_sql_bind_len(env->sql,
|
|
||||||
cur->column_number, cur->column_lenbind);
|
|
||||||
} else {
|
} else {
|
||||||
/* log error ? */
|
/* log error ? */
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -717,32 +717,13 @@ int found = 0;
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
mdb_sql_bind_column(MdbSQL *sql, int colnum, char *varaddr)
|
mdb_sql_bind_column(MdbSQL *sql, int colnum, char *varaddr, int *len_ptr)
|
||||||
{
|
{
|
||||||
MdbSQLColumn *sqlcol;
|
MdbSQLColumn *sqlcol;
|
||||||
|
|
||||||
/* sql columns are traditionally 1 based, so decrement colnum */
|
/* sql columns are traditionally 1 based, so decrement colnum */
|
||||||
sqlcol = g_ptr_array_index(sql->columns,colnum - 1);
|
sqlcol = g_ptr_array_index(sql->columns,colnum - 1);
|
||||||
mdb_bind_column_by_name(sql->cur_table, sqlcol->name, varaddr);
|
mdb_bind_column_by_name(sql->cur_table, sqlcol->name, varaddr, len_ptr);
|
||||||
}
|
|
||||||
void
|
|
||||||
mdb_sql_bind_len(MdbSQL *sql, int colnum, int *len_ptr)
|
|
||||||
{
|
|
||||||
MdbTableDef *table = sql->cur_table;
|
|
||||||
MdbSQLColumn *sqlcol;
|
|
||||||
MdbColumn *col;
|
|
||||||
unsigned int j;
|
|
||||||
|
|
||||||
/* sql columns are traditionally 1 based, so decrement colnum */
|
|
||||||
sqlcol = g_ptr_array_index(sql->columns,colnum - 1);
|
|
||||||
for (j=0;j<table->num_cols;j++) {
|
|
||||||
col=g_ptr_array_index(table->columns,j);
|
|
||||||
if (!strcasecmp(sqlcol->name, col->name)) {
|
|
||||||
/* bind the column length to its listed (SQL) position */
|
|
||||||
mdb_bind_len(table, j+1, len_ptr);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
void
|
void
|
||||||
mdb_sql_bind_all(MdbSQL *sql)
|
mdb_sql_bind_all(MdbSQL *sql)
|
||||||
@@ -751,7 +732,7 @@ mdb_sql_bind_all(MdbSQL *sql)
|
|||||||
|
|
||||||
for (i=0;i<sql->num_columns;i++) {
|
for (i=0;i<sql->num_columns;i++) {
|
||||||
sql->bound_values[i] = (char *) g_malloc0(MDB_BIND_SIZE);
|
sql->bound_values[i] = (char *) g_malloc0(MDB_BIND_SIZE);
|
||||||
mdb_sql_bind_column(sql, i+1, sql->bound_values[i]);
|
mdb_sql_bind_column(sql, i+1, sql->bound_values[i], NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ int started;
|
|||||||
{
|
{
|
||||||
bound_values [j] = (char *) g_malloc (MDB_BIND_SIZE);
|
bound_values [j] = (char *) g_malloc (MDB_BIND_SIZE);
|
||||||
bound_values [j] [0] = '\0';
|
bound_values [j] [0] = '\0';
|
||||||
mdb_bind_column (table, j + 1, bound_values [j]);
|
mdb_bind_column (table, j+1, bound_values[j], NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
fprintf (stdout, "/******************************************************************/\n");
|
fprintf (stdout, "/******************************************************************/\n");
|
||||||
|
|||||||
@@ -139,8 +139,7 @@ main(int argc, char **argv)
|
|||||||
|
|
||||||
for (j=0;j<table->num_cols;j++) {
|
for (j=0;j<table->num_cols;j++) {
|
||||||
bound_values[j] = (char *) g_malloc0(MDB_BIND_SIZE);
|
bound_values[j] = (char *) g_malloc0(MDB_BIND_SIZE);
|
||||||
mdb_bind_column(table, j+1, bound_values[j]);
|
mdb_bind_column(table, j+1, bound_values[j], &bound_lens[j]);
|
||||||
mdb_bind_len(table, j+1, &bound_lens[j]);
|
|
||||||
}
|
}
|
||||||
if (header_row) {
|
if (header_row) {
|
||||||
col=g_ptr_array_index(table->columns,0);
|
col=g_ptr_array_index(table->columns,0);
|
||||||
|
|||||||
@@ -60,9 +60,8 @@ main(int argc, char **argv)
|
|||||||
mdb_read_columns(table);
|
mdb_read_columns(table);
|
||||||
mdb_rewind_table(table);
|
mdb_rewind_table(table);
|
||||||
|
|
||||||
col_num = mdb_bind_column_by_name(table, argv[optind+2], buf);
|
col_num = mdb_bind_column_by_name(table, argv[optind+2], buf, &len);
|
||||||
mdb_bind_len(table, col_num, &len);
|
mdb_bind_column_by_name(table, "Name", name, NULL);
|
||||||
mdb_bind_column_by_name(table, "Name", name);
|
|
||||||
|
|
||||||
while(mdb_fetch_row(table)) {
|
while(mdb_fetch_row(table)) {
|
||||||
if (!strcmp(name, argv[optind+1])) {
|
if (!strcmp(name, argv[optind+1])) {
|
||||||
|
|||||||
@@ -80,8 +80,7 @@ char *sargcol, *sargop, *sargval;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
printf("column %d\n",found);
|
printf("column %d\n",found);
|
||||||
mdb_bind_column(table, found, ole_data);
|
mdb_bind_column(table, found, ole_data, &len);
|
||||||
mdb_bind_len(table, found, &len);
|
|
||||||
|
|
||||||
if (sargname) {
|
if (sargname) {
|
||||||
sargcol = strtok(sargname," ");
|
sargcol = strtok(sargname," ");
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ MdbSarg sarg;
|
|||||||
for (j=0;j<table->num_cols;j++) {
|
for (j=0;j<table->num_cols;j++) {
|
||||||
bound_values[j] = (char *) g_malloc(MDB_BIND_SIZE);
|
bound_values[j] = (char *) g_malloc(MDB_BIND_SIZE);
|
||||||
bound_values[j][0] = '\0';
|
bound_values[j][0] = '\0';
|
||||||
mdb_bind_column(table, j+1, bound_values[j]);
|
mdb_bind_column(table, j+1, bound_values[j], NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* print header */
|
/* print header */
|
||||||
|
|||||||
@@ -20,7 +20,6 @@
|
|||||||
|
|
||||||
#include "mdbtools.h"
|
#include "mdbtools.h"
|
||||||
|
|
||||||
int bind_column(MdbTableDef *table, char *colname, unsigned char *data, int *len);
|
|
||||||
void read_to_row(MdbTableDef *table, char *sargname);
|
void read_to_row(MdbTableDef *table, char *sargname);
|
||||||
|
|
||||||
int
|
int
|
||||||
@@ -30,6 +29,7 @@ MdbHandle *mdb;
|
|||||||
MdbTableDef *table;
|
MdbTableDef *table;
|
||||||
char *colname, *tabname;
|
char *colname, *tabname;
|
||||||
char *colval;
|
char *colval;
|
||||||
|
int colnum;
|
||||||
char *sargname = NULL;
|
char *sargname = NULL;
|
||||||
char *updstr = NULL;
|
char *updstr = NULL;
|
||||||
unsigned char data[255];
|
unsigned char data[255];
|
||||||
@@ -55,7 +55,8 @@ int len;
|
|||||||
printf("updstr %s\n",updstr);
|
printf("updstr %s\n",updstr);
|
||||||
colname = strtok(updstr,"=");
|
colname = strtok(updstr,"=");
|
||||||
colval = strtok(NULL,"=");
|
colval = strtok(NULL,"=");
|
||||||
bind_column(table, colname, data, &len);
|
colnum = mdb_bind_column_by_name(table, colname, data, &len);
|
||||||
|
printf("column %d\n", colnum);
|
||||||
read_to_row(table, sargname);
|
read_to_row(table, sargname);
|
||||||
printf("current value of %s is %s, changing to %s\n", colname, data, colval);
|
printf("current value of %s is %s, changing to %s\n", colname, data, colval);
|
||||||
len = strlen(colval);
|
len = strlen(colval);
|
||||||
@@ -70,23 +71,6 @@ int len;
|
|||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int bind_column(MdbTableDef *table, char *colname, unsigned char *data, int *len)
|
|
||||||
{
|
|
||||||
unsigned int i, found = 0;
|
|
||||||
MdbColumn *col;
|
|
||||||
|
|
||||||
for (i=0;i<table->num_cols;i++) {
|
|
||||||
col=g_ptr_array_index(table->columns,i);
|
|
||||||
printf("%d colname %s\n", i, col->name);
|
|
||||||
if (col && !strcmp(col->name,colname)) {
|
|
||||||
found = i+1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
printf("column %d\n",found);
|
|
||||||
mdb_bind_column(table, found, data);
|
|
||||||
mdb_bind_len(table, found, len);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
void read_to_row(MdbTableDef *table, char *sargname)
|
void read_to_row(MdbTableDef *table, char *sargname)
|
||||||
{
|
{
|
||||||
static MdbSargNode sarg;
|
static MdbSargNode sarg;
|
||||||
|
|||||||
Reference in New Issue
Block a user