fasm передача функции структур с данными

Тема в разделе "WASM.BEGINNERS", создана пользователем common_up, 24 янв 2011.

  1. common_up

    common_up New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2010
    Сообщения:
    85
    В общем вопрос достаточно размыт и в общем прошу помощи в его точной формулировке:)

    Готовится функция, которая будет в БД забрасывать данные. Хочется сделать так, чтобы можно было с помощью этой функции заполнять или один столбец или сразу несколько.

    функция будет иметь примерный вид такой:
    Код (Text):
    1.     proc insert_data,hSqlite,...,....,
    2.             local .ppStmt dd ?
    3.    
    4.         ;;
    5.     ;;      Insert data to tables
    6.     ;;
    7.             lea eax,[.ppStmt]
    8.             stdcall [sqlite3_prepare],[hSqlite],.strSQL1,.szSQL1,eax,0
    9.             stdcall [sqlite3_step],[.ppStmt]
    10.             stdcall [sqlite3_finalize],[.ppStmt]
    11.            
    12.                
    13.             ret
    14.             ;1
    15.                 .strSQL1            db "INSERT INTO %s (%s) VALUES('%s')",0
    16.                 .szSQL1                 = $ - .strSQL1
    17.             ;2
    18.                 .strSQL2            db "INSERT INTO %s (%s,%s) VALUES('%s','%s')",0
    19.                 .szSQL2                 = $ - .strSQL2
    20.             ;3
    21.                                 .....................................................................................................
    22.                                 .....................................................................................................  
    23.     endp
    В общем это как понимаете не окончательный вид функции, но думаю смысл всем ясен. Функция должна заполнять по задумке две таблицы:
    1) developer (developer_id INTEGER PRIMARY KEY AUTOINCREMENT, developer_name TEXT,developer_counter INTEGER)
    2) project (project_id INTEGER PRIMARY KEY AUTOINCREMENT, project_name TEXT,link_developer_name TEXT,FOREIGN KEY(link_developer_name) REFERENCES developer(developer_name))
    в первую таблицу будут поступать данные в виде:
    INSERT INTO developer (developer_name,developer_counter) VALUES('foo','111');
    во вторую будут поступать значения в виде:
    INSERT INTO project (project_name,project_counter,link_developer_name) VALUES('foo','+1',1);

    Если брать в целом функцию, то она будет намного сложнее, но это тут не важно. Важно другое:)
    Как сформировать правильно по вашему мнению структуры, чтобы передать в функцию ?

    к примеру я это вижу так:
    передаем структуру, в которой будут указатели на две или более структур
    struct BaseStruct
    table_name dp ? ; имя таблицы, которая будет заполняться
    table_data TableData ; указатель на структуру, где будет имя ячейки и информация, которая должна поступить в эту ячейку
    ends

    struct TableData
    name dp ? ; имя ячейки
    data1 dp ? ; первая переменная, которая будет загружаться в ячеку
    data2 dp ? ; 2-я переменная, которая будет загружаться в ячеку
    data3 dp ? ; 3-я переменная, которая будет загружаться в ячеку
    data4 dp ? ; 4-я переменная, которая будет загружаться в ячеку
    ......
    .....
    ends

    Получается у нас должна быть не одна структура, а две и более(если ячеек несколько) и как их автоматом нагенерить(в случае, если будем заполнять несколько ячеек). В общем у меня такое чувство, что я не в ту сторону всё это завернул. Помогите в общем найти верное решение к данному вопросу. Как бы Вы все это реализовали ?:)
     
  2. common_up

    common_up New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2010
    Сообщения:
    85
    я туплю или нет никаких соображений ни у кого ?
     
  3. pashe4ka13

    pashe4ka13 New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2010
    Сообщения:
    263
    Скорее всего первое, так как я вообще не понял чего вы хотите. Вы хотите написать функцию которая будет заполнять структуру или принимать? Или вы не можете составить структуру со вложенными структурами?
     
  4. krabz

    krabz New Member

    Публикаций:
    0
    Регистрация:
    26 май 2010
    Сообщения:
    135
    Итак, насколько я понял, нужно передать в функцию два списка строк для запись в таблицу. Так?
    Тогда ответьте на такие вопросы:

    1. Имена таблиц и столбцов в БД фиксированные? Или их требуется также передавать в эту функцию?
    2. Количество столбцов в первой и второй таблице фиксированное? Или тоже переменное?
     
  5. common_up

    common_up New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2010
    Сообщения:
    85
    Question in deep a frost=)