Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>After going through the few less complicated examples available online, this is what i managed to come up with (and it works fine for me).</p> <pre><code>using System; using System.Runtime.InteropServices; public class ODBC_Manager { [DllImport("ODBCCP32.dll")] public static extern bool SQLConfigDataSource(IntPtr parent, int request, string driver, string attributes); [DllImport("ODBCCP32.dll")] public static extern int SQLGetPrivateProfileString(string lpszSection, string lpszEntry, string lpszDefault, string @RetBuffer, int cbRetBuffer, string lpszFilename); private const short ODBC_ADD_DSN = 1; private const short ODBC_CONFIG_DSN = 2; private const short ODBC_REMOVE_DSN = 3; private const short ODBC_ADD_SYS_DSN = 4; private const short ODBC_CONFIG_SYS_DSN = 5; private const short ODBC_REMOVE_SYS_DSN = 6; private const int vbAPINull = 0; public void CreateDSN(string strDSNName) { string strDriver; string strAttributes; try { string strDSN = ""; string _server = //ip address of the server string _user = //username string _pass = //password string _description = //not required. give a description if you want to strDriver = "iSeries Access ODBC Driver"; strAttributes = "DSN=" + strDSNName + "\0"; strAttributes += "SYSTEM=" + _server + "\0"; strAttributes += "UID=" + _user + "\0"; strAttributes += "PWD=" + _pass + "\0"; strDSN = strDSN + "System = " + _server + "\n"; strDSN = strDSN + "Description = " + _description + "\n"; if (SQLConfigDataSource((IntPtr)vbAPINull, ODBC_ADD_SYS_DSN, strDriver, strAttributes)) { Console.WriteLine("DSN was created successfully"); } else { Console.WriteLine("DSN creation failed..."); } } catch (Exception ex) { if (ex.InnerException != null) { Console.WriteLine(ex.InnerException.ToString()); } else { Console.WriteLine(ex.Message.ToString()); } } } public int CheckForDSN(string strDSNName) { int iData; string strRetBuff = ""; iData = SQLGetPrivateProfileString("ODBC Data Sources", strDSNName, "", strRetBuff, 200, "odbc.ini"); return iData; } } </code></pre> <p>... and then call the methods from your application.</p> <pre><code>static void Main(string[] args) { ODBC_Manager odbc = new ODBC_Manager(); string dsnName = //Name of the DSN connection here if (odbc.CheckForDSN(dsnName) &gt; 0) { Console.WriteLine("\n\nODBC Connection " + dsnName + " already exists on the system"); } else { Console.WriteLine("\n\nODBC Connection " + dsnName + " does not exist on the system"); Console.WriteLine("\n\nPress 'Y' to create the connection?"); string cont = Console.ReadLine(); if (cont == "Y" || cont == "y") { odbc.CreateDSN(dsnName); Environment.Exit(1); } else { Environment.Exit(1); } } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload