Avatar billede solarian Nybegynder
12. december 2003 - 17:57 Der er 1 løsning

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();

}
Avatar billede solarian Nybegynder
21. december 2003 - 21:38 #1
lukket
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester