Skip to content
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы
Collapse
Brand Logo

CELua[RU]

  1. Главная
  2. Общение
  3. MasterGH
  4. Сохранение данных в SQL Lite (пример)

Сохранение данных в SQL Lite (пример)

Запланировано Прикреплена Закрыта Перенесена MasterGH
1 Сообщения 1 Posters 46 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • MasterGHM Не в сети
    MasterGHM Не в сети
    MasterGH Администраторы
    написал в отредактировано MasterGH
    #1

    В этом примере CE собирает статистику подключенного процесса присваивая рейтинг. Чем чаще процесс открыт, тем выше его рейтинг.

    c=createSQLite3Connection()
    c.DatabaseName = 'C:\\VPProjects.sqllite'
    c.Connected=true
    
    t=createSQLTransaction()
    t.SQLConnection=c
    t.Active=true
    
    tn=c.getTableNames()
    if #tn==0 then
      print("empty")
    
      c.ExecuteDirect([[
        CREATE TABLE something (
        'id' INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
        'processname' char(256) NOT NULL,
        'rating' INTEGER);
      ]])
      tn=c.getTableNames()
      if #tn==0 then error('no table created') end
    
    end
    
    print("tables:")
    local hassomething=false
    local i
    for i=1,#tn do
      print(tn[i])
      if tn[i]=='something' then hassomething=true end
    end
    
    if hassomething then
      pn=process
      if (pn==nil) or (p=='nil') then pn='no process'  end
    
      --check if pn is in the table, if so, increment rating, else add it
      q=createSQLQuery()
      q.SQLConnection=c
      q.SQLTransaction=t
    
      q.SQL.Text=string.format([[ Select * from something where processname='%s' ]],pn) --not secure, I know, just an example
      q.Active=true
    
      if q.RecordCount>0 then
        print("In the list")
        fields=q.Fields
        print("fieldcount="..fields.Count)
    
        local id=q.FieldByName('id').asInteger
        print("id="..id)
    
        local rating=q.FieldByName('rating')
        print("rating="..rating.asInteger)
    
        q.Active=false
        q.StatementType='stUpdate'
        q.SQL.Text=string.format([[update something set rating=rating+1 where id=%d]], id)
        q.ExecSQL()
    
      else
        print("Not yet in the list")
        c.ExecuteDirect(string.format([[insert into something(processname,rating) values('%s',1)]],pn))
      end
    
      q.Active=false
    
      q.StatementType='stSelect'
      q.SQL.Text=[[select * from something]]
      q.Active=true
    
      count=1
      print(string.format("RecordCount=%d", q.RecordCount))
      while not q.EOF do
        print("line "..count)
        local i
        for i=0, q.Fields.Count-1 do
          print(string.format("  %s = %s", q.Fields[i].FieldName, q.Fields[i].Value))
        end
    
        q.next()
        count=count+1
      end
    
      q.Active=false
      q.destroy()
    
    else
      error("something doesn't exist")
    end
    
    t.Commit()
    t.Active=false
    c.Connected=false
    
    t.destroy()
    c.destroy()
    
    

    Для чего можно использовать базы данных?

    1. для хранения большого количества связанных данных. Например, это хранение данных анимаций и костей. Т.е. можем записывать анимации персонажей, присваивать имя анимации, идентификатор. Дублировать, менять на свои.
    2. Записывать и менять конфигруации песонажей
    3. Записывать позиции, углы камер или персонажей
    4. Делать карту с описаниями, какой npc, где расположен, какой инвентарть и т.п. и менять его
    5. Теоритически базу можно использовать удаленно на через сервер базы данных, а модфицированные клиенты могут синхронизироваться. Фактически из сингла можно сделать мультиплеер. Или же взять клиент игры и сделать в нем свою базу для игры в сингле (для себя к примеру)

    А для чего еще можно использовать базу данных? Если кто знает или есть идеи, то можно вместе обсудить.

    1 ответ Последний ответ
    0

Powered by NodeBB | Contributors
СeLua[RU] 2024©
  • Войти

  • Нет учётной записи? Зарегистрироваться

  • Login or register to search.
  • Первое сообщение
    Последнее сообщение
0
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы