查询时c#语句没有执行

时间:2013-11-11 09:08:43

标签: c# sql oracle visual-studio

我似乎无法弄清楚为什么以下语句没有执行。 oracle语句在sql developer中完美运行。 我正在使用此按钮将“neft_temp”中的新数据插入“bbbt”

 private void button3_Click(object sender, EventArgs e)
    {
        OracleConnection con = new OracleConnection("Data Source=KBETEST; Persist Security Info=TRUE; User ID=dbo; Password=dbo123; Unicode=True");
        OracleDataAdapter da = new OracleDataAdapter();

        string str = "insert into bbbt(bankid,benbrn_code,brn_name,brn_addr,brn_loc,brn_stat,brn_city,coun_code,remarks,ifsc_code,rtgs_stat) select substr(ifsc_code,1,4), substr(ifsc_code,5), n.branch_name, n.address1, n.district, n.state, n.city, 'IN', n.bank_name, n.ifsc_code,n.status from neft_temp n where ifsc_code in (SELECT ifsc_code FROM neft_temp MINUS SELECT ifsc_code FROM bbbt)";
        con.Open();
        da.InsertCommand = new OracleCommand(str, con);
        da.InsertCommand.ExecuteNonQuery();

        con.Dispose();
        button4.PerformClick();
    }

2 个答案:

答案 0 :(得分:0)

这是问题的答案(因此社区维基) - 我还在等待更多的背景(重新“不执行”) - 但这仅仅是一个咨询方面的术语减少运动部件,避免副作用(例如,如果抛出异常,当前代码不会关闭连接):

private void button3_Click(object sender, EventArgs e)
{
    using(var con = new OracleConnection("Data Source=KBETEST; Persist Security Info=TRUE; User ID=dbo; Password=dbo123; Unicode=True"))
    using(var cmd = new OracleCommand(@"
insert into bbbt(bankid,benbrn_code,brn_name,brn_addr,brn_loc,brn_stat,brn_city,coun_code,remarks,ifsc_code,rtgs_stat)
select substr(ifsc_code,1,4), substr(ifsc_code,5), n.branch_name, n.address1, n.district, n.state, n.city, 'IN', n.bank_name, n.ifsc_code,n.status from neft_temp n where ifsc_code in (SELECT ifsc_code FROM neft_temp MINUS SELECT ifsc_code FROM bbbt)", con))
    {
        con.Open();
        cmd.ExecuteNonQuery();
    }       
    button4.PerformClick();
}

请注意,数据适配器在此处未添加任何内容,并且有多个IDisposable类型未使用using

答案 1 :(得分:0)

您需要将按钮挂钩到button3_Click方法。您可以在代码中执行此操作(请参阅this post)或在Visual Studio IDE中执行此操作(请参阅this post)。