質問編集履歴
3
試したうえでの追記を追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -242,6 +242,20 @@
|
|
242
242
|
|
243
243
|
(ユーザテーブルの全件のカウントが返ってくる)
|
244
244
|
|
245
|
+
実行されたSQLを出力すると以下のようでした。
|
246
|
+
|
247
|
+
```SQL
|
248
|
+
|
249
|
+
SELECT COUNT(UserID) AS cnt FROM m_User WHERE UserID = '0001' AND pass= 'a' OR '1'='1'
|
250
|
+
|
251
|
+
```
|
252
|
+
|
245
253
|
それに対して修正例2は0件(該当なし)が返ってきました
|
246
254
|
|
247
|
-
|
255
|
+
実行されたSQLを出力すると以下のようでした。
|
256
|
+
|
257
|
+
```SQL
|
258
|
+
|
259
|
+
SELECT COUNT(UserID) AS cnt FROM m_User WHERE UserID = @ID AND pass= @PASSWORD
|
260
|
+
|
261
|
+
```
|
2
test
CHANGED
File without changes
|
test
CHANGED
@@ -221,3 +221,27 @@
|
|
221
221
|
|
222
222
|
|
223
223
|
知識不足ゆえに質問も的を射ていないかもしれませんが、よろしくお願いします。
|
224
|
+
|
225
|
+
|
226
|
+
|
227
|
+
|
228
|
+
|
229
|
+
---
|
230
|
+
|
231
|
+
|
232
|
+
|
233
|
+
#試した上での追記
|
234
|
+
|
235
|
+
例1、例2、修正例1、修正例2全て試しました
|
236
|
+
|
237
|
+
結果として
|
238
|
+
|
239
|
+
**例1、例2、修正例1はダメ。修正例2はOK**でした。
|
240
|
+
|
241
|
+
修正例1は例1、例2と同じ結果になりました。
|
242
|
+
|
243
|
+
(ユーザテーブルの全件のカウントが返ってくる)
|
244
|
+
|
245
|
+
それに対して修正例2は0件(該当なし)が返ってきました
|
246
|
+
|
247
|
+
なんでそうなるのかはまだ掴みきれてないですが。。。
|
1
test
CHANGED
File without changes
|
test
CHANGED
@@ -154,42 +154,42 @@
|
|
154
154
|
|
155
155
|
Dim pass As String = tx_pass.Text
|
156
156
|
|
157
|
+
Dim sqlstr As String = "SELECT COUNT(UserID) AS cnt FROM m_User WHERE UserID = '@ID' AND pass= '@PASSWORD'"
|
158
|
+
|
159
|
+
sqlstr = sqlstr.Replace("@ID", userid)
|
160
|
+
|
161
|
+
sqlstr = sqlstr.Replace("@PASSWORD", pass)
|
162
|
+
|
163
|
+
'SQL文を実行するコードに続く
|
164
|
+
|
165
|
+
Dim dt As DataTable = SqlExecution(sqlstr)
|
166
|
+
|
167
|
+
```
|
168
|
+
|
169
|
+
###例2
|
170
|
+
|
171
|
+
VB.netで解説されているサイトを探して書いたもの
|
172
|
+
|
173
|
+
何をやっているのかはよくわかってないし、SQL文を作成する部分とSQL文を実行する部分を分けることができないのかな、と思ってしまう。
|
174
|
+
|
175
|
+
```vb.net
|
176
|
+
|
177
|
+
Private Sub bt_login_Click(sender As Object, e As EventArgs) Handles bt_login.Click
|
178
|
+
|
179
|
+
Dim userid As String = tx_userid.Text
|
180
|
+
|
181
|
+
Dim pass As String = tx_pass.Text
|
182
|
+
|
183
|
+
|
184
|
+
|
185
|
+
Dim connectionString As String = "" '接続文字列は今回伏せる
|
186
|
+
|
187
|
+
Dim con As SqlConnection = New SqlConnection(connectionString)
|
188
|
+
|
189
|
+
|
190
|
+
|
157
191
|
Dim sqlstr As String = "SELECT COUNT(UserID) AS cnt FROM m_User WHERE UserID = @ID AND pass= @PASSWORD"
|
158
192
|
|
159
|
-
sqlstr = sqlstr.Replace("@ID", userid)
|
160
|
-
|
161
|
-
sqlstr = sqlstr.Replace("@PASSWORD", pass)
|
162
|
-
|
163
|
-
'SQL文を実行するコードに続く
|
164
|
-
|
165
|
-
Dim dt As DataTable = SqlExecution(sqlstr)
|
166
|
-
|
167
|
-
```
|
168
|
-
|
169
|
-
###例2
|
170
|
-
|
171
|
-
VB.netで解説されているサイトを探して書いたもの
|
172
|
-
|
173
|
-
何をやっているのかはよくわかってないし、SQL文を作成する部分とSQL文を実行する部分を分けることができないのかな、と思ってしまう。
|
174
|
-
|
175
|
-
```vb.net
|
176
|
-
|
177
|
-
Private Sub bt_login_Click(sender As Object, e As EventArgs) Handles bt_login.Click
|
178
|
-
|
179
|
-
Dim userid As String = tx_userid.Text
|
180
|
-
|
181
|
-
Dim pass As String = tx_pass.Text
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
Dim connectionString As String = "" '接続文字列は今回伏せる
|
186
|
-
|
187
|
-
Dim con As SqlConnection = New SqlConnection(connectionString)
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
Dim sqlstr As String = "SELECT COUNT(UserID) AS cnt FROM m_User WHERE UserID = @ID AND pass= @PASSWORD"
|
192
|
-
|
193
193
|
|
194
194
|
|
195
195
|
Dim command As SqlCommand = New SqlCommand(sqlstr, con)
|