<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Сохранение данных в SQL Lite (пример)]]></title><description><![CDATA[<p dir="auto">В этом <a href="https://forum.cheatengine.org/viewtopic.php?t=605365" target="_blank" rel="noopener noreferrer nofollow ugc">примере</a> CE собирает статистику подключенного процесса присваивая рейтинг. Чем чаще процесс открыт, тем выше его рейтинг.</p>
<pre><code>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(&lsqb;&lsqb;
    CREATE TABLE something (
    'id' INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
    'processname' char(256) NOT NULL,
    'rating' INTEGER);
  &rsqb;&rsqb;)
  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(&lsqb;&lsqb; Select * from something where processname='%s' &rsqb;&rsqb;,pn) --not secure, I know, just an example
  q.Active=true

  if q.RecordCount&gt;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(&lsqb;&lsqb;update something set rating=rating+1 where id=%d&rsqb;&rsqb;, id)
    q.ExecSQL()

  else
    print("Not yet in the list")
    c.ExecuteDirect(string.format(&lsqb;&lsqb;insert into something(processname,rating) values('%s',1)&rsqb;&rsqb;,pn))
  end

  q.Active=false

  q.StatementType='stSelect'
  q.SQL.Text=&lsqb;&lsqb;select * from something&rsqb;&rsqb;
  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()

</code></pre>
<p dir="auto">Для чего можно использовать базы данных?</p>
<ol>
<li>для хранения большого количества связанных данных. Например, это хранение данных анимаций и костей. Т.е. можем записывать анимации персонажей, присваивать имя анимации, идентификатор. Дублировать, менять на свои.</li>
<li>Записывать и менять конфигруации песонажей</li>
<li>Записывать позиции, углы камер или персонажей</li>
<li>Делать карту с описаниями, какой npc, где расположен, какой инвентарть и т.п. и менять его</li>
<li>Теоритически базу можно использовать удаленно на через сервер базы данных, а модфицированные клиенты могут синхронизироваться. Фактически из сингла можно сделать мультиплеер. Или же взять клиент игры и сделать в нем свою базу для игры в сингле (для себя к примеру)</li>
</ol>
<p dir="auto">А для чего еще можно использовать базу данных? Если кто знает или есть идеи, то можно вместе обсудить.</p>
]]></description><link>https://celua.ru/topic/130/сохранение-данных-в-sql-lite-пример</link><generator>RSS for Node</generator><lastBuildDate>Wed, 20 May 2026 04:05:41 GMT</lastBuildDate><atom:link href="https://celua.ru/topic/130.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 18 Jun 2023 19:06:46 GMT</pubDate><ttl>60</ttl></channel></rss>