这是我在第一个文本框中输入代码时查看所有下一个文本框和组合框的代码,但它显示了一些错误 [英] This is my code for view all the next text boxes and combobox when I entered a code in first text box but it shows some error

查看:71
本文介绍了这是我在第一个文本框中输入代码时查看所有下一个文本框和组合框的代码,但它显示了一些错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  Imports  System.Data.OleDb 

公共 workerdetails
Dim 提供程序作为 字符串
Dim dataFile 作为 字符串
Dim connString 作为 字符串
公共 myConnection 作为 OleDbConnection = OleDbConnection
公共 dr As OleDbDataReader
私有 Sub workerdetails_Load( ByVal sender As System。 Object ByVal e As System.EventArgs)句柄 MyBase .Load
provider = Provider = Microsoft.ACE.OLEDB.12.0;数据源=
dataFile = D:\ application \ accmasters.accdb ' 将其更改为您的Access数据库位置
connString = provider& dataFile
myConnection.ConnectionString = connString
结束 Sub

私有 Sub viewbutton_Click(发件人作为 对象,e As EventArgs) Handles viewbutton .Click
myConnection.Open()
workername.Clear()
phno1.Clear()
phno2.Clear()
adharno.Clear()
address.Clear()
worktype.Text =
Dim strt As String
strt = SELECT * FROM workers WHERE(worker_code ='&a熔点; workercode.Text& ')
Dim cmd 作为 OleDbCommand = OleDbCommand(strt,myConnection)
dr = cmd.ExecuteReader
while dr.Read()
workername.Text = dr( worker_name)。ToString
phno1.Text = dr( ph_no_1)。ToString
phno2.Text = dr( ph_no_2)。ToString
adharno.Text = dr( adhar_no)。ToString
address.Text = dr( address)。ToString
worktype.Text = dr( work_type)。ToString
结束 while
myConnection.Close()
End Sub
结束





我尝试了什么:



i在我的知识中尝试过最多但是它不起作用所以你能不能帮助我

解决方案

因为我们无法运行那些代码 - 我们没有你的数据 - 我们可以告诉你什么这是错误的,你并没有告诉我们它显示出一些错误实际上是什么。

但是......你需要改变一些事情。

首先,该代码对SQL注入是开放的,这意味着用户只需键入文本框就可以破坏或破坏您的数据库。永远不要连接字符串以形成SQL命令 - 总是使用参数化查询。

其次,不要使用 SELECT * FROM - 总是拼写出来您想要的列的名称。这样你就不会获取你不需要的数据,如果你犯了错误就可以很快得到错误。

第三,Command和Reader对象是稀缺资源,需要被处理当你完成它们时就正确了。

第四,当你只需要一行时为什么要循环?

所以试试:

 strt =   SELECT worker_name,ph_no_1,ph_no_2,adhar_no,address,work_type FROM workers WHERE worker_code = @WC 
使用 cmd 作为 OleDbCommand = OleDbCommand(strt,myConnection)
cmd.Parameters.AddWithValue( @WC,workercode.Text)
使用 dr = cmd.ExecuteReader
如果 dr.Read()
workername.Text = dr( worker_name)。ToString
phno1.Text = dr( ph_no_1)。ToString
phno2.Text = dr( ph_no_2)。ToString
adharno.Text = dr( adhar_no)。ToString
address.Text = dr( address )。ToString
worktype.Text = dr( work_type) .ToString
结束 如果
结束 使用
结束 使用


Imports System.Data.OleDb

Public Class workerdetails
    Dim provider As String
    Dim dataFile As String
    Dim connString As String
    Public myConnection As OleDbConnection = New OleDbConnection
    Public dr As OleDbDataReader
    Private Sub workerdetails_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source ="
        dataFile = "D:\application\accmasters.accdb" ' Change it to your Access Database location
        connString = provider & dataFile
        myConnection.ConnectionString = connString
    End Sub

    Private Sub viewbutton_Click(sender As Object, e As EventArgs) Handles viewbutton.Click
        myConnection.Open()
        workername.Clear()
        phno1.Clear()
        phno2.Clear()
        adharno.Clear()
        address.Clear()
        worktype.Text = ""
        Dim strt As String
        strt = "SELECT * FROM workers WHERE (worker_code= '" & workercode.Text & "')"
        Dim cmd As OleDbCommand = New OleDbCommand(strt, myConnection)
        dr = cmd.ExecuteReader
        While dr.Read()
            workername.Text = dr("worker_name").ToString
            phno1.Text = dr("ph_no_1").ToString
            phno2.Text = dr("ph_no_2").ToString
            adharno.Text = dr("adhar_no").ToString
            address.Text = dr("address").ToString
            worktype.Text = dr("work_type").ToString
        End While
        myConnection.Close()
    End Sub
End Class



What I have tried:

i tried most in my knowledge but it not work so could you please help me

解决方案

Since we can't run that code - we don't have your data - we can;t tell exactly what is wrong with it, and you don't tell us what "it shows some error" actually is.
But...there are a few things you need to change.
The first is that that code is wide open to SQL injection, which means that users can damage or destroy your database just by typing in text boxes. Never, ever concatenate strings to form an SQL command - always use parameterised queries.
Second, don't use SELECT * FROM - always spell out the names of the columns you want. That way you don;t fetch data you don;t need, and you can get an error sooner if you make a mistake.
Third, Command and Reader objects are scarce resources, and need to be Disposed correctly when you are finished with them.
Fourth, why are you looping when you only want one row?
So try:

strt = "SELECT worker_name, ph_no_1, ph_no_2, adhar_no, address, work_type FROM workers WHERE worker_code = @WC"
Using cmd As OleDbCommand = New OleDbCommand(strt, myConnection)
    cmd.Parameters.AddWithValue("@WC", workercode.Text)
    Using dr = cmd.ExecuteReader
        If dr.Read()
            workername.Text = dr("worker_name").ToString
            phno1.Text = dr("ph_no_1").ToString
            phno2.Text = dr("ph_no_2").ToString
            adharno.Text = dr("adhar_no").ToString
            address.Text = dr("address").ToString
            worktype.Text = dr("work_type").ToString
        End If
    End Using
End Using


这篇关于这是我在第一个文本框中输入代码时查看所有下一个文本框和组合框的代码,但它显示了一些错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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