Avatar billede macadisé Novice
01. december 2014 - 14:41 Der er 5 kommentarer og
1 løsning

Access SQL update fra Visual Studio

Hej, jeg har et problem med min SQL Update kode.
Jeg vil opdatere min database med input fra commandprompten ved at soege via indikatoren id.


//not working - something wrong with SQL command!
public static void updateInDB()
{
    try
    {
        string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0; " + @"Data source=C:\temp\products.mdb";
        OleDbConnection connection = new OleDbConnection(connectionString);
        connection.Open();

        OleDbCommand command = new OleDbCommand();
       
        //Jeg tror at problemet ligger i nedestående linje:
        command.CommandText = "UPDATE [name] AND [price] SET [name] = ?, [price] = ?, WHERE [id] = ?";
       
        command.Connection = connection;

        //Search id to select the item to update!
        //the id should be attributed automatically
        Console.Write("Enter an id to update a product: ");
        string id = Console.ReadLine();
        command.Parameters.AddWithValue("@id", id);

        //Enter artist and album name separeted by a comma: ",".
        Console.Write("Enter new name to update it: ");
        string name = Console.ReadLine();
        command.Parameters.AddWithValue("@name", name);

        Console.Write("Enter a new price for the product: ");
        string price = Console.ReadLine();
        command.Parameters.AddWithValue("@price", price);

        command.ExecuteNonQuery();
        connection.Close();
    }
    catch (Exception e)
    {
        Console.WriteLine("Error in inserting new data!" +                    e.ToString());
    }
}
    }}
Avatar billede arne_v Ekspert
01. december 2014 - 14:58 #1
Der skal ikke vaere komma foran WHERE !
Avatar billede garrett Seniormester
01. december 2014 - 15:54 #2
Er det ikke fordi der ikke er angivet noget tabelnavn i den her linie: 

command.CommandText = "UPDATE [name] AND [price] SET [name] = ?, [price] = ?, WHERE [id] = ?";

Skal det ikke være:  command.CommandText = "UPDATE <tablename> SET [name] = ?, [price] = ? WHERE [id] = ?";
Avatar billede macadisé Novice
01. december 2014 - 15:14 #3
Hmm, det har du da ret i, nu koerer programmet, men desvaerre bliver databasen ikke opdateret. Programmet giver i stedet en laengere fejlkode, som jeg desvaerre ikke kunne paste med her...
Avatar billede macadisé Novice
01. december 2014 - 15:27 #4
Det andet problem må vaere her:

command.Parameters.AddWithValue("@id", id);

hvor jeg skal bruge en eller anden form for ContainKey funktion, eller i hvert fald soege og identificere id og ikke som nu AddWithValue...
Avatar billede macadisé Novice
01. december 2014 - 18:18 #5
Jo det må have været et problem! Koden kører nu uden at returnere fejlkode, men databasen bliver desværre stadig ikke opdateret, til min store forbavselse!
Avatar billede macadisé Novice
07. december 2014 - 00:04 #6
Problem løst.
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

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