string coon_string = @“Driver={OceanBase ODBC 2.0 Driver};Dsn=OceanbaseC#;uid=YMS@obpoc#obdemo;password=xxx”
上面无需在ODBC管理器界面创建数据源(因为已经指明了Driver和连接,但是驱动还是要安装的),下面的可以动态创建DSN
using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Odbc;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//Process install = new Process();
//ProcessStartInfo processStart = new ProcessStartInfo();
processStart.WorkingDirectory = @"D:\ESPT_Release\";
//processStart.Arguments = @"/i D:\ESPT_Release\ob-connector-odbc-2.0.8.2-win32.msi /q";
//processStart.FileName = "msiexec";
processStart.Verb = "runas";
//install.StartInfo = processStart;
//install.Start();
//install.WaitForExit();
string ODBC_PATH = "SOFTWARE\\ODBC\\ODBC.INI\\";
string driverName = "OceanBase ODBC 2.0 Driver";
string dsnName = "OceanbaseC#";
string database = "aaa";
string description = "This DSN was created from code!";
string server = "10.00.0.1";
string port = "2883";
bool trustedConnection = true;
// Lookup driver path from driver name //C:\\Program Files (x86)\\OceanBase\\OceanBase ODBC Driver\\obodbc.dll
string driverPath = "OceanBase ODBC 2.0 Driver";
//如果是用户DSN ,用Registry.CurrentUser.CreateSubKey
var datasourcesKey = Registry.LocalMachine.CreateSubKey(ODBC_PATH + "ODBC Data Sources");
if (datasourcesKey == null)
{
throw new Exception("ODBC Registry key 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_PATH + dsnName);
if (dsnKey == null)
{
throw new Exception("ODBC Registry key for DSN was not created");
}
dsnKey.SetValue("Database", database);
dsnKey.SetValue("Description", description);
dsnKey.SetValue("Driver", driverPath);
dsnKey.SetValue("TCPIP", 1);
//dsnKey.SetValue("LastUser", "YMS");
dsnKey.SetValue("Server", server);
dsnKey.SetValue("Port", port);
dsnKey.SetValue("Database", database);
//dsnKey.SetValue("user name", "YMS@obpoc#obdemo");
dsnKey.SetValue("UID", "aaa@obpoc#obdemo");
//dsnKey.SetValue("user name", "YMS@obpoc#obdemo");
dsnKey.SetValue("password", "bbb");
dsnKey.SetValue("QUERYTIMEOUT", "10800");
dsnKey.SetValue("READTIMEOUT", "3600");
dsnKey.SetValue("WRITETIMEOUT", "3600");
dsnKey.SetValue("Trusted_Connection", trustedConnection ? "Yes" : "No");
//DataTable dt = new DataTable();
//string dns = "Dsn=OceanbaseC#;uid=YMS@obpoc#obdemo";
//string sql = @"SELECT * from ESPT_ACE_BIN_GROUP where rownum < 10";
//OdbcConnection conn = new OdbcConnection(dns);
OdbcCommand cmd = new OdbcCommand(sql, conn);
//conn.Open();
//OdbcDataAdapter adapter = new OdbcDataAdapter(sql, conn);
//adapter.Fill(dt);
//this.dataGridView1.DataSource = dt;
//this.dataGridView1.Show();
}
}
}