0

我似乎无法弄清楚为什么以下语句没有执行。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();
    }
4

2 回答 2

0

不是问题的答案(因此是社区 wiki)——我仍在等待更多的上下文(重新“不执行”)——但这只是关于减少移动部件和避免附带问题的建议(例如,如果抛出异常,当前代码不会关闭连接):

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.

于 2013-11-11T09:18:03.390 回答
0

您需要将按钮挂接到 button3_Click 方法中。您可以在代码中(参见这篇文章)或在 Visual Studio IDE(参见这篇文章)中执行此操作。

于 2013-11-11T11:50:19.363 回答