c# lägga till i en access databas.
jag försöker göra en jätte enkel grej här men blir helt knäpp snart.
Håller på och lär mig C# och tycker att det är väldigt svårt att hitta riktigt bra sidor på nätet som visar bra exempel. Har ni några bra sidor får ni gärna skicka dem. =)
Nu till mitt problem.
med hjälp av denna kod vill jag lägga till dessa fyra fält i min access databas. Värderna hämtas från textboxar från en hemsida som heter enligt de nedan. När jag kör koden får jag "Syntaxfel i INSERT INTO-uttryck"
Hur ska jag skriva för att det ska funka?
OleDbConnection myConn = new OleDbConnection (@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+Server.MapPath(@"\mallsida\databas\mallsida.mdb"));
myConn.Open();
OleDbCommand myCmd = new OleDbCommand (@"INSERT INTO Kontakta (Meddelande, Namn, Email, Mobil) VALUES (@kontaktaMeddelande, @kontatkaNamn, @kontaktaEmail, @kontaktaMobil",myConn);
myCmd.Parameters.Add("@kontaktaMeddelande", System.Data.SqlDbType.VarChar).Value = tb_Meddelande.Text;
myCmd.Parameters.Add("@kontaktaNamn", System.Data.SqlDbType.VarChar).Value = tb_Namn.Text;
myCmd.Parameters.Add("@kontaktaEmail", System.Data.SqlDbType.VarChar).Value = tb_Email.Text;
myCmd.Parameters.Add("@kontaktaMobil", System.Data.SqlDbType.VarChar).Value = tb_Mobil.Text;
myCmd.ExecuteNonQuery();
myConn.Close();
Svara
Sv: c# lägga till i en access databas.
Om detta nu är en kopia från din kod ser jag i alla fall ett stavfel (@kontatkaNamn/@kontaktaNamn), samt att slut parantes saknas efter parametrarna. Du behöver inte öppna din koppling för än precis innan du behöver den. Den reviderade koden finns nedan:
1 2 3 4 5 6 7 8 9 10 11 12 13 | OleDbConnection myConn = new OleDbConnection ( @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" +Server.MapPath( @"\mallsida\databas\mallsida.mdb" )); OleDbCommand myCmd = new OleDbCommand ( @"INSERT INTO Kontakta (Meddelande, Namn, Email, + Mobil) VALUES (@kontaktaMeddelande, @kontaktaNamn, @kontaktaEmail, @kontaktaMobil)" , myConn); myCmd.Parameters.Add( "@kontaktaMeddelande" , System.Data.SqlDbType.VarChar).Value = tb_Meddelande.Text; myCmd.Parameters.Add( "@kontaktaNamn" , System.Data.SqlDbType.VarChar).Value = tb_Namn.Text; myCmd.Parameters.Add( "@kontaktaEmail" , System.Data.SqlDbType.VarChar).Value = tb_Email.Text; myCmd.Parameters.Add( "@kontaktaMobil" , System.Data.SqlDbType.VarChar).Value = tb_Mobil.Text; myConn.Open(); myCmd.ExecuteNonQuery(); myConn.Close(); |
Svara
Sv: c# lägga till i en access databas.
Ahh.. lite fel kan det bli ibland. har ändrat de fel jag hittade och de som du hade skrivit. Dock får jag ett nytt problem. Felkoden säger så här: "Operationen måste använda en fråga som kan uppdateras."
Hur skulle ni skriva för att uppdatera?
1 2 3 4 5 6 7 8 9 10 11 12 13 | OleDbConnection myConn = new OleDbConnection ( @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" +Server.MapPath( @"\mallsida\databas\mallsida.mdb" )); OleDbCommand myCmd = new OleDbCommand ( @"Insert Into Kontakta(Meddelande, Namn, Email, Mobil) VALUES(@kontaktaMeddelande, @kontaktaNamn, @kontaktaEmail, @kontaktaMobil)" ,myConn); myCmd.Parameters.Add( "@kontaktaMeddelande" , System.Data.SqlDbType.VarChar).Value = tb_Meddelande.Text; myCmd.Parameters.Add( "@kontaktaNamn" , System.Data.SqlDbType.VarChar).Value = tb_Namn.Text; myCmd.Parameters.Add( "@kontaktaEmail" , System.Data.SqlDbType.VarChar).Value = tb_Email.Text; myCmd.Parameters.Add( "@kontaktaMobil" , System.Data.SqlDbType.VarChar).Value = tb_Mobil.Text; myConn.Open(); myCmd.ExecuteNonQuery(); myConn.Close(); |
Svara
Sv: c# lägga till i en access databas.
Det handlar enbart om rättigheterna. Om du kör lokalt kolla där du har din databas om du har lagt till IUSR som användare.
Svara
Sv: c# lägga till i en access databas.
Fungerar det verkligen att blanda Microsoft.Jet.OLEDB.4.0 med
("@kontaktaMeddelande", System.Data.SqlDbType.VarChar).Value = tb_Meddelande.Text;
myCmd.Parameters.Add
Ska det inte vara "System.Data.IleDbType.VarChar"
Gert
Svara