[dependencies]
oracle = "0.3.2"
这是代码:
extern crate oracle; use oracle::{Connection, Error}; fn main() { let conn = Connection::connect("user", "pwd", "//194.1.1.253/db"); if conn.is_ok() { // let sql = "SELECT * FROM mat_anag WHERE ditmat = :1 AND fvl = :2"; let sql = "SELECT * FROM mat_anag WHERE ditmat = 'XXL' AND fvl = ' '"; let rows = conn.query(sql, &[])?; } else { println!("KO"); } }
问题是我得到了这个错误:错误[E0599]:在当前范围内没有为枚举query
找到名为std::result::Result<oracle::Connection, oracle::Error>
的方法
编辑谢谢大家的建议。我修改了代码,它起作用了:
extern crate oracle; use oracle::{Connection}; fn main() { let conn = Connection::connect("user", "pwd", "//194.1.1.253/db"); { Ok(conn) => { let sql = "SELECT * FROM anag_conti WHERE ditagenda = 'XXL' AND fvl = ' '"; let rows = conn.query(sql, &[]).unwrap(); for r in rows { let row = r.unwrap(); let conto: String = row.get("CONTO").unwrap(); println!("{}", conto); } } Err(_e) => panic!("Errore di connessione") }; }
conn
变量是Result
类型,它包装了所需的Connection
类型,因为它可能会出错。因此,您需要通过多种方式访问连接:
conn.unwrap().query()
。这将在出现错误时惊慌。您对expect("Error message")
也有相同的问题。match conn {
Ok(conn) => conn.query(),
Err(_) => println!("KO")
}
"KO"
,所以您不会使用该错误,因此您也可以执行以下操作:if let Ok(conn) = conn {
conn.query();
} else {
println!("KO");
}
Connection::connect
返回Result
,因为连接可能失败。您需要在程序中处理此问题。最简单的方法是在结果上调用.unwrap()
或.expect()
。这些方法返回结果的Ok
值,如果有错误,则返回panic!
。
extern crate oracle;
use oracle::{Connection, Error};
fn main() {
let conn = Connection::connect("md_s", "md_s", "//194.1.1.253/c4b").expect("Could not connect");
// let sql = "SELECT * FROM mat_anag WHERE ditmat = :1 AND fvl = :2";
let sql = "SELECT * FROM mat_anag WHERE ditmat = 'XXL' AND fvl = ' '";
let rows = conn.query(sql, &[])?;
}
您还可以使用match
表达式进行更强大的错误处理。
let conn = match Connection::connect("md_s", "md_s", "//194.1.1.253/c4b") { Ok(conn) => conn, Err(e) => panic!("Encountered an error when connecting to the database: {:?}", e) };
或类似的东西:
match Connection::connect("md_s", "md_s", "//194.1.1.253/c4b") { Ok(conn) => { <do something with the result here> }, Err(e) => panic!("Encountered an error when connecting to the database: {:?}", e) };
您可能会找到the documentation page forResult
useful以及Result
。