01. februar 2005 - 02:36
Der er
11 kommentarer og 1 løsning
Fejl ved indsættelse af post i tabel i Access
Nedenstående metode indsætter en post i min access-database. Men jeg får fejlen: Exception Details: System.Data.OleDb.OleDbException: Syntax error in INSERT INTO statement. og jeg har nok stirret mig blind på det her. Er der en som kan se, hvor jeg har min fejl henne? Den fejler når den vil insætte posten i ExecuteNonQuery. public void insert(string match, DateTime date, string report, string result, string author) { System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(); conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + HttpContext.Current.Server.MapPath("mindb.mdb") + ";"; string sql = "INSERT INTO reports (match, result, date, report, author) VALUES (@match, @result, @date, @report, @author)"; OleDbCommand cmd = new OleDbCommand (sql, conn); cmd.Parameters.Add("@match", OleDbType.VarChar); cmd.Parameters.Add("@result", OleDbType.VarChar); cmd.Parameters.Add("@date", OleDbType.DBDate); cmd.Parameters.Add("@report", OleDbType.VarChar); cmd.Parameters.Add("@author", OleDbType.VarChar); cmd.Parameters["@match"].Value = match; cmd.Parameters["@result"].Value = result; cmd.Parameters["@date"].Value = date; cmd.Parameters["@report"].Value = report; cmd.Parameters["@author"].Value = author; conn.Open(); cmd.ExecuteNonQuery(); conn.Close(); }
Annonceindlæg fra Kommando
01. februar 2005 - 02:41
#1
Tabellen "reports" som jeg prøver at indsætte i har følgende rækker: id = autonumber match = text result = text date = date/time report = memo author = text
01. februar 2005 - 07:46
#2
Jeg tror at det er et reserveret ord problem.
01. februar 2005 - 07:47
#3
Prøv: string sql = "INSERT INTO reports (match, result, [date], report, author) VALUES (@match, @result, @date, @report, @author)";
01. februar 2005 - 07:48
#4
Og ændre OleDType på report
01. februar 2005 - 07:49
#5
cmd.Parameters.Add("@report", OleDbType.LongVarChar);
01. februar 2005 - 13:58
#6
Nu ser metoden således ud, men det har desværre ikke hjulpet :( public void insert(string match, DateTime date, string report, string result, string author) { System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(); conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + HttpContext.Current.Server.MapPath("pointdb2005.mdb") + ";"; string sql = "INSERT INTO reports (match, result, [date], report, author) VALUES (@match, @result, @date, @report, @author)"; OleDbCommand cmd = new OleDbCommand (sql, conn); cmd.Parameters.Add("@match", OleDbType.VarChar); cmd.Parameters.Add("@result", OleDbType.VarChar); cmd.Parameters.Add("@date", OleDbType.Date); cmd.Parameters.Add("@report", OleDbType.LongVarChar); cmd.Parameters.Add("@author", OleDbType.VarChar); cmd.Parameters["@match"].Value = match; cmd.Parameters["@result"].Value = result; cmd.Parameters["@date"].Value = date; cmd.Parameters["@report"].Value = report; cmd.Parameters["@author"].Value = author; conn.Open(); cmd.ExecuteNonQuery(); conn.Close(); }
01. februar 2005 - 13:59
#7
Jeg får stadig samme fejl...
01. februar 2005 - 14:44
#8
SQL sætningen kommer til at se sådan ud: "INSERT INTO reports (match, result, [date], report, author) VALUES (@match, @result, @date, @report, @author)" Jeg kan virkelig ikke se, hvad der skulle være galt med den...
01. februar 2005 - 15:39
#9
Hvis jeg istedet indsætter en post i en ny tabel "personer" med rækkerne "fornavn" og "efternavn", som begge er af typen VarChar, så virker det fint: public void insert(string match, DateTime date, string report, string result, string author) { System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(); conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + HttpContext.Current.Server.MapPath("pointdb2005.mdb") + ";"; string sql = "INSERT INTO personer (fornavn, efternavn) VALUES (@match, @result)"; OleDbCommand cmd = new OleDbCommand (sql, conn); cmd.Parameters.Add("@match", OleDbType.VarChar); cmd.Parameters.Add("@result", OleDbType.VarChar); cmd.Parameters["@match"].Value = match; cmd.Parameters["@result"].Value = result; conn.Open(); cmd.ExecuteNonQuery(); conn.Close(); } Ovenstående virker helt fint, men jeg kan ikke se, hvad forskellen på det der og det andet skulle være...?
01. februar 2005 - 15:51
#10
Reserveret ord eller data type. Hvad hvis du omdøber det felt der hedder date
01. februar 2005 - 16:05
#11
Ja det har været et reserveret ord - det var bare ikke date. Nu kaldte jeg alle rækker med et "1"-tal bagefter og nu virker det fint... Læg et svar :)
01. februar 2005 - 16:08
#12
ok
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.