Hola! Soy relativamente nuevo en Bennu, sabeis si existe alguna libreria para el manejo de bases de datos? en Bennu?
Muchas gracias.
En Fenix había hace mucho tiempo una librería para acceder a MySql, si mal no recuerdo. A lo mejor buscando en fenixworld la encuentras...pero dudo que funcione hoy en día.
Pero la verdad es que lo que propones es muy interesante.
;D si existe en fenix un par de librerias, para bennu aun no
:( , una libreria de estas agilizaria bastante la gestion de grandes recopilaciones de datos a usar por un programa. En fin, tendre que hacer lo que me traigo entre manos de otra manera, gracias por responder.
Aprovechando el tema...¿sería muy complicado hacer un módulo de acceso a Sqlite?
http://www.sqlite.org/quickstart.html
http://www.sqlite.org/cintro.html
http://www.sqlite.org/c3ref/intro.html
Aca sandman y sus compañeros tienen un modulo de acceso a sqlite en su proyecto de colegiatura...
http://code.google.com/p/molapse/
Pero por lo que he visto, este proyecto es mucho más complejo.
Yo a lo que me refería era a tener un módulo de Bennu que implementara sencillas funciones de acceso y manipulación de datos que serían no más que wrappers de la api para c que los de sqlite ofrecen.
No es que el proyecto sea complejo sino que incorpora algunos modulos, entre ellos hay uno de acceso a base de datos.
Directories
* svn
o branches
o tags
o trunk
+ dev
# bin
* gui_data
* import
# bin_pak
# codeblocks.win32
# diagram
# lib
* sdl_2005
* sdl_mingw
# src
* mod_cfg
* mod_ren
* mod_sql
* shared
# visualstudio.win32
* mod_cfg
* mod_ren
* mod_sql
o release
+ docs
# reportLoading...
# screenshotsLoading...
+ proto
# binLoading...
# codeblocks.linuxLoading...
# codeblocks.win32Loading...
# depsLoading...
# docLoading...
# libLoading...
# projectLoading...
# srcLoading...
+ vendor
# MemoryModuleLoading...
# SDLLoading...
# bennuLoading...
# bsguiLoading...
# physfsLoading...
# tinyxmlLoading...
# zlibLoading...
o vendor
+ SDL
+ SQLite
+ bennu
+ bsgui
# includeLoading...
+ freetype
# buildsLoading...
# develLoading...
# includeLoading...
# srcLoading...
+ ftgl-2.1.3~rc5
# msvcLoading...
# srcLoading...
+ glew
# binLoading...
# buildLoading...
# configLoading...
# docLoading...
# includeLoading...
# srcLoading...
+ tinyxml
+ zlib
o wiki
;D bases de datos el lo ultimo que me falta para estar en bennu only es la parte que me falta de migrar en el proyecto sigo a un con fenix 92a en algunas cosas
Acabo de ver que hay wrappers de la Api de Sqlite para (casi) todos los millones de lenguajes que hay:
http://www.sqlite.org/cvstrac/wiki?p=SqliteWrappers
SQLIte
si hace tiempo en el bennupack se incluyo , bajatelo!!!!
;D
y en el fenixpack ya un poco devaluado tambien hay para ODBC
Gracias! aunque el BennuPack sólo funciona para Windows...miraré a ver si el sqlite que lleva se puede abstraer de este detalle.
Lo he probado con Wine y está muy bien!! Con el código de la Api y el wrapper que habéis hecho no creo que sea muy difícil hacerlo multiplataforma...
Oye, tenéis un montón de dlls allí metidas, qué guay!!
voy a echarle un vistazo yo tambien, que de verdad me hace falta ;)
Vaya. Lo estoy probando en Wine y no hago bien las cosas.
En compilar test01.prg primero me decía que sql.h no encontraba sql.dll, cuando están en la misma carpeta. He puesto la ruta absoluta y entonces va, pero me salta un error de: "Undefined procedure ("SQLITE3_OPEN")".
Y no sé qué tocar.
LD_LIBRARY_PATH
investiga eso...
Bien estoy probando la sqlite3 y funciona bastante bien para lo que necesito. El unico problema es que ahora cuando quiero hacer una consulta Insert into, Bennu me da error en ejecución. La tabla de la base de datos se actualiza perfectamente, asi que dudo que el problema venga de la libreria.
El programa hace algo asi:
function evento()
Begin
if(rand(1,100)>50)
SQLITE3_OPENTABLE(db,"SELECT Nombre FROM Jugadores Where ID="+2,sqlRes);
if(sqlRes.rows>0)
NombreJugador=SQLITE3_GETFIELDValue(sqlRes,0);
SQLITE3_CLOSETABLE(sqlRes);
SQLITE3_EXEC(db,"BEGIN TRANSACTION");
SQLITE3_EXEC(db,"INSERT INTO NombresDeJugadores VALUES("'+NombreJugador+"')");
SQLITE3_EXEC(db,"COMMIT");
end
end
return 1;
end
El error que me da es el siguiente:
Assertion failed: code < string_allocated && code >= 0, file strings.c, line 264
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
Alguien me puede dar una explicación a esto? Gracias! :)
;D yo necesito Mysql para Bennu para el migrado al 100%
pareciera que la dll no hace el uso correcto de string_discard and string_use
Que dll estas usando? donde esta el codigo?
Supongo que la que viene en el BennuPack. Viene compilada para Windows y también el código fuente. Yo estoy intentando compilarla para Linux, en un par de días espero tenerla lista.
Splinter, Si me la descargue de Bennupack(http://bennupack.blogspot.com/).
Lo raro es que solo algunas veces da el error del String, es rarisimo ??? , aun asi como dije... siempre realiza la accion que tu quieres hacer a la base de datos, pero luego da error de ejecucion >:(
Hola.
He estado intentando compilar esta librería para Linux y me han salido estos warnings. No se si tiene algo que ver con lo que decís,pero como va de strings pues a lo mejor alguien ve más allá que yo...
/home/q2dg/Desktop/ssss/main.c| |In function 'fxi_opendb':|
/home/q2dg/Desktop/ssss/main.c| 65|warning: implicit declaration of function 'string_get'|
/home/q2dg/Desktop/ssss/main.c| 75|warning: implicit declaration of function 'string_discard'|
/home/q2dg/Desktop/ssss/main.c| |In function 'fxi_GetfieldName':|
/home/q2dg/Desktop/ssss/main.c| 148|warning: implicit declaration of function 'string_new'|
/home/q2dg/Desktop/ssss/main.c| 149|warning: implicit declaration of function 'string_concat'|
/home/q2dg/Desktop/ssss/main.c| 150|warning: implicit declaration of function 'string_use'|
||=== Build finished: 0 errors, 5 warnings ===|
Por cierto, compilar ha compilado, pero a la hora de probar algún código de ejemplo no se encuentra la librería...vamos, hay un lío entre un archivo llamado sql3.h y el archivo .so que he creado yo...un rollo. Ya veré qué pasa.
Quote from: osk on June 30, 2009, 09:43:29 PM
Hola.
He estado intentando compilar esta librería para Linux y me han salido estos warnings. No se si tiene algo que ver con lo que decís,pero como va de strings pues a lo mejor alguien ve más allá que yo...
/home/q2dg/Desktop/ssss/main.c| |In function 'fxi_opendb':|
/home/q2dg/Desktop/ssss/main.c| 65|warning: implicit declaration of function 'string_get'|
/home/q2dg/Desktop/ssss/main.c| 75|warning: implicit declaration of function 'string_discard'|
/home/q2dg/Desktop/ssss/main.c| |In function 'fxi_GetfieldName':|
/home/q2dg/Desktop/ssss/main.c| 148|warning: implicit declaration of function 'string_new'|
/home/q2dg/Desktop/ssss/main.c| 149|warning: implicit declaration of function 'string_concat'|
/home/q2dg/Desktop/ssss/main.c| 150|warning: implicit declaration of function 'string_use'|
||=== Build finished: 0 errors, 5 warnings ===|
Por cierto, compilar ha compilado, pero a la hora de probar algún código de ejemplo no se encuentra la librería...vamos, hay un lío entre un archivo llamado sql3.h y el archivo .so que he creado yo...un rollo. Ya veré qué pasa.
eso es parte de lo que decia... seguramente esta prototipando cualquier cosa, y al hacer esto, el stack puede no restaurarse correctamente...
y no se puede solucionar? :-[
:D yo uso esta libreria para fenix y tal no se si estaran las fuentes cuando las encuentre haber si podemos portarla a bennu
Quote from: Phoenix on July 01, 2009, 10:46:42 AM
y no se puede solucionar? :-[
q clase de pregunta es esa? por supuesto que tiene solucion... ;)
Quote from: syous on July 01, 2009, 10:58:48 AM
:D yo uso esta libreria para fenix y tal no se si estaran las fuentes cuando las encuentre haber si podemos portarla a bennu
gracias.
EDIT: Acabo de ver que esta en pascal... no vale la pena portar eso... hay que hacer un wrap nuevo.
las librerias incluidas en el bennupack son desarrolladas en codigo c/c++
en la mayoria de casos portable...
aqui esta la misma dll que esta en el bennupack
http://www.megaupload.com/?d=HB19T3ZK
comparte el codigo fuente prg y la base de datos que estas usando todo
en un zip, y lo miraremos con gusto...
;D
Yo te pasaria todo el codigo con mucho gusto.. pero son demasiadas lineas y sería complicado explicar todo... Buscaré un ejemplo sencillo en el que se de este error y lo postearé... Lo que si diré que es bastante extraño... hice la misma operación en la aplicacion que estoy programando que en otra muy corta de prueba... en la de prueba de 50 lineas funciona bien y en la otra error del String Allocated este :( .
Quote from: Phoenix on June 29, 2009, 08:54:16 AM
SQLITE3_EXEC(db,"INSERT INTO NombresDeJugadores VALUES("'+NombreJugador+"')");
No tengo mucha idea, pero no sera en este caso el orden de las comillas marcadas en rojo?
Quote from: gukan on July 03, 2009, 08:50:42 AM
Quote from: Phoenix on June 29, 2009, 08:54:16 AM
SQLITE3_EXEC(db,"INSERT INTO NombresDeJugadores VALUES("'+NombreJugador+"')");
No tengo mucha idea, pero no sera en este caso el orden de las comillas marcadas en rojo?
Si bueno, en ese ejemplo las comillas estan mal puestas, pero ese no es el error. Gracias de todas formas.
bueno una prueba seria que colocaras el insert dentro de un
bucle infinito hasta que presiones escape..
a ver si es el error...
porque estuve mirando y no encontre el error
Hola. Estoy intentando rehacer la libreria de Sqlite al nuevo formato de módulos de Bennu (y así de paso compilarla para Linux).
Ya he conseguido compilarla, y ejecutando el moddesc, lo hace bien. Sin embargo, aunque dicha librería la copie en la carpeta de los módulos de Bennu, me da un error de "undefined function" para cualquier función de las que tengo definidas en la librería.
Curiosamente, con la estructura que exporto no pasa eso: la reconoce correctamente.
Os paso adjunto el código fuente de la librería tal como la tengo ahora, por si alguien sabe ver a simple vista algún error tonto que cometo al exportar las funciones. Y un código prg de ejemplo (el que viene en el BennuPack) para probarla, que es el que me da el error que comento. Para probarlo se necesita tener el código fuente de sqlite (un archivo c y un par .h que viene en el BennuPack) y también haber compilado previamente éste para tener también su dll correspondiente. No os lo paso porque no me cabe en el tamañao máximo de adjuntos.
Si alguien me puede decir si he cometido algún error...¡Ya casi estoy!
Muchas graaacias.
1) No se necesita mod_strings...
2) los nombres de las funciones deben ir en mayusculas en la declaracion...
funciona a la perfeccion, adjunto link a proyecto con configure+make.
muy buen trabajo!
http://betatester.bennugd.org/snapshot/contrib/sqlite3.tar.gz
Ahi veo otro error...
la estructura global tiene 4 elementos en el C y 3 en el struct... eso provoca cuelgues...
por otro lado, el sistema de dlls de bennu ya soporta definicion de types...
"types_def"
Guauu!!! Qué honor!!! Incluir la librería en el directorio de contribs!!! Muchas gracias!!!
De todas maneras, mi felicidad aún no es completa.He cogido el código que has arreglado tu, y en Windows, en intentar ejecutar test01.prg me salta un error diciendo "undefinied identifier: rows" . Rows es un campo del TYPE SqlResult. Mmm. Y en Linux (ansiado momento!), tampoco he podido probar nada porque ningún prg me encuentra mod_sqlite3.so cuando hago un import (ni moddesc tampoco). He probado de añadir la ruta /usr/lib/bgd/module a LD_LIBRARY_PATH y nada. He probado de hacer un link en la misma carpeta a la librería con el nombre de libmod_sqlite3.so y tampoco...no sé qué hacer ya.
Por otro lado, aquí os dejo por si a alguien le interesa un zip con: el código fuente del módulo sqlite3 tal como lo ha arreglado Splinter, junto con su correspondiente compilación para Windows (dll) y para Linux 32bits (so). Además, os paso el código fuente de la api c oficial del Sqlite original (que viene con licencia libre total de uso, y que es necesaria lógicamente para que el módulo funcione), junto con su correspondiente compilación para Windows (dll) y para Linux 32bits (so). Y finalmente, un par de códigos de ejemplo, test01.prg y test02.prg, cogidos directamente del BennuPack.
http://rapidshare.com/files/252378832/SQLite3.zip.html
Venga, hasta luego!
tenes que compilar la version de bennu nueva, la del svn.
por otro lado, desconozco porque no tiene referencias a la libsqlite3.so, y por que esta usando la libc++, como lo compilaste?
no usaste los configure que hice?
::) Al final me di cuenta que lo que daba el error era un Write_string(~) que no me acuerdo lo que imprimia , pero salia el Asertion Failed al llamar al proceso.
Gracias por la libreria l1nk3rn3l :)
SplinterGU, el mod esta solo para linux?
si te referis a lo que yo hice, yo lo compile para linux, pero podes compilarlo con el mismo paquete para windows.
simplemente genial, ardo en deseos de probarlo, gracias osk.
Ya que has aprendido ha hacer módulos bennu, espero que sea el comienzo de una era de aparición de nuevos módulos osk útiles :).
Otro de tantos hilos que me pierdo...
Para hacer una BD que incluya personaje + arma + hechizo y poder generar "combinaciones" puede ser interesante... Es lo primero que se me ocurre.
Lo probaré, ya lo creo que lo probaré... ;D
Gracias, es un pedazo de aporte tener SQL en Bennu, al final va a terminar siendo el mejor lenguaje del mundo, llevo 1 año prácticamente usando sólo Bennu para todo :P
Gracias DCelso!!
Bueno, la intención inicial era aprender yo para ponerlo por escrito y así hacer que todo el mundo tuviera paso a paso una guía de cómo hacer módulos. En verdad no es tan difícil, pero sin ninguna documentación de por medio te vas dando trompazos cada dos por tres hasta que al final pillas cómo va más o menos.
Pero no descarto hacer algún módulo de las cosas que creo que le faltan aún a Bennu...tal vez un módulo para conectar con MySQL, o bien un módulo multimedia (tomando como base el de Gstreamer de Josebita) pero con posibilidades de vídeo, o también un módulo para el manejo del wiimote...No sé, lo que se vaya viendo.
Quote from: osk on July 12, 2009, 06:22:19 PM
Gracias DCelso!!
Bueno, la intención inicial era aprender yo para ponerlo por escrito y así hacer que todo el mundo tuviera paso a paso una guía de cómo hacer módulos. En verdad no es tan difícil, pero sin ninguna documentación de por medio te vas dando trompazos cada dos por tres hasta que al final pillas cómo va más o menos.
Pero no descarto hacer algún módulo de las cosas que creo que le faltan aún a Bennu...tal vez un módulo para conectar con MySQL, o bien un módulo multimedia (tomando como base el de Gstreamer de Josebita) pero con posibilidades de vídeo, o también un módulo para el manejo del wiimote...No sé, lo que se vaya viendo.
;D haces uno para Mysql y eres dios y te hago un monumento es lo unico que me falta para dejar Fenix para el proyecto
recomiendo hacer un modulo con opendbx, que es una capa de abstraccion de base de datos, con lo que con un mismo codigo podemos acceder a diferentes motores de base de datos, sin cambiar una sola linea de codigo... actualmente soporta...
* Firebird
* Interbase
* MS SQL Server
* MySQL
* Oracle
* ODBC
* PostgreSQL
* SQLite 2 and 3
* Sybase ASE
http://www.linuxnetworks.de/doc/index.php/OpenDBX
http://www.linuxnetworks.de/doc/index.php/OpenDBX/Support
Ei, parece muy interesante!!
Y no demasiado complicado.
Me lo voy a mirar a ver qué tal.
Gracias!!
Quote from: osk on July 12, 2009, 10:56:23 PM
Ei, parece muy interesante!!
Y no demasiado complicado.
Me lo voy a mirar a ver qué tal.
Gracias!!
te hago un monumento ;D
de nada... yo lo use... y es muy simple...
incluso se pueden armar backends para agregar mas soportes a base de datos si hace falta.
joder , no lo conocia, ya tengo el port listo de opendbx ,
ya lo integre(una funcion nomas)
solo bastara agregar las restantes, pronto la publicare,
la opendbx en bennu
Jolín, qué rápido!!!
KARMAAAA!!!!
mas que excelente!
;D
una version preliminar con varios bugs pero funcional..
http://www.megaupload.com/?d=K7BGWPIE
...
muy bien... un karma!
La he probado, pero sólo me ha funcionado el 2º ejemplo... He mirado el código por encima (Del 2º ejemplo) y la verdad es que parece bastante fácil de usar, es SQL de toda la vida xD
Por cierto, veo que son DLL así que sólo he podido usarlo en Windows. No se me ocurre ninguna utilidad todavía pero si se me ocurre para alguno de mis juegos lo usaré :P
Windgate, es que cada ejemplo necesita del servidor correspondiente
para funcionar..
el unico que no necesita es el ejemplo del sqlite3, ya que el no es un servidor como tal,,
aqui la nueva version...
http://rapidshare.com/files/258798254/OpenDBX.rar.html
http://www.megaupload.com/?d=KEOXLITH
he ahi una version ya corregida y bastante funcional con los fuentes
para el que quiera usarla, por lo que veo esto es una libreria
muy funcional pero muy compleja para usarla en videojuegos
seria mas util para proyectos universitarios o empresariales,,
para juegos recomiendo la otra dll, que es la sqlite3 que alguien ya porto a linux,
mas funcional y mas portable a consolas..
no siendo mas la dejo ahi para que alguien la mejore o la porte a linux, etc , etc.
no la tocare mas...
se me olvido comentar que bennu tiene un posible error con las strings
incluido en uno de los ejemplos del opendbx , hay esta comentado..
creo que es:
string k="";
k+=resultado("cxxx");
y otro error que vi en el bennu3d es cuando inicializas un tipo definido
type hola
float x,y,z;
end;
type hola2
int cc;
hola k;
int i;
hola k2;
int u,o;
end;
global
hola2 LLLp= 1,
2,3,4,
6,
7,8,9,
0,1;
cuando imprimes los valores algunos valen cero
voy a traer el ejemplo bien para estos structs para que lo mires
gracias...
mira aqui esta el ejemplo:
type _Pos3D //posicion 3d
float x, y, z;
end;
type _PhyModel //modelo fisico
float mass;
int model;
int typemodel;
int AutoUpdateDim;
_Pos3D Box;
float radius;
end;
PhyModel hh=
0,
1,
2,
3,
4,5,6,
7 ;
se me olvido especificar que el error de strings es cuando lo colocas en un bucle:
for ....
k+="cxxx";
end;
el resultado no es bien...
como siempre, ejemplos completos...
con respecto a que muestra cero, es que supongo que esta haciendo la conversion de int a float, deberias poner 0.0, 5.0, etc... creo que es asi.
En cuanto a lo de las cadenas, "sumando" caracteres en un bucle: ¿El error se produce nada más empezar o una vez transcurridas unas iteraciones?
Al ritmo que puede llegar a ejecutarse quizá estés construyendo una monstruosa cadena... Aunque el límite debería ser altísimo eso sí. ¿Sólo pasa en Bennu3d?
Personalmente nunca había probado a forzar el límite de tamaño de una string :P