c# - 如何将 C# 中的文本框值插入到 Oracle 数据库中

标签 c# sql oracle winforms

好吧,我对这一切都不熟悉,我正在努力在 Windows 窗体应用程序中插入 TextBox 值(用户输入)并将这些值存储到 Oracle 数据库表中。

C#代码:

string oradb = "DATA SOURCE = larry.uopnet.plymouth.ac.uk:1521/orcl.fost.plymouth.ac.uk;PERSIST SECURITY INFO = True;USER ID = xxxxxxxxxx;password = xxxxxxxxx";

OracleConnection con = new OracleConnection(oradb);
con.Open();
OracleCommand cmd = new OracleCommand();
cmd.Connection = con;
cmd.CommandText = "Insert into USER.Client VALUES (txtBoxClientName, txtBoxClientCity, txtBoxClientCountry, txtBoxClientNumber, txtBoxClientURL, comboClientStatus)";

int rowsUpdated = cmd.ExecuteNonQuery();
if (rowsUpdated == 0)
    MessageBox.Show("Please fill in required fields");
else
    MessageBox.Show("Client has been added");
con.Dispose();

此错误出现在 int rowsUpdated = cmd.ExecuteNonQuery(); 行 - Oracle.DataAccess 中发生类型为 Oracle.DataAccess.Client.OracleException 的未处理异常.dll

Oracle 中的触发代码:

create or replace TRIGGER trg_client_ClientID
BEFORE INSERT ON client FOR EACH ROW
BEGIN
  :NEW.ClientID := seq_client_ClientID.nextval;
END;

最佳答案

借助添加 OracleException 和 ArgumentException 以及使用 Elkhan 的参数代码,我设法修复了它 - 这是我修改后的工作代码:

    private void btnClientSave_Click(object sender, EventArgs e)
    {

        string oradb = "DATA SOURCE = larry.uopnet.plymouth.ac.uk:1521/orcl.fost.plymouth.ac.uk;PERSIST SECURITY INFO = True;USER ID = xxxxxxxxx;password = xxxxxxxx";
        string insertquery = "Insert into Client VALUES (:1, :2, :3, :4, :5, :6, :7)";


        OracleConnection con = new OracleConnection(oradb);
        con.Open();
        OracleCommand cmd = new OracleCommand();
        cmd.Connection = con;
        cmd.CommandText = insertquery;
        try
        {

            cmd.Parameters.Add(new OracleParameter("1", OracleDbType.Decimal, ParameterDirection.ReturnValue));
            cmd.Parameters.Add(new OracleParameter("2", OracleDbType.Varchar2, txtBoxClientName.Text, ParameterDirection.Input));
            cmd.Parameters.Add(new OracleParameter("3", OracleDbType.Varchar2, txtBoxClientCity.Text, ParameterDirection.Input));
            cmd.Parameters.Add(new OracleParameter("4", OracleDbType.Varchar2, txtBoxClientCountry.Text, ParameterDirection.Input));
            cmd.Parameters.Add(new OracleParameter("5", OracleDbType.Varchar2, txtBoxClientNumber.Text, ParameterDirection.Input));
            cmd.Parameters.Add(new OracleParameter("6", OracleDbType.Varchar2, txtBoxClientURL.Text, ParameterDirection.Input));
            cmd.Parameters.Add(new OracleParameter("7", OracleDbType.Varchar2, comboClientStatus.Text, ParameterDirection.Input));

            cmd.ExecuteNonQuery();

            MessageBox.Show("Client has been added");
            con.Close();
            Close();
        }
        catch (OracleException e1)
        {
            MessageBox.Show("Error: " + e1.Message);
        }
        catch (ArgumentException e2)
        {
            MessageBox.Show("Error: " + e2.Message);
        }
        finally
        {                
            cmd.Dispose();
            con.Dispose();
        }

关于c# - 如何将 C# 中的文本框值插入到 Oracle 数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43106359/

相关文章:

sql - 从行中获取逗号分隔的字符串

sql - 具有多个连接到同一个表的慢 postgres 查询

sql - oracle:解码和子查询选择结果

javascript - Oracle apex,在每个字段必须为空的情况下禁用提交页面按钮,如何?

c# - Telerik 免费测试框架与 Selenium

c# - 是否在扩展方法类中调用扩展方法?

javascript - Ajax、PHP、SQL 和 JavaScript

java - Java中如何保证Closeable接口(interface)的close()方法的幂等性?

c# - 用于非窗口操作系统的单声道混淆器

c# - 你如何从 Imgur 获取 access_token 和 refresh_token?