Jag har problem med ett "kommando" när jag ska uppdatera information samt ta bort information i en accessdatabas via Visual Studio. Jag använder mig av obdc. Varför går du via ODBC? Har du testat OleDb istället? Har tyvärr ingen idé om vad felet är, men jag skulle testat med OleDb om det är ett möjligt alternativ. Hur ser SQL:en ut? OdbcCommandona ser ut såhär: Anledningen till att jag går in via Odbc är för att det är det jag ska lära mig och för att det är det som hela resterande programmet är skrivet i. Båda felen ser ut att vara relterade till typerna i databasen. Kolla upp vad det är för typer och försök att skapa typade parameter objekt. Dvs typ När jag testade denna kod: Tänkte snarare Oavsett hur jag gör så får jag samma felmeddelande. Inte AddWithValue. Då försöker du lägga till en parameter som input variabel. Bara tabortfile.Parameters.Add(parameter)Två nybörjarproblem, ett vardera angående uppdatering/borttagning av information
I ena fallet där jag vill ändra ett lösenord använder jag denna kod:
public void Andralosen(int medlemsID, string losenord)
{
conn.Open();
sattnyttlosen.Parameters.AddWithValue("?", losenord);
sattnyttlosen.Parameters.AddWithValue("?", medlemsID);
int antalRowsAffected = sattnyttlosen.ExecuteNonQuery();
conn.Close();
MessageBox.Show("Klart", " ", MessageBoxButtons.OK, MessageBoxIcon.None);
}
Då får jag följande felmeddelande: ERROR [HY090] [Microsoft][ODBC-drivrutin för Microsoft Access]Ogiltig längd på sträng eller buffert
som då syftar på int antalRowsAffected = sattnyttlosen.ExecuteNonQuery();.
Samma "kommando" använder jag när jag vill ta bort ett lån som en medlem har i följande kod:
public void TabortLan(int medlemsID)
{
conn1.Open();
tabortlan.Parameters.AddWithValue("?", medlemsID);
int antalRowsAffected = tabortlan.ExecuteNonQuery();
conn1.Close();
MessageBox.Show("Klart", " ", MessageBoxButtons.OK, MessageBoxIcon.None);
}
Då för jag följande felmeddelande: ERROR [HY104] [Microsoft][ODBC-drivrutin för Microsoft Access]Ogiltigt precisionsvärde
som då syftar på raden int antalRowsAffected = tabortlan.ExecuteNonQuery();
Jag vet inte riktigt hur jag ska få till det.Sv: Två nybörjarproblem, ett vardera angående uppdatering/borttagning av informa
/JohanSv: Två nybörjarproblem, ett vardera angående uppdatering/borttagning av informa
Sv:Två nybörjarproblem, ett vardera angående uppdatering/borttagning av informa
För att radera ett lån:
DELETE FROM Lån
WHERE (medlemsID = ?)
För att uppdatera lösenordet:
UPDATE Medlem
SET losenord = ?
WHERE (medlemsID = ?)Sv:Två nybörjarproblem, ett vardera angående uppdatering/borttagning av informa
/MariaSv: Två nybörjarproblem, ett vardera angående uppdatering/borttagning av informa
<code>
OdbcParam param = new OdbcParam(...);
param.Value = ...
sattnyttlosen.Parameters.Add(param);
</code>
Obs! Pseudo kod som synes. Komme rinte ihåg ordningen på parametrarna i konstruktorn och sitter lite tight till just nu...Sv:Två nybörjarproblem, ett vardera angående uppdatering/borttagning av informa
public void Andralosen(int medlemsID, string losenord)
{
conn.Open();
OdbcParameter parameter = new OdbcParameter(losenord);
parameter.Value = losenord;
OdbcParameter param = new OdbcParameter(medlemsID);
param.Value = medlemsID;
sattnyttlosen.Parameters.Add(parameter);
sattnyttlosen.Parameters.Add(param);
int antalRowsAffected = sattnyttlosen.ExecuteNonQuery();
conn.Close();
}
så fick jag fortfarande felmeddelandet på int antalRowsAffected
"ERROR [HY090] [Microsoft][ODBC-drivrutin för Microsoft Access]Ogiltig längd på sträng eller buffert"
Sen testade jag denna kod:
public void TabortFilm(string imdb)
{
conn1.Open();
OdbcParameter param = new OdbcParameter();
param.Value = imdb;
tabortfilm.Parameters.Add(param);
int antalRowsAffected = tabortfilm.ExecuteNonQuery();
//tabortfilm.ExecuteNonQuery();
conn1.Close();
}
Men fick fortfarande samma felmeddelande på int antalRowsAffected
"ERROR [HY104?] [Microsoft][ODBC-drivrutin för Microsoft Access]Ogiltigt precisionsvärde"Sv: Två nybörjarproblem, ett vardera angående uppdatering/borttagning av informa
<code>
public void Andralosen(int medlemsID, string losenord)
{
conn.Open();
OdbcParameter parameter = new OdbcParameter("?",OdbcType.VarChar,10);
parameter.Value = losenord;
sattnyttlosen.Parameters.Add(parameter);
parameter = new OdbcParameter("?",OdbcType.Int);
parameter.Value = medlemsID;
sattnyttlosen.Parameters.Add(parameter);
int antalRowsAffected = sattnyttlosen.ExecuteNonQuery();
conn.Close();
}
</code>
Dvs använda konstruktorn för att hårt sätta vilken parameter typ det är...
Kolla mer på http://msdn2.microsoft.com/en-us/library/system.data.odbc.odbcparameter.odbcparameter.aspxSv:Två nybörjarproblem, ett vardera angående uppdatering/borttagning av informa
Testade denna kod vid borttagningen
public void TabortFilm(string imdb)
{
conn1.Open();
OdbcParameter parameter = new OdbcParameter("?", OdbcType.VarChar, 10);
parameter.Value = imdb;
tabortfilm.Parameters.AddWithValue("?", parameter);
int antalRowsAffected = tabortfilm.ExecuteNonQuery();
conn1.Close();
}
Men då fick jag detta felmeddelande:
Det finns ingen mappning från objekttypen System.Data.Odbc.OdbcParameter till en inbyggd typ i en känd provider.Sv: Två nybörjarproblem, ett vardera angående uppdatering/borttagning av informa