Crear Base De Datos Sqlite Con Codigo Como?


Ir a la página 1, 2  Siguiente

Objetivo: Crear Base De Datos Sqlite Con Codigo Como?
buenas, hasta ahora he conocido hacer una base de datos creándola con gambas ahora bien,
me interesa crear una base de datos desde el código así por ejemplo en vez de copiar una base de datos de una copia ya hecha, sencillamente crear una de cero con una sentencia sql.

pero aun no doy como crear una base de datos con el propio código gambas.
la idea de esto también es poder crear bases y tablas y verlas con el programita que hice el InfoDataBaseSql

alguna idea por donde empezar?

Objetivo: Re: Crear Base De Datos Sqlite Con Codigo Como?
V3ctor:

He encontrado un ejemplo en la web, y lo he subido a mi blog:

http://jsbsan.blogspot.com.es/2015/...na-base-de.html


Saludos

Objetivo: Re: Crear Base De Datos Sqlite Con Codigo Como?
Sólo una precisión: Eso del Gridview no es necesario para crear la base y las tablas.
Para eso basta con estas líneas:

DIM $hConn AS NEW Connection
DIM htable as table

'delete an existing test.sqlite, o sea, profilaxis
IF Exist(User.home & "/test.sqlite") THEN
KILL User.home & "/test.sqlite"
ENDIF

'create test.sqlite
$hConn.Open
$hConn.Databases.Add("test.sqlite")
$hconn.Close

'define the table sampleTable
$hconn.name = "test.sqlite"
$hConn.Open
hTable = $hConn.Tables.Add("sampleTable")
hTable.Fields.Add("s_seq", db.Integer)
hTable.Fields.Add("s_rndm", db.Integer)
hTable.PrimaryKey = ["s_seq"]
hTable.Update


Antes había un ejemplo guay en los antiguos ejemplos. Era uno que hacía una base de datos de imágenes, se creataba todo por código.
Ahora en la granja no está...

Perfil MP  
Objetivo: Re: Crear Base De Datos Sqlite Con Codigo Como?
Shordi;:


Citar:
Antes había un ejemplo guay en los antiguos ejemplos. Era uno que hacía una base de datos de imágenes, se creataba todo por código.
Ahora en la granja no está...

¿Cual era?

Si me lo dices lo subo a la granja (yo tengo la 3.5.4, y alli todavia estan los ejemplos)

Objetivo: Re: Crear Base De Datos Sqlite Con Codigo Como?
Creo que se llamaba picture dabase...

Perfil MP  
Objetivo: Re: Crear Base De Datos Sqlite Con Codigo Como?
Hola v3ctor,

yo puse en el foro de gambas-it el enlace a este tu asunto.

Hay un aporte:
http://www.gambas-it.org/smf/index....3;boardseen#new

última edición por vuott el Martes, 05 May 2015, 14:43; editado 1 vez
Perfil MP  
Objetivo: Re: Crear Base De Datos Sqlite Con Codigo Como?
shordi y jsbsan

me da este error:

pantallazo_1430833341_233829

tengo instalados los dos componentes el sqlite3 y el de base de datos.

Objetivo: Re: Crear Base De Datos Sqlite Con Codigo Como?
Citar:
Off topic
shordi y jsbsan

me da este error:


Tienes que acostumbrarte a intentar entender el código que se pone aquí. No se pretende dar una solución exacta de corta y pega tan sólo apuntar hacia dónde va el camino a seguir.
Dicho lo cual, para que funcione a la conexión hay que darle el camino y el tipo de base de datos...

Dim $hConn As New Connection
Dim htable As Table

'delete an existing test.sqlite, o sea, profilaxis
If Exist(User.home & "/test.sqlite") Then
Kill User.home & "/test.sqlite"
Endif
$hConn.Type = "sqlite"
$hConn.host = User.Home
'create test.sqlite
$hConn.Open
$hConn.Databases.Add("test.sqlite")
$hconn.Close

'define the table sampleTable
$hconn.name = "test.sqlite"
$hConn.Open
hTable = $hConn.Tables.Add("sampleTable")
hTable.Fields.Add("s_seq", db.Integer)
hTable.Fields.Add("s_rndm", db.Integer)
hTable.PrimaryKey = ["s_seq"]
hTable.Update

última edición por shordi el Martes, 05 May 2015, 16:26; editado 1 vez
Perfil MP  
Objetivo: Re: Crear Base De Datos Sqlite Con Codigo Como?
Vuott:
El código de tu colega muy clarito y apropiado.

Perfil MP  
Objetivo: Re: Crear Base De Datos Sqlite Con Codigo Como?
Hola!.

Lo que estoy viendo es que es más fácil encontrar ejemplos de gambas para crear las tablas desde códigos, pero no el código para ir añadiendo registros.
Si, en el ejemplo que Julio muestra.

Tengo uno que posiblemente sea de la comunidad, trata de la creación de una biblioteca, pero no se añaden registro.
Es del usuario Ahtonio.

'Ejemplo de Ahtonio

Public Sub Form_Open()

End

' gambas module file
Public hCon As Connection 'Conexion que usaremos en toda la aplicacion
Const sDBname As String = "mybooks.db" 'Todos los usuarios leeran en su Home
'la base de datos mybooks.db (sqlite3)

Public Sub openDB()
'hCon.Close 'Podemos intentar cerrar la conexion si hay alguna activa y no dara error

hCon = New Connection 'Instanciamos conexion
With hCon
.Type = "sqlite3"
.Host = User.Home 'En el directorio Home (para todos los usuarios)
.Name = ""
End With
hCon.Open
If Not hCon.Databases.Exist("mybooks.db") Then 'Si no existe la B.D. la creamos
hCon.Databases.Add("mybooks.db")
Wait 0.3 'Esperamos para dar tiempo a que sea creada si hay algun lapso
hCon.Close
hCon.Name = "mybooks.db"
hCon.Open
' Como la hemos creado nueva, creamos las tablas
newlibro
newautor
newcoleccion
newgenero
neweditorial
Endif
hCon.Close
hCon.Name = sDBname
hCon.Open

End

Public Function newlibro() As Boolean
' Tabla de la ficha de registro de libros

Dim hTable As Table

If Not hCon.Tables.Exist("libro") Then
hTable = hCon.Tables.Add("libro")
With hTable.Fields
.Add("idlib", db.Serial) ' Identificador - Id
.Add("titlib", db.String, 40) ' Titulo
.Add("sublib", db.String, 40) ' Subtitulo
.Add("autlib", db.Integer,, 1) ' R -> Autor
.Add("collib", db.Integer,, 1) ' R -> Coleccion
.Add("edilib", db.Integer,, 1) ' R -> Editorial
.Add("genlib", db.Integer,, 1) ' R -> Genero
.Add("paglib", db.Integer) ' Numero de paginas
.Add("siplib", db.String) ' Sipnosis argumental
.Add("isbnlib", db.String, 14) ' ISBN - Numero de identificacion
.Add("stdlib", db.Boolean,, True)
End With
hTable.PrimaryKey = ["idlib"]
hTable.Update
Endif

End

Private Function newcoleccion() As Boolean
' Agrupación de libros en colecciones
' Si no pertenece a ninguna coleccion sera la 1 - INDEPENDIENTE

Dim hTable As Table
Dim rsTable As Result

If Not hCon.Tables.Exist("coleccion") Then
hTable = hCon.Tables.Add("coleccion")
With hTable.Fields
.Add("idcol", db.Serial)
.Add("nomcol", db.String, 30)
End With
hTable.PrimaryKey = ["idcol"]
hTable.Update
Endif
rsTable = hCon.Create("coleccion") 'Creamos registro
rsTable!nomcol = "INDEPENDIENTE" 'Dato que tomara el campo
rsTable.Update 'Hacemos efectivos los cambios (grabamos)

End

Private Function newgenero() As Boolean
' Categoria de libros por su genero
' Si no conocemos el genero sera el 1 - INDEFINIDO

Dim hTable As Table
Dim rsTable As Result

If Not hCon.Tables.Exist("genero") Then
hTable = hCon.Tables.Add("genero")
With hTable.Fields
.Add("idgen", db.Serial)
.Add("nomgen", db.String, 30)
End With
hTable.PrimaryKey = ["idgen"]
hTable.Update
Endif
rsTable = hCon.Create("genero") 'Creamos registro
rsTable!nomgen = "INDEFINIDO" 'Dato que tomara el campo
rsTable.Update 'Hacemos efectivos los cambios (grabamos)

End

Public Function neweditorial() As Boolean
' Tabla de datos de la editorial

Dim hTable As Table

If Not hCon.Tables.Exist("editorial") Then
hTable = hCon.Tables.Add("editorial")
With hTable.Fields
.Add("idedi", db.Serial)
.Add("nomedi", db.String, 40)
.Add("diredi", db.String, 40)
.Add("disedi", db.String, 5)
.Add("pobedi", db.String, 20)
.Add("prvedi", db.String, 20)
.Add("tlfedi", db.String, 9)
.Add("webedi", db.String, 40) 'Direccion web
.Add("maiedi", db.String, 40) 'Correo electronico
End With
hTable.PrimaryKey = ["idedi"]
hTable.Update
Endif

End

Public Function newautor() As Boolean
' Tabla de datos de autor

Dim hTable As Table

If Not hCon.Tables.Exist("autor") Then
hTable = hCon.Tables.Add("autor")
With hTable.Fields
.Add("idaut", db.Serial)
.Add("nomaut", db.String, 40)
.Add("obsaut", db.String)
End With
hTable.PrimaryKey = ["idaut"]
hTable.Update
Endif
End



Como veis en este caso no aparece el añadir registros.

No se si en gambas la creación de las bases de datos por códigos son algo más extensas que en Python.
Lo cierto es que sin tener mucha idea de base de datos con sqlite3, de un ejemplo que todo era texto, logré
crear una base de una forma muy sencilla. A ver si lo veo.

#!/usr/bin/python3

# Creando una base de datos en Sqlite3

# Existen muchos tipos de bases de datos en Python, para nuestro
# proposito vamos a usar Sqlite3, por un numero de razones

# La primera es que SQLite3 viene con Python
# Asi que si instalas Python, instalas Sqlite3
# Sqlite3 es la eleccion perfecto para muchas aplicaciones

# Es seguro, simple y no requiere un motor de base externo.
# Es autónomo, sin servidor, configuración cero y completamente
# transacional

# Es un motor de base de datos completamente capaz de ser
# increiblemente facil de usar

# Se debe importar el modulo sqlite3

import sqlite3

def main():
# De esta forma creamos la base de datos
# Tenemos una base, un archivo vacio y muy simple de hacer.
db = sqlite3.connect('test.db')

# En Python existen muchas opciones y metodos que tu puedes utilizar
# y tiene una gran potencia para trabajar con las bases de datos

# Vamos a ver que es una factoria de fila. (row factory)
# Nosotros diriamos db.row_factory = sqlite3.Row.

# Row factory permite especificar cuantas filas sera
# devuelta desde el cursor y por la función interna row_factory
# sqlite3.Row, es muy poderosa y muy sugerida para la mayoría de
# los propositos. La respuesta que vamos a tener es que mostrara
# objetos filas, en vez de tuplas.

# <sqlite3.Row object at 0xb5e25c70>
# <sqlite3.Row object at 0xb5e25c40>
# <sqlite3.Row object at 0xb5e25c70>
# <sqlite3.Row object at 0xb5e25c40>

# Podriamos verlos como tuplas si quisieramos, o podriamos verlo
# como diccionarios. Que lo encontramos particularmente practicos

# ( Vamos a cambiar el bucle abajo).

db.row_factory = sqlite3.Row
# Ahora usaremos db.execute y vamos a darle algunas sentencias SQL
db.execute('drop table if exists test')
# Crearemos la tabla test y le daremos algunos campos
db.execute('create table test (t1 text, i1 int)')
# Ahora insertaremos valores en los campos contenido en los parentesis
# que nos permiten darle un valor
db.execute('insert into test (t1, i1) values (?, ?)',('one',1))
# Ahora repetiremos el proceso unas pocas veces y vamos cambiando
# valores
db.execute('insert into test (t1, i1) values (?, ?)',('two',2))
db.execute('insert into test (t1, i1) values (?, ?)',('threee',3))
db.execute('insert into test (t1, i1) values (?, ?)',('four',4))

# Y asi, vamos añadiendo registros en SQL, y ahora nos falta
# hacer el metodo commit() por que SQlite es una base transacional
# Almacenamos estos valores, en caso de que no los necesitemos
db.commit()

# Clasificamos por el campo t1
# cursor = db.execute('select * from test order by t1')
# Si quisieramos ordenar por el campo i1 seguido de t1, simplemente
# cambiamos la sentencia SQL
cursor = db.execute('select i1,t1 from test order by i1')

for row in cursor:
# Asi que si yo digo que es como un diccionario. Estoy
# creando un diccionario de objetos basados en iterable,
# por que fila es un iterable.
# print (dict(row))

# La salida sería de esta forma:
# {'i1': 1, 't1': 'one'}
# {'i1': 2, 't1': 'two'}
# {'i1': 3, 't1': 'threee'}
# {'i1': 4, 't1': 'four'}

# Si quisieramos decir filas hasta t1, obtendriamos los
# objetos t1
# print (row['t1'])
# Si quisieramos obtener rodos los datos
print (row['t1'],row['i1'])

if __name__ == "__main__": main()


Siempre tendremos una gran similitud. Bueno, esto me lo he ido currando viendo los vídeos en ingles..
( Parece una forma más corta a simple vista, tengo que verlo mejor. Naturalmente los ejemplos son distintos)

Saludos

Ir a la página 1, 2  Siguiente

Página 1 de 2


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.6788s (PHP: -22% SQL: 122%)
Consultas SQL: 47 - Debug off - GZIP Activado