Página 1 de 1

Como saber si una columna es "Auto incrementar" en DB SQLite

Publicado: 15 Oct 2014 07:18
por Dow Sher
Saludos a todos!

Estoy terminando un proyecto para unir varias DB's en una sola :) , pero tengo un problema (otra vez) :sorry: , necesito hacer un filtro para saber cuales son las columnas "Autoincrementar" (por ejemplo el ID que muchos usamos en nuestras DB's) :pc: , me surge este problema ya que el Query debe tener "NULL" en este tipo de campos, pero como hay DB's que contienen este tipo de campos también hay DB's que no los contienen, por ello necesito realizar ese filtro en el proyecto, para saber si en el Query colocar "NULL" o no colocarlo.

De antemano gracias.
Espero sus respuestas.
Saludos Dow Sher

Publicado: 15 Oct 2014 10:38
por rafaxplayer
si utilizas sqlite3 mírate la funcion stmt:get_named_types.

http://lua.sqlite.org/index.cgi/doc/tip ... lite3.wiki

En AMSFiles hay un ejemplo "example_Sqlite_Tiny" donde se usan estas funcione del statement.

Publicado: 16 Oct 2014 00:57
por Dow Sher
rafaxplayer lamentablemente no estoy usando SQLite 3. Pero gracias por tu respuesta, espero puedas ayudarme

Publicado: 16 Oct 2014 01:05
por comprotodo201480
Sra que no se puede hacer un salto en la primera linea de copiado algo asi como
-1

Publicado: 16 Oct 2014 01:33
por Pabloko
la funcion de lua type(x) te devolvera un string con lo que es

a=1
b="2"
c=false
e={1,2}

type(a)=="number"
type(b)=="string"
type(c)=="boolean"
type(e)=="table"

Publicado: 16 Oct 2014 07:51
por Dow Sher
Estoy usando el plugin SQLite que viene en el Power Pack.
En el plugin viene la siguiente función:
SQLite.GetRowColumnTypesAssoc (database dbHandle);
Imagen
Pero no logro entender como funciona, ¿Me podrían ayudar?

Re: Obtener tipo de campo en DB SQLite

Publicado: 16 Oct 2014 09:04
por rafaxplayer
Yo he probado esas mierdas de funciones y tampoco he sacado nada en claro , se supone que hay que usar primero sqlite.copile()pero ni así.

Bueno se em ocurre que hagas un querytotabel con "PRAGMA table_info(table-name)" para obtener la información de la tabla.

Luego con tiempo lo mirare mejor.

Publicado: 16 Oct 2014 22:09
por comprotodo201480
De que hace las funciones de copiar y unir tablas en 1 sola db si lo hace el señor dow me paso una ayuda , la ejecute y logre fucionar 6 db en 1 sola, cada db con 2 tablas internas y funciono perfecto.

Re:

Publicado: 17 Oct 2014 00:26
por rafaxplayer
comprotodo201480 escribió:De que hace las funciones de copiar y unir tablas en 1 sola db si lo hace el señor dow me paso una ayuda , la ejecute y logre fucionar 6 db en 1 sola, cada db con 2 tablas internas y funciono perfecto.
No es eso lo que quiere, si no tienes ninguna sugerencia , dejalo nen...

Re: Obtener tipo de campo en DB SQLite

Publicado: 17 Oct 2014 05:14
por Dow Sher
Uff...
Después de un arduo trabajo de investigación en distintos foros y un golpe de suerte obtuve este Script con el cual se obtiene el tipo de campo de cada columna de una base de datos.

Utilice el plugin SQLite que viene en Power Pack.
db = SQLite.Open(Database_Pacth);
SQLite.Compile(db, "SELECT * FROM your_table_name");
if (nLastError ~= SQLite.OK ) then
  Debug.ShowWindow(true);
  Debug.Print("Error (".. nLastError .."): ".. SQLite.GetErrorString(nLastError) .. "\r\n");
else
 Debug.ShowWindow(true);
  repeat
    SQLite.Step(db);
      nLastError = Application.GetLastError();
        if (nLastError == SQLite.ROW) then
          nColumnTypes = SQLite.GetRowColumnTypesArray(db);
            for index = 1, Table.Count(tbColumnTypes) do
              Debug.Print("La columna "..index.." es del tipo: " .. tbColumnTypes[index] .."\r\n");
            end
              Debug.Print("----\r\n");
  until (nLastError ~= SQLite.ROW);
end
rafaxplayer ya se porque la funciones no servían, para utilizar una función como SQLite.GetRowColumnTypesArray() debes de usar antes SQLite.Compile() pero al mismo tiempo la función SQLite.Compile() te pide que uses SQLite.Step() para obtener una sola fila de resultado y con todo eso echo ahora si servirían las funciones:
GetRowDataArray
GetRowDataAssoc
GetRowColumnNamesArray
GetRowColumnTypesArray
GetRowColumnTypesAssoc

Ahora ya sabemos porque no podíamos usar algunas funciones del plugin SQLite, ¿aunque para que poner tantos requisitos para usarlas? pero bueno yo no cree el plugin y el que lo creo sus razones tuvo para poner tantas trabas, de cualquier forma se debe ser agradecido por haberlo creado.

Espero que a muchos les sirva esta info, Saludos Dow Sher :friends:
Posdata: El problema es que no se puede obtener si es "Auto incrementar" :(

Publicado: 17 Oct 2014 22:16
por comprotodo201480
Muy buen trabajo, Felicitaciones

A Rafax gracias por el regaño