#mssql #sql-server #listener #broker #tiberius #real-time

tiberius-mssql-broker

MSSQL 实时变更监听器

2 个版本

0.1.3 2023年7月25日
0.1.2 2023年7月25日

#1404 in 数据库接口

Apache-2.0

62KB
1.5K SLoC

Rust 1.5K SLoC // 0.0% comments SQL 222 SLoC

泰伯利乌斯 MSSQL 代理

MSSQL 代理。C# SQLDependencyEx 的重实现。

感谢 deadpool-tiberius 存储库。

示例

代理示例

let mssql = MssqlConnection::establish(&SqlConfig{
    host: ".".to_string(),
    instance: Some("SQLEXPRESS".to_string()),
    port: 1433,
    username: "sa".to_string(),
    password: "julfikar123@".to_string(),
    database: "AED_MOBILE".to_string(),
    trust_cert: true,
    allow_encrypt: true,
    max_pool: 1,
    sql_browser: false,
}).await;
match mssql {
    Ok(conn) => {
        let (sx, rx) = kanal::unbounded::<Vec<ListenEvent>>();
        println!("started listening...");
        tokio::spawn(async move {
            while let Ok(evs) = rx.recv() {
                println!("{} {:?}",evs.len(),evs);
            }
        });
        let broker = conn.listen(1,format!("IV"), sx).await;
        match broker {
            Ok(_) => { }
            Err(err) => {
                println!("{:?}",err);
            }
        }
    }
    Err(err) => {
        println!("{:?}",err);
    }
}

查询示例

let config = SqlConfig {
    host: ".".to_string(),
    instance: Some("SQLEXPRESS".to_string()),
    port: 1433,
    username: "sa".to_string(),
    password: "julfikar123@".to_string(),
    database: "AED_MOBILE".to_string(),
    trust_cert: true,
    allow_encrypt: true,
    max_pool: 1,
    sql_browser: false,
};

let mssql = MssqlConnection::establish(&config).await;
let mut mssql = mssql.unwrap();

let res = mssql.select("SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE';", vec![]).await;
let res: Vec<HashMap<String,Value>> = res.unwrap();

依赖项

~21–32MB
~633K SLoC