hello guys this a simple tutorial that will give you the list of SQL servers available on your lan . ok lets begin making this just open c# and make a new project and name it whatever and after form finished loading add a button and change the text to refresh and add combobox and at last add a label to make the ui beautiful now add a class and name it getsql.cs
ok now you will see the class in the side bar ok now go to getsql.cs and add this codes
now check if your form have this look to make it look good
now double click your form and add this codes:
now all done its time to test the application when you run the program if you get a message like this
you dont have any SQL servers on your lan
ok now you will see the class in the side bar ok now go to getsql.cs and add this codes
using System; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; //Author : Mohamed Shimran //Blog : http://www.ultimateprogrammingtutorials.blogspot.com namespace DBGrep { public class SqlLocator { [DllImport("odbc32.dll")] private static extern short SQLAllocHandle(short hType, IntPtr inputHandle, out IntPtr outputHandle); [DllImport("odbc32.dll")] private static extern short SQLSetEnvAttr(IntPtr henv, int attribute, IntPtr valuePtr, int strLength); [DllImport("odbc32.dll")] private static extern short SQLFreeHandle(short hType, IntPtr handle); [DllImport("odbc32.dll",CharSet=CharSet.Ansi)] private static extern short SQLBrowseConnect(IntPtr hconn, StringBuilder inString, short inStringLength, StringBuilder outString, short outStringLength, out short outLengthNeeded); private const short SQL_HANDLE_ENV = 1; private const short SQL_HANDLE_DBC = 2; private const int SQL_ATTR_ODBC_VERSION = 200; private const int SQL_OV_ODBC3 = 3; private const short SQL_SUCCESS = 0; private const short SQL_NEED_DATA = 99; private const short DEFAULT_RESULT_SIZE = 1024; private const string SQL_DRIVER_STR = "DRIVER=SQL SERVER"; private SqlLocator(){} public static string[] GetServers() { string[] retval = null; string txt = string.Empty; IntPtr henv = IntPtr.Zero; IntPtr hconn = IntPtr.Zero; StringBuilder inString = new StringBuilder(SQL_DRIVER_STR); StringBuilder outString = new StringBuilder(DEFAULT_RESULT_SIZE); short inStringLength = (short) inString.Length; short lenNeeded = 0; try { if (SQL_SUCCESS == SQLAllocHandle(SQL_HANDLE_ENV, henv, out henv)) { if (SQL_SUCCESS == SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(IntPtr)SQL_OV_ODBC3,0)) { if (SQL_SUCCESS == SQLAllocHandle(SQL_HANDLE_DBC, henv, out hconn)) { if (SQL_NEED_DATA == SQLBrowseConnect(hconn, inString, inStringLength, outString, DEFAULT_RESULT_SIZE, out lenNeeded)) { if (DEFAULT_RESULT_SIZE < lenNeeded) { outString.Capacity = lenNeeded; if (SQL_NEED_DATA != SQLBrowseConnect(hconn, inString, inStringLength, outString, lenNeeded,out lenNeeded)) { throw new ApplicationException("Unabled to aquire SQL Servers from ODBC driver."); } } txt = outString.ToString(); int start = txt.IndexOf("{") + 1; int len = txt.IndexOf("}") - start; if ((start > 0) && (len > 0)) { txt = txt.Substring(start,len); } else { txt = string.Empty; } } } } } } catch (Exception ex) { //Throw away any error if we are not in debug mode #if (DEBUG) MessageBox.Show(ex.Message,"Acquire SQL Servier List Error"); #endif txt = string.Empty; } finally { if (hconn != IntPtr.Zero) { SQLFreeHandle(SQL_HANDLE_DBC,hconn); } if (henv != IntPtr.Zero) { SQLFreeHandle(SQL_HANDLE_ENV,hconn); } } if (txt.Length > 0) { retval = txt.Split(",".ToCharArray()); } return retval; } } }
now check if your form have this look to make it look good
now double click your form and add this codes:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; //Author : Mohamed Shimran //Blog : http://www.ultimateprogrammingtutorials.blogspot.com
namespace GetSQLInstance { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { button1_Click(sender, e); } private void button1_Click(object sender, EventArgs e) { string[] theAvailableSqlServers = DBGrep.SqlLocator.GetServers(); if (theAvailableSqlServers != null) { comboBox1.DataSource = theAvailableSqlServers; } else { MessageBox.Show("No SQL servers found."); } } } }
now all done its time to test the application when you run the program if you get a message like this
you dont have any SQL servers on your lan
Post a Comment
Note: Only a member of this blog may post a comment.