我的变量有问题。 [英] Problems with my variables.

查看:85
本文介绍了我的变量有问题。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好!



(我在ASP.NET工作)

我有一个我的变量存在问题。

所以我必须能够从我的数据库中选择存储在ListBox中的特定名称。因此我制作了这个代码,将所有名称添加到ListBox中(我必须添加名称+空格+名字:



 Dim scmdLijstVullen As New SqlCommand 
scmdLijstVullen.Connection = GIPSQL1
scmdLijstVullen.CommandText =SELECT Naam,Voornaam FROM tblVerantwoordelijken
Dim sdrLijstVullen As SqlDataReader
GIPSQL1.Open()
sdrLijstVullen = scmdLijstVullen.ExecuteReader
Do while sdrLijstVullen.Read
lstNaamVerantwoordelijkeBewerken.Items.Add(sdrLijstVullen.Item(0).ToString.Trim&& sdrLijstVullen.Item(1).ToString.Trim)
循环
GIPSQL1.Close()





现在我的问题如下:当我从我的ListBox中选择一个名字,我希望能够从我的数据库中获取项目WHERE Name = Name from database AND Firstname = Firstname from database。

数据库中的所有项目都显示在文本框中。

T.他是我已经制作的代码:100%无效。



 strNaamVolledigBewerken = lstNaamVerantwoordelijkeBewerken.SelectedItem.ToString 
Dim intindexString,intIndexArray As Integer
intIndexArray = 0
Dim arrPositieSpaties()As Integer
strNaamVolledigBewerken = strNaamVolledigBewerken.Trim
for intindexString = 0 to strNaamVolledigBewerken.Length - 1
If strNaamVolledigBewerken.Chars(intindexString)=然后
intIndexArray + = 1
ReDim保留arrPositieSpaties(intIndexArray)
arrPositieSpaties(intIndexArray)= intindexString
结束如果
下一个
Dim intAantalSpaties As Integer
intAantalSpaties = arrPositieSpaties.Length - 1
strVoornaamVBewerken = strNaamVolledigBewerken.Substring(arrPositieSpaties(intAantalSpaties))
strVoornaamVBewerken = strVoornaamVBewerken.Trim
strNaamVBewerken = strNaamVolledigBewerken.Substring(0,arrPositieSpaties(intAantalSpaties) - 1)
strNaamVBewerken = strNaamVBewerken.Trim
尺寸scmdNaamVanVerantwoordelijkeBewerken作为新的SqlCommand
scmdNaamVanVerantwoordelijkeBewerken.Connection = GIPSQL1
scmdNaamVanVerantwoordelijkeBewerken.CommandText = SELECT Naam,Voornaam,adres,Postnummer,Gemeente,Geboortedatum,geslacht,Rijksregisternummer,telefoonnummer,Rekeningnummer FROM tblVerantwoordelijken WHERE Naam ='& Cloetens& '和Voornaam ='& 玛丽亚& '
GIPSQL1.Open()
Dim sdrVerantwoordelijkeID As SqlDataReader
sdrVerantwoordelijkeID = scmdNaamVanVerantwoordelijkeBewerken.ExecuteReader
Do while sdrVerantwoordelijkeID.Read

txtNaamVerantwoordelijke2.Text = sdrVerantwoordelijkeID.Item(1).ToString
txtVoornaamVerantwoordelijke2.Text = sdrVerantwoordelijkeID.Item(2).ToString
txtAdresVerantwoordelijke2.Text = sdrVerantwoordelijkeID.Item(3).ToString
txtPostcodeVerantwoordelijke2.Text =(sdrVerantwoordelijkeID .Item(4))。ToString
txtGmeneeteVerantwoordelijke2.Text = sdrVerantwoordelijkeID.Item(5).ToString
txtGbeoortedatumVerantwoordelijke2.Text = sdrVerantwoordelijkeID.Item(6).ToString
DropDownList2.Items.Add( sdrVerantwoordelijkeID.Item(7))。ToString()
txtRijksregisternummerVerantwoordelijke2.Text = sdrVerantwoordelijkeID.Item(8).ToString
txtTelefoonVerantwoo rdelijke0.Text = sdrVerantwoordelijkeID.Item(9).ToString
txtRekeningnummerVerantwoordelijke2.Text = sdrVerantwoordelijkeID.Item(10).ToString
Loop
GIPSQL1.Close()





所以真正的问题在这里(SQL命令):

 FROM tblVerantwoordelijken WHERE Naam =' & Cloetens& '和Voornaam ='& 玛丽亚& '



当我从我的数据库中输入人名时,填写了texbox,我的程序正常运行。

但是当我尝试用这种方式填写它时:

 FROM tblVerantwoordelijken WHERE Naam ='& strNaamVBewerken&'和Voornaam = ''& strNaamVBewerken&'





所以我的猜测是变量有些问题。



有人可以帮助我吗?

解决方案

尝试使用参数化查询以避免Sql Injection攻击和这些混淆。



这是最安全的方法。尝试在Google上搜索它。你很容易找到例子。

Hello all!

(I'm working in ASP.NET)
I have a problem with my variables.
So I have to be able to choose specific names from my database wich are stored in a ListBox. Therefore I have made this code which adds all the names to the ListBox (I had to add Name + space + First name:

Dim scmdLijstVullen As New SqlCommand
       scmdLijstVullen.Connection = GIPSQL1
       scmdLijstVullen.CommandText = "SELECT Naam, Voornaam FROM tblVerantwoordelijken"
       Dim sdrLijstVullen As SqlDataReader
       GIPSQL1.Open()
       sdrLijstVullen = scmdLijstVullen.ExecuteReader
       Do While sdrLijstVullen.Read
           lstNaamVerantwoordelijkeBewerken.Items.Add(sdrLijstVullen.Item(0).ToString.Trim & " " & sdrLijstVullen.Item(1).ToString.Trim)
       Loop
       GIPSQL1.Close()



Now my problem is the following: when I choose a name from my ListBox, I want to be able to take Items from my Database WHERE Name = Name from database AND Firstname = Firstname from database.
All the Items from the database are shown in textboxes.
This is the code I already made: which doesn't work 100%.

strNaamVolledigBewerken = lstNaamVerantwoordelijkeBewerken.SelectedItem.ToString
      Dim intindexString, intIndexArray As Integer
      intIndexArray = 0
      Dim arrPositieSpaties() As Integer
      strNaamVolledigBewerken = strNaamVolledigBewerken.Trim
      For intindexString = 0 To strNaamVolledigBewerken.Length - 1
          If strNaamVolledigBewerken.Chars(intindexString) = " " Then
              intIndexArray += 1
              ReDim Preserve arrPositieSpaties(intIndexArray)
              arrPositieSpaties(intIndexArray) = intindexString
          End If
      Next
      Dim intAantalSpaties As Integer
      intAantalSpaties = arrPositieSpaties.Length - 1
      strVoornaamVBewerken = strNaamVolledigBewerken.Substring(arrPositieSpaties(intAantalSpaties))
      strVoornaamVBewerken = strVoornaamVBewerken.Trim
      strNaamVBewerken = strNaamVolledigBewerken.Substring(0, arrPositieSpaties(intAantalSpaties) - 1)
      strNaamVBewerken = strNaamVBewerken.Trim
      Dim scmdNaamVanVerantwoordelijkeBewerken As New SqlCommand
      scmdNaamVanVerantwoordelijkeBewerken.Connection = GIPSQL1
      scmdNaamVanVerantwoordelijkeBewerken.CommandText = "SELECT Naam, Voornaam, adres, Postnummer, Gemeente, Geboortedatum, geslacht, Rijksregisternummer, telefoonnummer, Rekeningnummer FROM tblVerantwoordelijken WHERE Naam ='" & "Cloetens" & "' AND Voornaam ='" & "Maria" & "'"
      GIPSQL1.Open()
      Dim sdrVerantwoordelijkeID As SqlDataReader
      sdrVerantwoordelijkeID = scmdNaamVanVerantwoordelijkeBewerken.ExecuteReader
      Do While sdrVerantwoordelijkeID.Read

          txtNaamVerantwoordelijke2.Text = sdrVerantwoordelijkeID.Item(1).ToString
          txtVoornaamVerantwoordelijke2.Text = sdrVerantwoordelijkeID.Item(2).ToString
          txtAdresVerantwoordelijke2.Text = sdrVerantwoordelijkeID.Item(3).ToString
          txtPostcodeVerantwoordelijke2.Text = (sdrVerantwoordelijkeID.Item(4)).ToString
          txtGmeneeteVerantwoordelijke2.Text = sdrVerantwoordelijkeID.Item(5).ToString
          txtGbeoortedatumVerantwoordelijke2.Text = sdrVerantwoordelijkeID.Item(6).ToString
          DropDownList2.Items.Add(sdrVerantwoordelijkeID.Item(7)).ToString()
          txtRijksregisternummerVerantwoordelijke2.Text = sdrVerantwoordelijkeID.Item(8).ToString
          txtTelefoonVerantwoordelijke0.Text = sdrVerantwoordelijkeID.Item(9).ToString
          txtRekeningnummerVerantwoordelijke2.Text = sdrVerantwoordelijkeID.Item(10).ToString
      Loop
      GIPSQL1.Close()



So the real problem is here (SQL command):

FROM tblVerantwoordelijken WHERE Naam ='" & "Cloetens" & "' AND Voornaam ='" & "Maria" & "'"


When I just enter the names from people from my database, the texboxes are filled in, and my programme works.
But when I try to fill it in this way:

FROM tblVerantwoordelijken WHERE Naam ='" & strNaamVBewerken & "' AND Voornaam ='" & strNaamVBewerken & "'"



So my guess is that there is something worng with the variables.

Can someone please help me?

解决方案

Try to use Parameterized Query to avoid Sql Injection attack and these confusions.

That is the safest approach. Try to search on Google about it. You will easily find examples.


这篇关于我的变量有问题。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆