C# 创建Oceanbase ODBC数据源 DSN

需要管理员权限打开VS,因为只有管理员权限可以修改注册表

csharp 复制代码
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";

            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();





        }
    }
}
相关推荐
CappuccinoRose8 分钟前
Rust学习文档(二)
开发语言·后端·学习·rust
草莓熊Lotso8 分钟前
【LangChain】核心组件详解:文档加载器(Document Loaders)
开发语言·c++·python·langchain·软件工程
kingwebo'sZone13 分钟前
C#事件声明办法
java·前端·c#
你怎么知道我是队长1 小时前
JavaScript的自适应效果
开发语言·javascript·ecmascript
mayaairi1 小时前
JS数组完全指南(含十大操作详解)
开发语言·前端·javascript
j7~1 小时前
【数据结构初阶】队列的实现(链式队列 + 循环队列)--详解
c语言·开发语言·数据结构·学习·队列·queue·c\c++
king_linlin2 小时前
算法基础——算法复杂度
c语言·开发语言·数据结构·算法
二十雨辰2 小时前
[爬虫]-解析
开发语言·python
zzq77972 小时前
Android 16 API 36 升级后 APP 加固兼容性问题解析
android·开发语言·安全·kotlin·安卓·安全架构
keyipatience2 小时前
日志和线程池
java·开发语言