c#连接Sql Servser、MySql、Oracle数据库

连接SQLServer

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Oracle.ManagedDataAccess.Client;
using Oracle.ManagedDataAccess.Types;
using System.Data;
using System.Windows;
using System.Data.SqlClient;


namespace TankFieldManagementSystem_SubApp
{
    class OracleHelper2
    {
        private static OracleHelper2 m_Instance;
        public static OracleHelper2 GetInstance()
        {
            if (null == m_Instance)
            {
                m_Instance = new OracleHelper2();


            }
            return m_Instance;
        }
        // private static string m_XmlFilePath = "ServerConfig1.xml";
        private string connectionString;
        private SqlConnection conn;
        private SqlCommand cmd;
        private SqlDataAdapter adapter;
        //private SqlDataReader reader;
        private DataSet ds;
        public void ConnSqlServer()
        {
            try
            {
                connectionString = "server=192.168.1.112;uid=TEST;pwd=boguangadmin; database=database3";
                conn = new SqlConnection(connectionString);
                conn.Open();
            }
            catch (OracleException e)
            {
                throw new Exception(e.Message);
            }
        }


        public DataSet ExecuteQuery1(string sql)
        {
            try
            {
                ConnSqlServer();
                ds = new DataSet();
                cmd = new SqlCommand(sql, conn);
                adapter = new SqlDataAdapter(cmd);              
                adapter.Fill(ds);
                conn.Close();
                cmd.Dispose();
                return ds;
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
                return null;
            }


        }


    }

}

连接Mysql

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Oracle.ManagedDataAccess.Client;
using Oracle.ManagedDataAccess.Types;
using System.Data;
using System.Windows;
using MySql.Data.MySqlClient;


namespace TankFieldManagementSystem_SubApp
{
    public class OracleHelper1
    {
        private static OracleHelper1 m_Instance;
        public static OracleHelper1 GetInstance()
        {
            if (null == m_Instance)
            {
                m_Instance = new OracleHelper1();


            }
            return m_Instance;
        }
       // private static string m_XmlFilePath = "ServerConfig1.xml";
        private MySqlConnection con;
        public void ConnMySql()
        {
            try
            {
                /* string ip = XmlHelper.Read(m_XmlFilePath, "ServerConfig/IP", "");
                 string port = XmlHelper.Read(m_XmlFilePath, "ServerConfig/Port", "");
                 string serverName = XmlHelper.Read(m_XmlFilePath, "ServerConfig/ServerName", "");
                 string userName = XmlHelper.Read(m_XmlFilePath, "ServerConfig/UserName", "");
                 string password = XmlHelper.Read(m_XmlFilePath, "ServerConfig/Password", "");
                 string connStr = "User Id=" + userName + ";Password=" + password + ";Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=" + ip + ")(PORT=" + port + ")))(CONNECT_DATA=(SERVICE_NAME=" + serverName + ")))";*/
                string connStr = "Database=Database2;Data Source=192.168.1.112;User Id=root;" + "Password=123;pooling=false;CharSet=utf8;port=3306";
                con = new MySqlConnection(connStr);
                con.Open();
            }
            catch (OracleException e)
            {
                throw new Exception(e.Message);
            }
        }
     
        public DataSet ExecuteQuery1(string sql)
        {
            try
            {
                ConnMySql();
                DataSet ds = new DataSet();
                MySqlCommand cmd = new MySqlCommand(sql, con);
                MySqlDataAdapter oda = new MySqlDataAdapter(cmd);
                oda.Fill(ds);
                con.Close();
                cmd.Dispose();
                return ds;
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
                return null;
            }


        }
       
    }

}

连接Oracle

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Oracle.ManagedDataAccess.Client;
using Oracle.ManagedDataAccess.Types;
using System.Data;
using System.Windows;


namespace TankFieldManagementSystem_SubApp
{
    public class OracleHelper
    {
        private static OracleHelper m_Instance;
        public static OracleHelper GetInstance() {
            if (null == m_Instance) {
                m_Instance = new OracleHelper();


            }
            return m_Instance;
        }
        private static string m_XmlFilePath = "ServerConfig.xml";
        private OracleConnection conn;
        public void  ConnOracle() {
            try
            {
                string ip = XmlHelper.Read(m_XmlFilePath, "ServerConfig/IP", "");
                string port = XmlHelper.Read(m_XmlFilePath, "ServerConfig/Port", "");
                string serverName = XmlHelper.Read(m_XmlFilePath, "ServerConfig/ServerName", "");
                string userName = XmlHelper.Read(m_XmlFilePath, "ServerConfig/UserName", "");
                string password = XmlHelper.Read(m_XmlFilePath, "ServerConfig/Password", "");
                string connStr = "User Id=" + userName + ";Password=" + password + ";Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=" + ip + ")(PORT=" + port + ")))(CONNECT_DATA=(SERVICE_NAME=" + serverName + ")))";
                conn = new OracleConnection(connStr);
                conn.Open();
            }
            catch (OracleException e) {
                throw new Exception(e.Message);
            }
        }


        public int ExecuteNonQuery(string sql)
        {
            try
            {
                ConnOracle();
                OracleCommand cmd = new OracleCommand(sql, conn);
                int result = cmd.ExecuteNonQuery();
                conn.Close();
                cmd.Dispose();
                return result;
            }
            catch (Exception e) {
                MessageBox.Show(e.Message);
                return 0;
            }
        }


        public int ExecuteNonQuery(string sql, OracleParameter parameter) {
            try { 
                ConnOracle();
                OracleCommand cmd = new OracleCommand(sql, conn);
                cmd.Parameters.Add(parameter);
                int result = cmd.ExecuteNonQuery();
                conn.Close();
                cmd.Dispose();
                return result;
            }
            catch (Exception e) {
                MessageBox.Show(e.Message);
                return 0;
            }
}


        public DataSet ExecuteQuery(string sql)
        {
            try
            {
                ConnOracle();
                DataSet ds = new DataSet();
                OracleCommand cmd = new OracleCommand(sql, conn);
                OracleDataAdapter oda = new OracleDataAdapter(cmd);
                oda.Fill(ds);
                conn.Close();
                cmd.Dispose();
                return ds;
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
                return null;
            }
            
        }
        public DataSet ExecuteQuery(string sql, OracleParameter parameter)
        {
            try
            {
                ConnOracle();
                DataSet ds = new DataSet();
                OracleCommand cmd = new OracleCommand(sql, conn);
                cmd.Parameters.Add(parameter);
                OracleDataAdapter oda = new OracleDataAdapter(cmd);
                oda.Fill(ds);
                conn.Close();
                cmd.Dispose();
                return ds;
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
                return null;
            }
            
        }
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现从SQL Server同步数据到Kafka并确保数据不重复需要考虑以下几个步骤: 1. 在SQL Server表中添加一个增量字段,例如一个自增ID或者一个时间戳字段。这个字段用来记录每次同步任务执行时的最大值。 2. 在同步任务中,记录上一次同步任务执行时的最大增量字段值。 3. 使用Java代码连接SQL Server数据库,并编写SQL查询语句,根据上一次同步任务的最大增量字段值查询大于该值的数据。 4. 将查询到的数据发送到Kafka中。 5. 在每次同步任务执行完成后,更新记录的最大增量字段值。 下面是一个简单的示例代码,以使用JDBC连接SQL Server数据库和使用Kafka客户端库为例: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.util.Properties; import org.apache.kafka.clients.producer.KafkaProducer; import org.apache.kafka.clients.producer.ProducerRecord; public class DataSyncJob { private static final String SQL_SERVER_URL = "jdbc:sqlserver://localhost:1433;databaseName=your_database"; private static final String SQL_SERVER_USERNAME = "your_username"; private static final String SQL_SERVER_PASSWORD = "your_password"; private static final String KAFKA_TOPIC = "your_topic"; private static final String KAFKA_BOOTSTRAP_SERVERS = "localhost:9092"; private static final String INCREMENTAL_FIELD = "id"; // 替换为你的增量字段名 public static void main(String[] args) { try (Connection connection = DriverManager.getConnection(SQL_SERVER_URL, SQL_SERVER_USERNAME, SQL_SERVER_PASSWORD); Statement statement = connection.createStatement(); KafkaProducer<String, String> kafkaProducer = createKafkaProducer()) { // 查询上次同步任务的最大增量字段值 int lastMaxValue = getLastMaxValueFromDB(); // 查询大于上次最大增量字段值的数据 String query = "SELECT * FROM your_table WHERE " + INCREMENTAL_FIELD + " > " + lastMaxValue; try (ResultSet resultSet = statement.executeQuery(query)) { while (resultSet.next()) { // 获取数据并发送到Kafka int id = resultSet.getInt("id"); // 替换为你的字段名 String data = resultSet.getString("data"); // 替换为你的字段名 kafkaProducer.send(new ProducerRecord<>(KAFKA_TOPIC, Integer.toString(id), data)); } } // 更新最新的增量字段值 int currentMaxValue = getCurrentMaxValueFromDB(); updateLastMaxValueInDB(currentMaxValue); } catch (Exception e) { e.printStackTrace(); } } private static KafkaProducer<String, String> createKafkaProducer() { Properties properties = new Properties(); properties.put("bootstrap.servers", KAFKA_BOOTSTRAP_SERVERS); properties.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); properties.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); return new KafkaProducer<>(properties); } private static int getLastMaxValueFromDB() { // 从数据库中获取上次同步任务的最大增量字段值 // 返回该值,如果没有记录则返回0或者一个合适的初始值 // 例如:return 0; } private static int getCurrentMaxValueFromDB() { // 从数据库中获取当前的最大增量字段值 // 返回该值 } private static void updateLastMaxValueInDB(int maxValue) { // 更新数据库中记录的最大增量字段值 } } ``` 请根据实际情况替换代码中的数据库连接信息、表名、字段名、Kafka主题和引入Kafka客户端库的方式。这只是一个简单示例,你可能需要根据自己的具体需求进行适当修改和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值