문제

I'm trying to insert some data read from XML files into my database. The problem is that it only executes one prepared statement (the first one i defined) and this causes errors.

This works:

conn = getConnection();
conn.Open();

SqlCeCommand cmd = conn.CreateCommand();
cmd.CommandText = "INSERT INTO ra_gestiuni ([denumire],[id_ra]) Values(@denumire,@id_ra)";

SqlCeParameter numeParam = new SqlCeParameter("@denumire", SqlDbType.NVarChar, 100);
numeParam.Value = denumire;
cmd.Parameters.Add(numeParam);

SqlCeParameter idRAParam = new SqlCeParameter("@id_ra", SqlDbType.Int);
idRAParam.Value = idRA;
cmd.Parameters.Add(idRAParam);

cmd.Prepare();
cmd.ExecuteNonQuery();
cmd.Dispose();
conn.Close();

This does not work anymore:

conn = getConnection();
conn.Open();

SqlCeCommand cmd = conn.CreateCommand();

cmd.CommandText = "INSERT INTO ra_active ([denumire],[gestiune],[utilizator],[tip_activ],[nr_invetar],[categorie_activ],[patrimoniu],[id_ra]) Values(@denumire,@gestiune,@utilizator,@tip_activ,@nr_invetar,@categorie_activ,@patrimoniu,@id_ra)";

SqlCeParameter numeParam = new SqlCeParameter("@denumire", SqlDbType.NVarChar, 100);
numeParam.Value = denumire;
cmd.Parameters.Add(numeParam);

SqlCeParameter gestiuneParam = new SqlCeParameter("@gestiune", SqlDbType.Int);
gestiuneParam.Value = gestiune;
cmd.Parameters.Add(gestiuneParam);

SqlCeParameter utilizatorParam = new SqlCeParameter("@utilizator", SqlDbType.Int);
utilizatorParam.Value = utilizator;
cmd.Parameters.Add(utilizatorParam);

SqlCeParameter nrInventarParam = new SqlCeParameter("@nr_inventar", SqlDbType.NVarChar);
nrInventarParam.Value = nrInventar;
cmd.Parameters.Add(nrInventarParam);

SqlCeParameter categorieActivParam = new SqlCeParameter("@categorie_activ", SqlDbType.NVarChar);
categorieActivParam.Value = categorieActiv;
cmd.Parameters.Add(categorieActivParam);

SqlCeParameter patrimoniuParam = new SqlCeParameter("@patrimoniu", SqlDbType.Int);
patrimoniuParam.Value = patrimoniu;
cmd.Parameters.Add(patrimoniuParam);

SqlCeParameter tipActivParam = new SqlCeParameter("@tip_activ", SqlDbType.Int);
tipActivParam.Value = tipActiv;
cmd.Parameters.Add(tipActivParam);

SqlCeParameter idRAParam = new SqlCeParameter("@id_ra", SqlDbType.Int);
idRAParam.Value = idRA;
cmd.Parameters.Add(idRAParam);

cmd.Prepare();
cmd.ExecuteNonQuery();
cmd.Dispose();
conn.Close();

I get this exception:

The column name is not valid [ Node name (if any) = ,Column name = gestiune ]

This happens because it tries to insert in the previous table (from the previous prepared statement). This is insane, I haven't found any solution to this.

도움이 되었습니까?

해결책

What I see is the parameter @nr_inventar does not exists in your command text (you have @nr_invetar there). Also if you really need to prepare the command before executing, you should set a size for all nvarchar parameters, like you did for @denumire.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top