質問編集履歴

3

試したうえでの追記を追加

2020/09/02 11:21

投稿

hinano
hinano

スコア2

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

2020/09/02 11:21

投稿

hinano
hinano

スコア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

2020/09/02 03:22

投稿

hinano
hinano

スコア2

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)