private void button1_Click(object sender, EventArgs e) { try { //OdbcConnection conn = new OdbcConnection(); //conn.ConnectionString = // "ODBC;" + // "Driver={Sybase SQL Anywhere 5.0};" + // "DefaultDir=c:myfolder;" + // "Dbf=c:mypathdbname.db;" + // "Uid=UserName;" + // "Pwd=Secret;" + // "Dsn="""";"; // Must be included! //conn.Open(); geovindu connectionString = "DSN=geovindu;UID=dba;PWD=sql;"; //Data Source=sademo using (OdbcConnection connection = new OdbcConnection(connectionString)) { connection.Open(); DataTable dt = new DataTable();// connection.GetSchema(); DataSet ds = new DataSet(); OdbcDataAdapter da = new OdbcDataAdapter("SELECT * FROM employee", connection); da.Fill(ds); dt = ds.Tables[0]; // Do work here. this.dataGridView1.DataSource = dt; } } catch (OdbcException ex) { MessageBox.Show(ex.Message.ToString()); } }
讀取數据如下:
http://www.dofactory.com/reference/connection-strings
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using Microsoft.Win32; using System.Data.Odbc; using System.Data.SqlClient; /* https://msdn.microsoft.com/en-us/library/system.data.odbc.odbcconnection.connectionstring%28v=vs.110%29.aspx * * "Driver={SQL Server};Server=(local);Trusted_Connection=Yes;Database=AdventureWorks;" "Driver={Microsoft ODBC for Oracle};Server=ORACLE8i7;Persist Security Info=False;Trusted_Connection=Yes" "Driver={Microsoft Access Driver (*.mdb)};DBQ=c:inNorthwind.mdb" "Driver={Microsoft Excel Driver (*.xls)};DBQ=c:inook1.xls" "Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=c:in" "DSN=dsnname" * DSN类型有以下三种: 用户DSN:该数据源只能对建立数据源的用户可见. ODBC用户数据源存贮了如何与指定数据库提供者连接的信息.只对当前用户可见,而且只能用于当前机器上.这里的当前机器是只这个配置只对当前的机器有效,而不是说只能配置本机上的数据库.它可以配置局域网中另一台机器上的数据库. 系统DSN:该数据源对当前机器上所有的用户可见. ODBC系统数据源存贮了如何指定数据库提供者连接的信息,系统数据对当前机器上的所有用户都是可见的,包括NT服务.也就是说在这里配置的数据源,只要是这台机器的用户都可以访问 . 文件DSN:该数据源对安装了相同驱动的用户可见 用户DSN只被用户直接使用,它只能用于当前机器中,ASP不能使用它.系统DSN允许所有的用户登陆到特定服务器上去访问数据库,任何具有权限有用户都可以访问系统DSN.在WEB应用程序中访问数据库时,通常都是建立系统DSN. 文件DSN将信息存储在后缀为.dsn的文本文件中,优点是便于移动. 用户DSN只是针对当前用户或者特定用户;系统DSN是底层的,针对全部用户。一般没有特殊情况时,建议使用使用系统DSN,通用性好。 */ namespace SQLanyWhereDemo { /// <summary> /// 塗聚文 涂聚文 /// </summary> public partial class Form4 : Form { RegistryKey regRootKey; RegistryKey regSubKey; /// <summary> /// /// </summary> public Form4() { InitializeComponent(); } /// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Form4_Load(object sender, EventArgs e) { List<string> dsnList = new List<string>(); ///定义Root指向注册表HKEY_LOCAL_MACHINE节点, ///如果是需要获取用户DSN则需要使用 Registry.CurrentUser; regRootKey = Registry.LocalMachine; ///定义注册表子Path string strRegPath = @"SOFTWAREODBCODBC.INIODBC Data Sources"; regSubKey = regRootKey.OpenSubKey(strRegPath); string[] strDSNList = regSubKey.GetValueNames(); foreach (string s in strDSNList) { dsnList.Add(s); } ///关闭 regSubKey.Close(); regRootKey.Close(); this.comboBox1.DataSource = dsnList; } /// <summary> /// is_archive /// is_archive /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button1_Click(object sender, EventArgs e) { try { string conStr = "DSN=LocalServer"; SqlConnection mCn = new SqlConnection(conStr); mCn.Open(); } catch (SqlException ex) { MessageBox.Show(ex.Message.ToString()); } } /// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button2_Click(object sender, EventArgs e) { try { string conStr = "DSN=geovindu";//uid=dba;PWD=geovindu" Driver={Sybase SQL Anywhere 5.0}; OdbcConnection conn = new OdbcConnection(conStr); conn.Open(); //OdbcConnection mCn = new OdbcConnection(); //mCn.ConnectionString = "DSN=" + this.comboBox1.Text.Trim(); //mCn.Open(); } catch (OdbcException ex) { MessageBox.Show(ex.Message.ToString()); } } private const string ODBC_INI_REG_PATH = "SOFTWARE\ODBC\ODBC.INI\"; private const string ODBCINST_INI_REG_PATH = "SOFTWARE\ODBC\ODBCINST.INI\"; /// <summary> /// Creates a new System-DSN entry with the specified values. If the DSN exists, the values are updated. /// </summary> /// <param name="dsnName">Name of the DSN for use by client applications</param> /// <param name="description">Description of the DSN that appears in the ODBC control panel applet</param> /// <param name="server">Network name or IP address of database server</param> /// <param name="driverName">Name of the driver to use</param> /// <param name="trustedConnection">True to use NT authentication, false to require applications to supply username/password in the connection string</param> /// <param name="database">Name of the datbase to connect to</param> public static void CreateDSN2(string dsnName, string description, string server, string driverName, bool trustedConnection, string database, string user, string password, string port) { // Lookup driver path from driver name var driverKey = Registry.LocalMachine.CreateSubKey(ODBCINST_INI_REG_PATH + driverName); if (driverKey == null) throw new Exception(string.Format("ODBC Registry key for driver '{0}' does not exist", driverName)); string driverPath = driverKey.GetValue("Driver").ToString(); // Add value to odbc data sources var datasourcesKey = Registry.LocalMachine.CreateSubKey(ODBC_INI_REG_PATH + "ODBC Data Sources"); if (datasourcesKey == null) throw new Exception("ODBC Registry key for datasources does not exist"); datasourcesKey.SetValue(dsnName, driverName); // Create new key in odbc.ini with dsn name and add values var dsnKey = Registry.LocalMachine.CreateSubKey(ODBC_INI_REG_PATH + dsnName); //MessageBox.Show(dsnKey.ToString()); if (dsnKey == null) throw new Exception("ODBC Registry key for DSN was not created"); dsnKey.SetValue("Data Source", dsnName); dsnKey.SetValue("Database", database); dsnKey.SetValue("Description", description); dsnKey.SetValue("Driver", driverPath); dsnKey.SetValue("Server", server); dsnKey.SetValue("User name", user); dsnKey.SetValue("Password", password); dsnKey.SetValue("Port", port); dsnKey.SetValue("Trusted_Connection", trustedConnection ? "Yes" : "No"); } } }
ARSoft.Tools.Net2.2.dll https://github.com/alexreinert/ARSoft.Tools.Net