problemer med opdatering af databasen
Jeg har en insert query jeg skal eksekvere fra min asp.net applikation. Basen jeg kører på er en oracle.Min insert-query ser således ud:
INSERT INTO TA_STED
(STED_NR, STED_ID, STED_NAVN, STED_SYNONYM, STED_ADRESSE, TELEFON, MOBIL_TEL, EMAIL, KONTAKT_PERSON, POSTNR, AKTIV_KODE,
DB_ID, SEQ_ID, FAX, KUNDE_NR, BEMAERK)
VALUES (SA_STED.NEXTVAL, SA_STED.NEXTVAL, 'txtNavn', 'txtSynonym', 'txtAdresse', 'txtTelefon', 'txtMobil', 'txtEmail', 'txtKontaktPerson', 'txtPostNr', 'j', 0,
SA_STED.NEXTVAL, 'txtfaxNr', 502, ' txtBemaerk ')
Hvis jeg eksekverer den fra dotnets commandbuilder virker den perfekt. Hvis jeg derimod eksekverer den fra min applikation får jeg følgende virkeligt dårligt beskrevet fejlmeddelse:
ORA-01722: invalid number
Jeg aner ikke hvorfor det ikke virker fra asp.net applikationen når det gør fra commandbuilderen.
I asp.net applikationen gør jeg brug af parameters til at indsætte værdierne i SQL-strengen.
Følgende kode bruger jeg til at oprette parametrene:
System.Collections.Hashtable table=new System.Collections.Hashtable();
table.Add("txtfaxNr",txtfaxNr.Text);
table.Add("txtSynonym",txtSynonym.Text);
table.Add("txtNavn",txtNavn.Text);
table.Add("txtAdresse",txtAdresse.Text);
table.Add("txtTelefon",txtTelefon.Text);
table.Add("txtEmail",txtEmail.Text);
table.Add("txtMobil",txtMobil.Text);
table.Add("txtKontaktPerson",txtKontaktPerson.Text);
table.Add("txtPostNr",txtPostNr.Text);
table.Add("txtBemaerk",txtBemaerk.Text);
table.Add("kundenr",502);
------------------------
genericDAL.addParameter("txtNavn",System.Data.DbType.String,tabel["txtNavn"].ToString());
genericDAL.addParameter("txtSynonym",System.Data.DbType.String,tabel["txtSynonym"].ToString());
genericDAL.addParameter("txtAdresse",System.Data.DbType.String,tabel["txtAdresse"].ToString());
genericDAL.addParameter("txtTelefon",System.Data.DbType.String,tabel["txtTelefon"].ToString());
genericDAL.addParameter("txtMobil",System.Data.DbType.String,tabel["txtMobil"].ToString());
genericDAL.addParameter("txtEmail",System.Data.DbType.String,tabel["txtEmail"].ToString());
genericDAL.addParameter("txtKontaktPerson",System.Data.DbType.String,tabel["txtKontaktPerson"].ToString());
genericDAL.addParameter("txtPostNr",System.Data.DbType.String,tabel["txtPostNr"].ToString());
genericDAL.addParameter("txtfaxNr",System.Data.DbType.String,tabel["txtfaxNr"].ToString());
genericDAL.addParameter("txtBemaerk",System.Data.DbType.String,tabel["txtBemaerk"].ToString());
genericDAL.addParameter("kundenr",System.Data.DbType.Int32,tabel["kundenr"].ToString());
string SQL=
" INSERT INTO"+
" TA_STED ("+
"STED_NR,STED_ID,STED_NAVN,"+
"STED_SYNONYM,STED_ADRESSE,TELEFON,"+
"MOBIL_TEL,EMAIL,KONTAKT_PERSON,"+
"POSTNR,AKTIV_KODE,DB_ID,"+
"SEQ_ID,FAX,KUNDE_NR,BEMAERK)"+
" VALUES ("+
"SA_STED.NEXTVAL,SA_STED.NEXTVAL,:txtNavn,"+
":txtSynonym,:txtAdresse,:txtTelefon,"+
":txtMobil,:txtEmail,:txtKontaktPerson,"+
":txtPostNr,'j',0,SA_STED.NEXTVAL,"+
":txtfaxNr,:kundenr,:txtBemaerk)";
genericDAL.insert(SQL,System.Data.CommandType.Text);
----------------------------------
public override void addParameter(string name,System.Data.DbType dbType,object dbValue)
{
createCommandSet();
Oracle.DataAccess.Client.OracleParameter param = new Oracle.DataAccess.Client.OracleParameter();
param.DbType=dbType;
param.ParameterName=name;
param.Value=dbValue;
objCmd.Parameters.Add(param);
}
------------------------------
public override void insert(string commandtext,System.Data.CommandType commandtype)
{
createCommandSet();
objCmd.CommandType=commandtype;
objCmd.CommandText=commandtext;
objCmd.ExecuteNonQuery();
destroyCommandSet();
}
----------------------
protected override void createCommandSet()
{
if(objCmd==null)
{
objCmd=new OracleCommand();
Oracle.DataAccess.Client.OracleConnection con=new OracleConnection(this.connectionString);
con.Open();
objCmd.Connection=con;
}
}
Det interresante ligger altså i insertSted og insert funktionerne. Det øverste er der hvor jeg undfanger data i præsentationslaget.
Jeg er lidt desperat. Mange hilsner
