Schema und Daten geladen:
create table Afspraak
(
id int auto_increment primary key,
afspraak_locatie varchar(100) not null, -- just an example (we don't know your datatype)
datum datetime not null -- you said it was a datetime in a comment under your question
);
insert Afspraak (afspraak_locatie,datum) values
('Rome','2016-06-14 13:55:55'),
('London','2016-06-15 15:12:12'),
('Cairo','2016-06-16 07:00:33'),
('Boston','2016-06-17 01:30:00');
select * from afspraak;
+----+------------------+---------------------+
| id | afspraak_locatie | datum |
+----+------------------+---------------------+
| 1 | Rome | 2016-06-14 13:55:55 |
| 2 | London | 2016-06-15 15:12:12 |
| 3 | Cairo | 2016-06-16 07:00:33 |
| 4 | Boston | 2016-06-17 01:30:00 |
+----+------------------+---------------------+
GUI Schicht:
private void button1_Click(object sender, EventArgs e)
{
myDB.FindThatRow("2016-06-16"); // get data
}
DB Schicht:
public void FindThatRow(string theDate)
{ // or all those rows
//
using (MySqlConnection lconn = new MySqlConnection(connString))
{
lconn.Open();
using (MySqlCommand cmd = new MySqlCommand())
{ //
cmd.Connection = lconn;
cmd.CommandText = @"select id,afspraak_locatie FROM Afspraak WHERE date(datum) = @pTheDate";
cmd.Prepare();
cmd.Parameters.AddWithValue("@pTheDate", theDate);
using (MySqlDataReader rs = cmd.ExecuteReader())
{ //
while (rs.Read())
{
int qId = (int)rs.GetInt32("id");
string sViewIt = rs.GetString("afspraak_locatie");
}
}
}
}
}
es die Daten gefunden:
Verwenden Sie die using blocks
wie von jedermann zu empfehlen. Binden Sie Ihre Parameter.
Die Gründe, warum man in Richtung Datenbindungen, im Vergleich zu String-Verkettung, wie in Ihrem Versuch steuern sollte, beinhalten die Funktionalität zu verlieren, was Angebote Bindung wie in Configuring Parameters and Parameter Data Types und anderen Verbindungen in der Nähe oder aus diesem Thema gesehen. Und es verwandelt die Abfrage in die Unordnung, die in PHP mit Verkettung gesehen wird, die ihre moderne Verwendung in Richtung Parameterdatenbindungen auch lenkte.
Stellen Sie sich vor, wie schwierig und Debug-intensive die folgende Abfrage ohne Bindungen würde:
SQL-Injection-Angriffe:
Parameterbindung schützt Sie vor solchen Angriffen, im Gegensatz zu Ihrem Methode der concat. Siehe die folgenden question einschließlich dieser answer für die Verwendung gespeicherter Prozeduren.
Verwenden Sie SQL-Parameter anstelle von String-Verkettung. Wenn Sie eine 'NullReferenceException'' result1' erhalten, ist null, was eine 'List' zu sein scheint, verwenden Sie also 'var result1 = new Liste ();' –
Nun, das erste, was zu tun ist, Ihre Abfrage so zu bauen . Verwenden Sie parametrisiertes SQL. Beachten Sie, dass Sie aufgrund der 'using'-Anweisung nicht' Close' auf Ihrem Reader aufrufen müssen. –
Diese Variablen werden mit dem Programm selbst erstellt. Es gibt keine Benutzerinteraktion. –