Frage zur Datenbankensuche
- VB.NET
- .NET (FX) 4.5–4.8
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von Schamash.
-
-
woeh schrieb:
einen fehler.
Klassiker!
Solche "Fehler" kannst du einfach umgehen indem die deinen CommandText mit Parametern aufbaust.
There is no CLOUD - just other people's computers
Q: Why do JAVA developers wear glasses?
A: Because they can't C#
Daily prayer:
"Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP." -
-
Dafür habe ich von dir zu wenig Informationen
Gewöhnlich überCommand.parameter.add(....)
hängt aber von der Datenbank ab (SQL / Access / Oracle / ....) sind alle leicht unterschiedlich aufgabaut.There is no CLOUD - just other people's computers
Q: Why do JAVA developers wear glasses?
A: Because they can't C#
Daily prayer:
"Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP." -
ist ne access-datenbank, die mir sql abgefragt wird:
ich habe dies hier gefunden und versuche es mal:
ich weiß nicht, ob es was bringt...falls du was besseres weißt... -
Dein
sql
ist der CommandText.
Den weist du in deinem Code einem Command zu. Danach kannst du mitDeinCommand.Parameter.Add(...)
einen Parameter hinzufügen.
Beispiel:
There is no CLOUD - just other people's computers
Q: Why do JAVA developers wear glasses?
A: Because they can't C#
Daily prayer:
"Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP." -
-
1. Command.Parameters -> sauber und empfehlenswert
2. String.Replace("'", "") -> unsauber
Das Like % in deinem SQL hat damit nix zu tun, das bewirkt nur, das die Zeichenfolge vor/nach deines Strings egal ist.
Edit: Ich nehme gerne die .Parameters.AddWithValue() Variante."Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."
Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
Wie man VisualStudio nutzt? => VisualStudio richtig nutzen -
There is no CLOUD - just other people's computers
Q: Why do JAVA developers wear glasses?
A: Because they can't C#
Daily prayer:
"Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP." -
nein, habe ich nicht....ich weiß nur nicht wohin damit.....bin am tüfteln....ich ignoriere nichts
momentan sieht das so aus:
VB.NET-Quellcode
- Public Function DatabaseFillTable(ByVal sql As String) As Boolean
- Try
- con = New OleDb.OleDbConnection(GetConnectionString)
- ds.Tables.Add(dt)
- da = New OleDb.OleDbDataAdapter(sql, con)
- da.Fill(dt)
- Dim cb As New OleDb.OleDbCommandBuilder(da)
- bs.DataSource = dt
- Return True
- Catch ex As Exception
- Log(LogColor.errorInfo, Err.Description, Err.Number)
- Return False
- End Try
- End Function
und wird so aufgerufen:
ich weiß jetzt nicht wohin ich den parameter packen soll....ich gebe es ja zu
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „woeh“ ()
-
woeh schrieb:
ich weiß jetzt nicht wohin ich den parameter packen soll....ich gebe je ja zu
Keine Schande das (noch) nicht zu wissen. Hab den Syntax grad nicht im Kopf (lieg am Strand), aber die andern können da sicher aushelfen
P.S. gewöhn dir dann die Parameter Variante an, ist deutlich komfortabler"Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."
Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
Wie man VisualStudio nutzt? => VisualStudio richtig nutzen -
Das könnte helfen:
msdn.microsoft.com/de-de/library/ebxy9a8b(v=vs.90).aspx
oder
Der OLE DB-.NET-Anbieter unterstützt keine benannten
Parameter für die Übergabe von Parametern an eine SQL-Anweisung oder
gespeicherte Prozedur, die von OleDbCommand aufgerufen wird, wenn
CommandType auf Text festgelegt ist. In diesem Fall muss das
Fragezeichen (?) als Platzhalter verwendet werden. Beispiel:
SELECT * FROM Customers WHERE CustomerID = ?
Die Reihenfolge, in der OleDbParameter-Objekte der
OleDbParameterCollection hinzugefügt werden, muss daher direkt der
Position des Fragezeichenplatzhalters für den Parameter im Befehlstext
entsprechen.
VB.NET-Quellcode
- Dim cmdText As String = "INSERT INTO Customer(UserName, [Password]) VALUES (?,?)"
- Dim cmd As OleDbCommand = New OleDbCommand(cmdText, con)
- cmd.CommandType = CommandType.Text ‘ The default is CommandType.Text
- With cmd.Parameters
- .Add("@p1", OleDbType.VarChar).Value = txtUserName.Text
- .Add("@p2", OleDbType.VarChar).Value = txtPassword.Text
- End With
- cmd.ExecuteNonQuery()
-
-
woeh schrieb:
wie jetzt ?
ihr verwirrt mich immer mehr....
Einfach angewöhnen und zwar ab sofort , mit parametisierten SQL Statements zu arbeiten und dieses SQLStringGefrickel bitte sein lassen -
@woeh
ich hab dein Beispiel mal "korrigiert"
VB.NET-Quellcode
- Public Function DatabaseFillTable() As Boolean
- Dim con As New OleDb.OleDbConnection(GetConnectionString)
- Dim com As New OleDb.OleDbCommand("SELECT * FROM Overview WHERE Filename = @fname AND Path = @pfad")
- com.Parameters.Add("@fname", OleDb.OleDbType.BSTR).Value = File.Name
- com.Parameters.Add("@pfad", OleDb.OleDbType.BSTR).Value = File.DirectoryName
- ds.Tables.Add(dt)
- da = New OleDb.OleDbDataAdapter(com)
- If da.Fill(dt) > 0 Then
- bs.DataSource = dt
- Return True
- Else
- Return False
- End If
- End Function
There is no CLOUD - just other people's computers
Q: Why do JAVA developers wear glasses?
A: Because they can't C#
Daily prayer:
"Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP." -
danke.....direkt versuchen
ich muß mich da reinarbeiten um das zu verstehen.....
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „woeh“ ()
-
Schamash schrieb:
@woeh
ich hab dein Beispiel mal "korrigiert"
VB.NET-Quellcode
- Public Function DatabaseFillTable() As Boolean
- Dim con As New OleDb.OleDbConnection(GetConnectionString)
- Dim com As New OleDb.OleDbCommand("SELECT * FROM Overview WHERE Filename = @fname AND Path = @pfad")
- com.Parameters.Add("@fname", OleDb.OleDbType.BSTR).Value = File.Name
- com.Parameters.Add("@pfad", OleDb.OleDbType.BSTR).Value = File.DirectoryName
- ds.Tables.Add(dt)
- da = New OleDb.OleDbDataAdapter(com)
- If da.Fill(dt) > 0 Then
- bs.DataSource = dt
- Return True
- Else
- Return False
- End If
- End Function
Das wird so nicht funktionieren
Weil:
Der OLE DB-.NET-Anbieter unterstützt keine benannten
Parameter für die Übergabe von Parametern an eine SQL-Anweisung oder
gespeicherte Prozedur, die von OleDbCommand aufgerufen wird, wenn
CommandType auf Text festgelegt ist. In diesem Fall muss das
Fragezeichen (?) als Platzhalter verwendet werden. Beispiel:
SELECT * FROM Customers WHERE CustomerID = ?
Die Reihenfolge, in der OleDbParameter-Objekte der
OleDbParameterCollection hinzugefügt werden, muss daher direkt der
Position des Fragezeichenplatzhalters für den Parameter im Befehlstext
entsprechen.
Das sollte gehen:
-
@EpagneulBreton Ich arbeite seit Jahren mit Access und "@Name" als Parameter. Das ? ist ein Platzhalter die OLEDB Schnitstelle arbeitet aber auch mit @Paramertern. Die Einschränkung der korrekten Reihenfolge bleibt aber bestehen. Ich finde aber das ein @Name schöner zu lesen ist wie ein ?
There is no CLOUD - just other people's computers
Q: Why do JAVA developers wear glasses?
A: Because they can't C#
Daily prayer:
"Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
-
Ähnliche Themen
-
5 Benutzer haben hier geschrieben
- woeh (6)
- Schamash (6)
- EpagneulBreton (3)
- mrMo (2)
- Mono (1)