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





        }
    }
}
相关推荐
楼田莉子19 小时前
Qt开发学习——QtCreator深度介绍/程序运行/开发规范/对象树
开发语言·前端·c++·qt·学习
韩立学长20 小时前
【开题答辩实录分享】以《基于python的奶茶店分布数据分析与可视化》为例进行答辩实录分享
开发语言·python·数据分析
天若有情67320 小时前
C++空值初始化利器:empty.h使用指南
开发语言·c++
远远远远子20 小时前
类与对象 --1
开发语言·c++·算法
无敌最俊朗@20 小时前
C/C++ 关键关键字面试指南 (const, static, volatile, explicit)
c语言·开发语言·c++·面试
2401_8315017320 小时前
Python学习之day03学习(文件和异常)
开发语言·python·学习
酷~20 小时前
C语言模拟面向对象编程方法之多态
c语言·开发语言
hui函数21 小时前
python全栈(基础篇)——day03:后端内容(字符串格式化+简单数据类型转换+进制的转换+运算符+实战演示+每日一题)
开发语言·后端·python·全栈
寻星探路21 小时前
Java EE初阶启程记09---多线程案例(2)
java·开发语言·java-ee
froginwe111 天前
Python 3 输入和输出
开发语言