我在数据库中更改密码的功能无效 [英] My function to change a password in the database isn't working
问题描述
每当我尝试更新现有密码并在数据库中更改时,都会收到如下所述的错误(在我试过的内容部分中)。
数据库中的表Customer_Detail如下:
LoginID int PK;
EmailAddress varchar;
密码varchar;
名称varchar;
DOB日期;
我无法弄清楚出了什么问题。
任何帮助都将不胜感激!
我尝试了什么:
这就是我调用函数的方式:
受保护的 Sub Button1_Click(sender 作为 对象,e 作为 EventArgs)句柄 Button1.Click
Dim p As 新 Class1
Dim nbrrowUpdated As Data.DataTable
如果( Me .TextBox2.Text = Me .TextBox3.Text)然后
nbrrowUpdated = p.update(Label2.Text, Me .TextBox3.Text)
Me .GridView1.DataSource = nbrrowUpdated
Me .GridView1.DataBind()
结束 如果
结束 Sub
这是函数的代码:
公共 功能更新( ByVal 电子邮件作为 字符串, ByVal pas 作为 字符串)作为 DataTable
Dim strConnectionString As String
Dim instsqlconnection As SqlConnection
strConnectionString = Integrated Security = SSPI; Initial Catalog = Shop; Data Source =。
instsqlconnection = 新 SqlConnection(strConnectionString)
instsqlconnection.Open()
Dim da As 新 SqlDataAdapter( 选择*来自Customer_Detail,instsqlconnection)
Dim ds 作为 新 DataSet()
da.Fill(ds, login)
Dim tbl < span class =code-keyword> As DataTable = ds.Tables( login)
instsqlconnection.Close()
' ========== ================================================== ======
Dim primarykeycolumns( 0 ) As DataColumn
primarykeycolumns( 0 )= tbl.Columns( LoginID)
tbl.PrimaryKey = primarykeycolumns
' == ================================================== =======================
Dim drCurrent As DataRow
Dim cmdBuilder As SqlCommandBuilder = 新 SqlCommandBuilder(da)
drCurrent = tbl.Rows.Find(Email)
drCurrent.BeginEdit()
drCurrent( 密码)= pas
drCurrent.EndEdit()
< span class =code-comment>' 以下更新方法使数据库更新
da.Update(ds, login)
返回 ds.Tables( 0 )
da.AcceptChangesDuringUpdate = 真
结束 功能
我收到此错误:输入字符串的格式不正确。
此行出现错误:
drCurrent = tbl.Rows.Find(Email)
我通过将LoginID替换为EmailAddress来解决问题:
primarykeycolumns( 0 )= tbl.Columns( LoginID)
密码现在已正确更改,但有其他方法可以解决此问题吗?因为LoginID是sql表中的Primarykey,是否有使用的替代方法:
drCurrent = tbl.Rows.Find(Email)??
Everytime i try to update an existing password and change it in the database t get an error which is stated below( in the "what i tried" section).
The Table Customer_Detail in my database is as follows:
LoginID int PK;
EmailAddress varchar;
Password varchar;
Name varchar;
DOB Date;
I can't figure out what is wrong.
Any help will be appreciated!
What I have tried:
This is how i am calling the function:
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim p As New Class1
Dim nbrrowUpdated As Data.DataTable
If (Me.TextBox2.Text = Me.TextBox3.Text) Then
nbrrowUpdated = p.update(Label2.Text, Me.TextBox3.Text)
Me.GridView1.DataSource = nbrrowUpdated
Me.GridView1.DataBind()
End If
End Sub
This is the code of the function:
Public Function update(ByVal Email As String, ByVal pas As String) As DataTable
Dim strConnectionString As String
Dim instsqlconnection As SqlConnection
strConnectionString = "Integrated Security=SSPI;Initial Catalog=Shop;Data Source=."
instsqlconnection = New SqlConnection(strConnectionString)
instsqlconnection.Open()
Dim da As New SqlDataAdapter("Select * From Customer_Detail", instsqlconnection)
Dim ds As New DataSet()
da.Fill(ds, "login")
Dim tbl As DataTable = ds.Tables("login")
instsqlconnection.Close()
'==================================================================
Dim primarykeycolumns(0) As DataColumn
primarykeycolumns(0) = tbl.Columns("LoginID")
tbl.PrimaryKey = primarykeycolumns
'===========================================================================
Dim drCurrent As DataRow
Dim cmdBuilder As SqlCommandBuilder = New SqlCommandBuilder(da)
drCurrent = tbl.Rows.Find(Email)
drCurrent.BeginEdit()
drCurrent("Password") = pas
drCurrent.EndEdit()
'The following update method make the database update
da.Update(ds, "login")
Return ds.Tables(0)
da.AcceptChangesDuringUpdate = True
End Function
I a getting an this error:"Input string was not in a correct format."
Error appearing at this line:
drCurrent = tbl.Rows.Find(Email)
I fixed the problem by replacing the "LoginID" to "EmailAddress" in :
primarykeycolumns(0) = tbl.Columns("LoginID")
Password is changed correctly now but is there another way to fix this? because LoginID is the Primarykey in the sql table, Is there an alternative to using :
drCurrent = tbl.Rows.Find(Email)??
这篇关于我在数据库中更改密码的功能无效的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!