You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
use dameng::Client;letmut client = Client::new("127.0.0.1",5236);
client.connect("SYSDBA","SYSDBA")?;
基础查询
let rs = client.query("SELECT ID, NAME, ADDRESS FROM PERSON")?;for row in rs.iter(){let id:i32 = row.get(0)?;let name:&str = row.get(1)?;let address:Option<&str> = row.get(2)?;println!("ID={}, NAME={}, ADDRESS={:?}", id, name, address);}
参数化查询(SQLx 风格)
let id:i32 = 1;let name:&str = "Alice";let rs = client.query_with_params("SELECT * FROM PERSON WHERE ID = ? AND NAME = ?",&[&id,&name],)?;
DML 操作(INSERT / UPDATE / DELETE)
let affected = client.execute_with_params("INSERT INTO PERSON (ID, NAME, AGE) VALUES (?, ?, ?)",&[&1,&"Alice",&25],)?;println!("Inserted {} rows", affected);
事务
letmut tx = client.transaction()?;
tx.execute_with_params("INSERT INTO PERSON VALUES (?, ?)",&[&1,&"Alice"])?;
tx.execute_with_params("INSERT INTO PERSON VALUES (?, ?)",&[&2,&"Bob"])?;
tx.commit()?;
事务内的所有操作作为一个原子单元执行。如果 Transaction 被 Drop 而未显式 commit() / rollback(),会自动执行 ROLLBACK。
完整 CRUD 示例
use dameng::Client;fnmain() -> Result<(),Box<dyn std::error::Error>>{letmut client = Client::new("127.0.0.1",5236);
client.connect("SYSDBA","SYSDBA")?;// CREATE
client.execute("CREATE TABLE IF NOT EXISTS users ( id INT PRIMARY KEY, name VARCHAR(100), age INT )")?;// INSERT — 事务批量插入letmut tx = client.transaction()?;let users = [(1,"Alice",25i32),(2,"Bob",30),(3,"Carol",28)];for(id, name, age)in&users {
tx.execute_with_params("INSERT INTO users VALUES (?, ?, ?)",&[&id,&name,&age],)?;}
tx.commit()?;// SELECTlet rs = client.query_with_params("SELECT name, age FROM users WHERE age > ? ORDER BY age",&[&26i32],)?;for row in rs.iter(){let name = row.get_str(0).unwrap_or("<NULL>");let age:i32 = row.get(1).unwrap_or_default();println!("{name}: {age}");}// UPDATE
client.execute_with_params("UPDATE users SET age = ? WHERE id = ?",&[&31i32,&1i32],)?;// DELETE
client.execute_with_params("DELETE FROM users WHERE id = ?",&[&3i32])?;
client.close()?;Ok(())}