skrive til db
Har følgende kode, som på nuværende tidspunkt opretter en session som tæller op hver gang man trykker på billedet. Den henter oplysninger fra en Access db som har 2 felttyper: aktiviteter og point. Under aktiviteter står f.eks. som bruges her basketball og point står der selvfølgelig point. Problemet er med denne kode at den tæller op i label 2 uden at skrive til db således at den gemmer tallet til en anden gang siden køres... alt hjælp er velkommen....//
int henttal(string aktivitet){
//opret en streng med driver/provider og sti til databasen
string strConnection= "Provider= Microsoft.Jet.OleDB.4.0;";
strConnection+= @"Data Source=" + Server.MapPath("List.mdb");
//opret en streng med sql-forspørgsel
string strSQL= "SELECT * FROM aktivitet WHERE aktivitet = '"+aktivitet +"'";
//Opret en tom variabel til udtrækket
string strResultHolder= "";
//opret et objekt af typen OleDbConnection til databasen
//objektet ligger i System.Data.OleDb
OleDbConnection objConnection= new OleDbConnection(strConnection);
//opret et objekt der udfører databaseudtrækket og gem det
//i variablen objCommand
OleDbCommand objCommand= new OleDbCommand(strSQL, objConnection);
//forbered en variabel af typen OleDbDataReader
//til at gemme udtrækket i inden det udskrives
OleDbDataReader objDataReader= null;
//tjekker om der er nogele fejl når forbindelsen åbnes
try
{
objConnection.Open();
//eksekverer databaseudtrækket
objDataReader= objCommand.ExecuteReader();
while(objDataReader.Read() == true){
strResultHolder+= objDataReader[1];
}
objConnection.Close();
}
//er der "kastet" en fejl, så udskriv den
catch (Exception e)
{
Label1.Text= "Connection failed to open!";
}
return Convert.ToInt32(strResultHolder);
}
int MyUpdateMethod(string aktivitet, int point) {
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data Source=C:\\List.mdb";
System.Data.IDbConnection dbConnection = new System.Data.OleDb.OleDbConnection(connectionString);
string queryString = "UPDATE [aktivitet] SET [point]=@point WHERE ([aktivitet].[aktivitet] = @aktivitet" +
")";
System.Data.IDbCommand dbCommand = new System.Data.OleDb.OleDbCommand();
dbCommand.CommandText = queryString;
dbCommand.Connection = dbConnection;
System.Data.IDataParameter dbParam_aktivitet = new System.Data.OleDb.OleDbParameter();
dbParam_aktivitet.ParameterName = "@aktivitet";
dbParam_aktivitet.Value = aktivitet;
dbParam_aktivitet.DbType = System.Data.DbType.String;
dbCommand.Parameters.Add(dbParam_aktivitet);
System.Data.IDataParameter dbParam_point = new System.Data.OleDb.OleDbParameter();
dbParam_point.ParameterName = "@point";
dbParam_point.Value = point;
dbParam_point.DbType = System.Data.DbType.Int32;
dbCommand.Parameters.Add(dbParam_point);
int rowsAffected = 0;
dbConnection.Open();
try {
rowsAffected = dbCommand.ExecuteNonQuery();
}
finally {
dbConnection.Close();
}
return rowsAffected;
}
void ImageButton1_Click(object sender, ImageClickEventArgs e) {
if(!IsPostBack)
{
int nyttal = henttal("basketball");
Session["counter"] = nyttal;
}
int temptal = Convert.ToInt32(Session["counter"]);
temptal++;
Session["counter"] = temptal;
MyUpdateMethod("basketball", temptal);
Label1.Text = henttal("basketball").ToString();
Label2.Text = Session["counter"].ToString();
}
