🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: chile.comp.programacion
Article #368

Re: Crear DSN con c#

#368
From: Pintamono
Date: Tue, 28 Oct 2008 14:16
117 lines
4715 bytes
Lo solucion� de la siguiente manera:

odbcconf.exe /a {CONFIGSYSDSN "SQL Server" 
"DSN=MiNombreDSN|Description=MiDescripcionDSN|SERVER=MiServidor| 
Trusted_Connection=Yes|Database=MiBaseDDatos"}

eso lo ejecuto en un proceso y paso por parametros las variables MiNombre, 
etc..

El codigo:

private static void ConfigurarOBDC(string psTipo)
		{
// psTipo solo indica cual de las dos conexiones que debo crear es la que 
creare
			string sMensaje="";
			string sParametros ="\"SQL Server\"";
			if (psTipo=="C")
			{
				
				sParametros += " \"DSN="+ ODBCConcentradorName;
				sParametros += "|DESCRIPTION=" + ODBCConcentradorDesc;
				sParametros += "|SERVER="+ODBCConcentradorServ;
				sParametros += "|TRUSTED_CONNECTION=False";
				sParametros += "|DATABASE="+BDCon;
				//sParametros += "|UID="+UserCon;
				//sParametros += "|PWD="+PassCon;
				sMensaje = ODBCConcentradorName;
			}
			if (psTipo=="L")
			{
				sParametros += " \"DSN="+ ODBCLocalName ;
				sParametros += "|DESCRIPTION=" + ODBCLocalDesc;
				sParametros += "|SERVER="+MaquinaLocal+ODBCLocalServ;
				sParametros += "|TRUSTED_CONNECTION=False";
				sParametros += "|DATABASE="+BDLocal;
				//sParametros += "|UID="+ UserLocal;
				//sParametros += "|PWD=" + PassLocal;
				sMensaje = ODBCLocalName;
			}
			sParametros += "\"}";			

			Process myProcess = new Process();
			myProcess.StartInfo.FileName = "odbcconf.exe";
			myProcess.StartInfo.Arguments = @" /a {CONFIGSYSDSN "+ sParametros;
			try
			{
				myProcess.Start();
				myProcess.WaitForExit();
				Console.Write("\nConexion ODBC "+sMensaje+" creada Exitosamente\n");
			}
			catch (Exception ex)
			{
				Console.Write("\nError al crear la conexion ODBC, Error: "+ex.Message);
				return;
			}
			finally
			{
				myProcess.Dispose();
			}
		}

Pintamono wrote:

> Que tal,

> Tengo que crear dos DSN para una aplicacion externa, el problema es que no 
> he logrado hacerlo... he estado toda la ma�ana leyendo y revisando pero no 
> logro nada...

> Lo hago de la siguiente manera:

> En una clase defino estas constantes

> private const string ODBC_INI_DSN_KEY_NAME = "DSN=";
> private const string ODBC_INI_FILE_PREFIX_NAME = "\0File Prefix=";
> private const string ODBC_INI_UID_NAME = "\0Uid=";
> private const string ODBC_INI_PWD_NAME = "\0pwd=";
> private const string ODBC_INI_DBQ_NAME = "\0DBQ=";
> private const string ODBC_INI_ACUODBC_DRIVER = "AcuODBC Driver"; //The 
> Default Driver
> private const string ODBC_INI_READONLY = "\0Read Only=";
> private const string ODBC_INI_SERVER = "\0SERVER=";
> private const string ODBC_INI_DNS_DESC ="\0DESCRIPTION=";

> luego en un metodo le paso los parametros a utilizar

> return SQLConfigDataSource((IntPtr)0, 4, OdbcDriverName,
> 		ODBC_INI_DSN_KEY_NAME + DSName +
> 		ODBC_INI_DNS_DESC + DSNDesc +
> 		ODBC_INI_SERVER + DSNServ +
> 		ODBC_INI_UID_NAME + DBUser +
> 		ODBC_INI_PWD_NAME + DBPass +
> 		ODBC_INI_DBQ_NAME + DBName +
> 		ODBC_INI_READONLY + "FALSE" + "\0");

> esto siempre me devuelve false...

> al importar del API lo hago asi

> [DllImport("ODBCCP32.dll")]
> private static extern bool SQLConfigDataSource(IntPtr parent, int request, 
> string driver, string attributes);

> Es indispensable que le pase un servidor, el nombre de usuario y 
> contrase�a ya que estos DSN apuntaran a distintos servidores...

> Alguna idea de como hacer que funcione?

> O alguna idea de como hacer traza de esto para saber en que falla?

> Les agradecere cualquier ayuda que me permita terminar esto.

> Saludos!

> PD: tiene que ser DSN ya que la aplicacion externa esta desarrollada en 4D 
> y solo se puede conectar a SQL por DSN.
Technical Details
Message-ID: <67985ab75177588c2ab653e07cf22e53$1@usenet.no-ip.com>
Path: arc1-ca.pugleaf.net!g2news2.google.com!news4.google.com!feeder.news-service.com!newsfeed.freenet.de!fu-berlin.de!news.nivel5.cl!not-for-mail
References: <95274da56ff516ad9ec126575d81067c$1@usenet.no-ip.com>

Show Full Headers
Complete Article Headers
X-Google-Thread: 1593cb,7d9a80fa1aa5e602
X-Google-Attributes: gid1593cb,domainid0,public,usenet
X-Google-Language: SPANISH,ASCII
Path: arc1-ca.pugleaf.net!g2news2.google.com!news4.google.com!feeder.news-service.com!newsfeed.freenet.de!fu-berlin.de!news.nivel5.cl!not-for-mail
From: pintamono@NoMandeWeas.kk (Pintamono)
Newsgroups: chile.comp.programacion
Subject: Re: Crear DSN con c#
Date: Tue, 28 Oct 2008 11:16:39 -0300
Organization: Usenet Chile.* http://usenet.no-ip.com
Lines: 119
Message-ID: <67985ab75177588c2ab653e07cf22e53$1@usenet.no-ip.com>
References: <95274da56ff516ad9ec126575d81067c$1@usenet.no-ip.com>
NNTP-Posting-Host: pc-107-194-83-200.cm.vtr.net
Mime-Version: 1.0
X-Trace: news.nivel5.cl 1225203403 23630 200.83.194.107 (28 Oct 2008 14:16:43 GMT)
X-Complaints-To: news@news.nivel5.cl
NNTP-Posting-Date: Tue, 28 Oct 2008 14:16:43 +0000 (UTC)
User-Agent: NewsPortal/0.3X RCL MOD
X-Abuse: robertocl@gmail.com
X-HTTP-Posting-Host: 201.238.209.35