Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 使用生锈的甲骨文板条箱_Database_Oracle_Rust - Fatal编程技术网

Database 使用生锈的甲骨文板条箱

Database 使用生锈的甲骨文板条箱,database,oracle,rust,Database,Oracle,Rust,我正在尝试用rust连接到oracle数据库。 我安装了这个库: [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 sq

我正在尝试用rust连接到oracle数据库。 我安装了这个库:

[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]:在当前范围内找不到枚举
std::result::result
的名为
query
的方法


编辑

谢谢大家的建议。 我修改了代码,它可以工作:

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")
    };
}

方法
Connection::connect
返回一个
结果
,因为连接可能失败。你需要在你的程序中处理这个问题

最简单的方法是对结果调用
.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, &[])?;
}
还可以使用
匹配
表达式进行更强大的错误处理

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)
};
匹配连接::连接(“md_s”,“md_s”,“//194.1.1.253/c4b”){
正常(连接)=>{
},
Err(e)=>panic!(“连接到数据库时遇到错误:{:?}”,e)
};

您可能会找到并且。

方法
Connection::connect
返回一个
结果,因为连接可能失败。你需要在你的程序中处理这个问题

最简单的方法是对结果调用
.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, &[])?;
}
还可以使用
匹配
表达式进行更强大的错误处理

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)
};
匹配连接::连接(“md_s”,“md_s”,“//194.1.1.253/c4b”){
正常(连接)=>{
},
Err(e)=>panic!(“连接到数据库时遇到错误:{:?}”,e)
};

您可能会找到并且。

您的
conn
变量是一个
结果
类型,它封装了所需的
连接
类型,因为它可能存在错误

因此,您需要的是访问连接,您可以通过以下几种方式进行访问:

  • 简单但不好的方法:
    conn.unwrap().query()
    。 这将在出现错误时引起恐慌。您的
    expect(“错误消息”)
    也有同样的问题
  • 最好处理您的错误:
  • 由于您只需打印
    “KO”
    ,因此不使用错误,因此您也可以执行类似操作:

您的
conn
变量是一个
Result
类型,它封装了所需的
连接
类型,因为它可能存在错误

因此,您需要的是访问连接,您可以通过以下几种方式进行访问:

  • 简单但不好的方法:
    conn.unwrap().query()
    。 这将在出现错误时引起恐慌。您的
    expect(“错误消息”)
    也有同样的问题
  • 最好处理您的错误:
  • 由于您只需打印
    “KO”
    ,因此不使用错误,因此您也可以执行类似操作:

由于
Connection::connect
可能会失败,因此产生了一个结果。“故障用
结果
类型表示。
结果
可以是成功案例中的
正常
,也可以是失败案例中的
错误
。”检查
是否正常
不会自动将值转换为其
正常
值。您会得到一个结果,因为
连接::连接
可能会失败。“故障用
结果
类型表示。
结果
可能是成功案例中的
正常
,也可能是失败案例中的
错误。
检查是否正常
不会自动将值转换为其
正常
值。”。