PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 18/05/2012 17:55:29

HenriEssomba
Membre

PGconn pour MapBasic

Bonjour à tous,

je travaille sur une personnalisation du SIG (Système d'Information Géographique) MapInfo à partir de MapBasic qui utilise un langage procédural. Ne pouvant pas être facilement configurable sous une architecture client-serveur le choix a été fait de centraliser les donner géographiques à traiter à partir du SGBD PostgreSQL. Seulement dans la gestion des Large Objects j'ai rencontré un problème dès qu'il s'agit d'appliquer le script d'importation et d'exportation chez le client.

La commande d'importation de PostgreSQL par exemple est soumise à la syntaxe suivante: lo_import(PGconn *conn, const char *filename);

Mais le langage utilisé pour MapBasic ne possède pas un type équivalent pour "PGconn" et je n'arrive donc pas à faire exécuter le code MapBasic suivant:

include "mapbasic.def"
include "menu.def"
include "icons.def"

Sub Main

Dim chemin, filename, namecon, path, prompt, filetype As String
Dim num, hstmt As Integer


	path = "C:\TestDirectory\"
	filename = "tableFile"
	filetype = "TAB"
	prompt = "Enregistrer table"
	
	chemin = FileSaveAsDlg(path, filename, filetype, prompt)


'Connexion à la base de données
	num = Server_Connect("ODBC","DSN=con_PostgreSQL1;UID=postgres;PWD=toto")

'Nom de la variable ODBC pour la connexion à la base de données
        namecon = "con_PostgreSQL1";

'Requête d'insertion des données dans la table TABLEUSER avec importation du fichier pour le champ FILETAB
        texterequete= "INSERT INTO public.tableuser (name,filetab) values ('"+filename+"',lo_import('"+namecon+"','"+chemin+"'));"


        hstmt = Server_Execute(num, texterequete)

End Sub 'Main

Le champ "filetab" de la table "tableuser" et de type "oid" mais j'n'ai trouvé aucun moyen d'obtenir pour la fonction "lo_import" un paramètre équivalent à une variable PGconn. Je n'ai pas trouvé de forum MapBasic et sur le forum SIG on me conseille de voir s'il n'y a pas un autre moyen d'importer un Large Object chez un client sur PostgreSQL.

Toute forme d'aide sera d'un grand secours, merci

Hors ligne

#2 18/05/2012 21:25:59

gleu
Administrateur

Re : PGconn pour MapBasic

lo_import ne s'utilise pas à partir d'une requête. C'est une fonction utilisable à partir de la libpq. Il n'existe pas d'autre moyen pour insérer un Large Object. Le mieux pour vous est certainement de basculer vers un bytea.

Hors ligne

#3 23/05/2012 09:36:21

HenriEssomba
Membre

Re : PGconn pour MapBasic

Merci pour votre diligence. J'vais donc voir quelles possibilités je peux avoir avec bytea.

Hors ligne

Pied de page des forums