Jestem nowy w programowaniu i opracowuję nową aplikację bazy danych dla komputerów stacjonarnych w programie Access, próbuję wstawić dane do tabeli. Miałem dwa selektory daty i godziny i odczytałem z niego wartość jako
jobcodedatabean.PaperRecievedate1 = dtpjobcodedate.Value.Date;
jobcodedatabean.Shipmenentdate = dtpshipmentdate.Value.Date;
I przekazałem ziarno danych do funkcji
public void addaction(JobCodeDataBean jobcodedatabean)
{
MessageBox.Show(jobcodedatabean.Shipmenentdate.ToString());
try
{
OleDbConnection oleDbConnection1 = new System.Data.OleDb.OleDbConnection(connString);
oleDbConnection1.Open();
OleDbCommand oleDbCommand1 = new System.Data.OleDb.OleDbCommand("INSERT INTO jobcodemastertable (jobcode ,customercode,totaltrip,shipmentdate,fromPlace, destination,description ,packagetype ,noofpackage ,contactperson ,jobecodedate ) Values ('" + jobcodedatabean.Jobcode + "', '" + jobcodedatabean.Customercode + "' ," + jobcodedatabean.Totaltrip + "," + jobcodedatabean.Shipmenentdate + " ,'" + jobcodedatabean.Fromplace + "','" + jobcodedatabean.Destination + "','" + jobcodedatabean.Description + "','" + jobcodedatabean.Typeofpackage + "','" + jobcodedatabean.Noofpackages + "','" + jobcodedatabean.Contactperson + "'," + jobcodedatabean.PaperRecievedate1 + ") ", oleDbConnection1);
oleDbCommand1.CommandType = CommandType.Text;
oleDbCommand1.ExecuteNonQuery();
oleDbConnection1.Close();
}
catch (Exception)
{
MessageBox.Show(e);
}
Ale otrzymuję wyjątek w zapytaniu
Syntax error (missing operator) in query expression '2/16/2012 12:00:00 AM'.
W dostępie pola daty są w formacie krótkiej daty
Proszę, niech ktoś pomoże rozwiązać mój błąd
2 odpowiedzi
Nieprawidłowe cytaty. Aby uniknąć tego rodzaju błędów, użyj uporządkowanych parametrów:
var myCommand = new OleDbCommand(
"INSERT INTO MyTable(someDateField, someTextField, someNumberField) VALUES (?, ?, ?)"
);
myCommand.Parameters.Add(DateTime.Now);
myCommand.Parameters.Add("Some text");
myCommand.Parameters.Add(123);
Używanie parametrów pomaga również chronić przed atakami wstrzykiwania SQL. W twoim przykładzie, jeśli jeden z ciągów zawiera apostrof, zakończy się niepowodzeniem, chyba że poprawnie przekonwertujesz go na dwa apostrofy. Z parametrami są one automatycznie escapowane poprawnie.
Zapomniałeś podać daty w cudzysłowie:
... ",'" + jobcodedatabean.Shipmenentdate + "' ,'" ...
... "','" + jobcodedatabean.PaperRecievedate1 + "') " ...
Zwróć uwagę na pojedyncze cudzysłowy wokół obu dat.
Podobne pytania
Nowe pytania
c#
C # (wymawiane „patrz ostro”) jest językiem programowania wysokiego poziomu, statycznie typowanym, wieloparadygmatowym opracowanym przez firmę Microsoft. Kod C # zwykle jest przeznaczony dla rodziny narzędzi Microsoft .NET i czasów wykonywania, do których należą między innymi .NET Framework, .NET Core i Xamarin. Użyj tego tagu w przypadku pytań dotyczących kodu napisanego w C # lub C # formalnej specyfikacji.