Aktualizacja danych w bazie Oracle - net provider

0
  public void updateCustomer(Customer customer, string id)
        {
            string queryString = "UPDATE KLIENCI SET ID_NR_DOWODU_KLIENTA = : p_ID_NR_DOWODU_KLIENTA, IMIE = :p_IMIE, NAZWISKO = :p_NAZWISKO, EMAIL = :p_EMAIL, TELEFON = :p_TELEFON  WHERE ID_NR_DOWODU_KLIENTA = :" + id;
            string connectionString = "Data Source = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = Firma))); User Id = firma; Password = firma;";

            using (OracleConnection connection = new OracleConnection(connectionString))
            {
                OracleCommand cmd = connection.CreateCommand();
                OracleParameter parm;
                //cmd.CommandText = queryString;
                try
                {
                    connection.Open();
                    string sqlUpdate = "UPDATE KLIENCI ";
                    sqlUpdate += "SET IMIE = :p_imie, ";
                    sqlUpdate += "NAZWISKO = :p_nazwisko, ";
                    sqlUpdate += "EMAIL = :p_email, ";
                    sqlUpdate += "TELEFON = :p_telefon ";
                    sqlUpdate += "where ID_NR_DOWODU_KLIENTA = :'AAZ371758'";

                    cmd.CommandText = sqlUpdate;
                   

                    OracleParameter p1 = new OracleParameter();
                    p1.OracleDbType = OracleDbType.Varchar2;
                    p1.Value = customer.Id;
                    p1.ParameterName = "p_id";

                    OracleParameter p2 = new OracleParameter();
                    p2.OracleDbType = OracleDbType.Varchar2;
                    p2.Value = customer.Name;
                    p2.ParameterName = "p_imie";

                    OracleParameter p3 = new OracleParameter();
                    p3.OracleDbType = OracleDbType.Varchar2;
                    p3.Value = customer.LastName;
                    p3.ParameterName = "p_nazwisko";

                    OracleParameter p4 = new OracleParameter();
                    p4.OracleDbType = OracleDbType.Varchar2;
                    p4.Value = customer.Email;
                    p4.ParameterName = "p_email";

                    OracleParameter p5 = new OracleParameter();
                    p5.OracleDbType = OracleDbType.Varchar2;
                    p5.Value = customer.CellPhone;
                    p5.ParameterName = "p_telefon";

               


                    cmd.Parameters.Add(p1);
                    cmd.Parameters.Add(p2);
                    cmd.Parameters.Add(p3);
                    cmd.Parameters.Add(p4);
                    cmd.Parameters.Add(p5);

                    cmd.ExecuteNonQuery();
                    MessageBox.Show("Record Updated Successfully", "Record Updated");

                }
                catch (Exception ex)
                {
                    MessageBox.Show("Komunikat: " + ex);
                }
            }
        }

Dostaję błąd: niepoprawna nazwa zmiennej macierzystej.

Metoda z javy, która działa:

	public int updateCustomer(String idCard, Customer customer) {
		String sql = "UPDATE KLIENCI SET ID_NR_DOWODU_KLIENTA=?, IMIE=?, "
				+ "NAZWISKO=?, TELEFON=?, EMAIL=? WHERE ID_NR_DOWODU_KLIENTA='"
				+ idCard + "'";

		try {
			PreparedStatement prepStmt = conn.prepareStatement(sql);
			prepStmt.setString(1, customer.getIdCard());
			prepStmt.setString(2, customer.getName());
			prepStmt.setString(3, customer.getLastName());
			prepStmt.setString(4, customer.getCellPhone());
			prepStmt.setString(5, customer.getEmail());
			prepStmt.execute();
			return prepStmt.getUpdateCount();

		} catch (SQLException ex) {
			JOptionPane
					.showMessageDialog(null,
							"Błąd aktualizacji danych klienta do bazy." + ex,
							"Błąd", 3);
			return -1;

		}
	}

Pytanie jak to zrobić w C#? Czy jest jakiś krótszy sposób na to, przeważnie to Javie kod jest długi...

dodanie znacznika <code class="java"> - furious programming

1

Kod trochę długi, ale w końcu się udało:

        public void UpdateRecord(Customer customer, String oldId)
        {
            String update = @"UPDATE KLIENCI
                          SET ID_NR_DOWODU_KLIENTA = :p_id, 
                          IMIE= :p_imie, 
                          NAZWISKO = :p_nazwisko, 
                          EMAIL = :p_email,
                          TELEFON = :p_telefon 
                          WHERE ID_NR_DOWODU_KLIENTA = '" + oldId + "'";
            string connectionString = "Data Source = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = Firma))); User Id = firma; Password = firma;";
            
            using (OracleConnection connection = new OracleConnection(connectionString))
            {
                try
                {
                    connection.Open();

                    OracleCommand cmd = connection.CreateCommand();
                    cmd = new OracleCommand(update, connection);
                    cmd.CommandType = CommandType.Text;


                    OracleParameter p_id = new OracleParameter("p_id", OracleDbType.NVarchar2, ParameterDirection.Input);
                    p_id.Value = customer.Id;
                    cmd.Parameters.Add(p_id);

                    OracleParameter p_imie = new OracleParameter("p_imie", OracleDbType.NVarchar2, ParameterDirection.Input);
                    p_imie.Value = customer.Name;
                    cmd.Parameters.Add(p_imie);

                    OracleParameter p_nazwisko = new OracleParameter("p_nazwisko", OracleDbType.NVarchar2, ParameterDirection.Input);
                    p_nazwisko.Value = customer.LastName;
                    cmd.Parameters.Add(p_nazwisko);

                    OracleParameter p_email = new OracleParameter("p_email", OracleDbType.NVarchar2, ParameterDirection.Input);
                    p_email.Value = customer.Email;
                    cmd.Parameters.Add(p_email);

                    OracleParameter p_telefon = new OracleParameter("p_telefon", OracleDbType.NVarchar2, ParameterDirection.Input);
                    p_telefon.Value = customer.CellPhone;
                    cmd.Parameters.Add(p_telefon);


                    using (var transaction = connection.BeginTransaction())
                    {
                        try
                        {
                            cmd.Transaction = transaction;
                            cmd.ExecuteNonQuery();
                            transaction.Commit();
                        }
                        catch (Exception)
                        {
                            transaction.Rollback();
                            throw;
                        }
                    }
                    MessageBox.Show("Updated");
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Błąd: " + ex);
                }
            }
        } 

1 użytkowników online, w tym zalogowanych: 0, gości: 1