无法更新asp.net中的访问数据库 [英] Unable to update a access database in asp.net
本文介绍了无法更新asp.net中的访问数据库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我无法使用VB在asp.net中更新我的访问数据库。
i使用OleDB连接。
它不会显示错误而不会更新数据库。
请帮帮我。
进口 System.Data
< span class =code-keyword> Imports System.Data.OleDb
Public Class Customer_Details
继承 System.Web.UI.Page
Dim sql 作为 字符串
Dim cmd 作为 OleDbCommand
Dim dr As OleDbDataReader
Dim conn As OleDbConnection = 新 OleDb连接(ConfigurationManager.ConnectionStrings( dbconnection)。ConnectionString)
Dim da As OleDbDataAdapter
Dim dt 作为 新 DataTable
受保护 Sub btnback_Click( ByVal sender As < span class =code-keyword> Object , ByVal e As EventArgs)句柄 btnback.Click
Response.Redirect( Customer .aspx)
结束 Sub
受保护的 Sub Page_Load( ByVal sender 正如 对象, ByVal e As System.EventArgs)句柄 我。加载
我 .txtCustNo.Text = Request.QueryString( ID)
load_Cust()' 显示数据文本框的基本信息
btnUpdate .Visible = False
btnCancle.Visible = False
< span class =code-comment>' 菜单显示/隐藏
pnAdmin.Visible = 真正
pnUser.Visible = False
Hhide_pan()
' '
结束 Sub
受保护的 Sub Hhide_pan()
pnAddContact.Visible = 错误
pnAddMachine.Visible = 错误
结束 子
公开 功能 FixNull( ByVal o 作为 对象)作为 对象
如果 IsDBNull(o)然后
返回 没什么
Else
返回 o
结束 如果
结束 功能
受保护的 Sub load_Cust()' 显示数据文本框的基本信息
尝试
sql = SELECT Firstname,Lastname,Company,Address,City,Pincode,State,Email,STD,Phoneno,Mobile,Customertype,Duration,Startdate, Enddate FROM tblCustomer WHERE CustomerID =& txtCustNo.Text&
conn.Open()
cmd = 新 OleDbCommand(sql,conn)
dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)
如果 dr 。读取然后
txtFirstName.Text = dr( 0 )
txtLastName.Text = dr( 1 )
txtCompany.Text = FixNull(dr( 2 ))
txtAddress.Text = dr( 3 )
txtCity.Text = dr( 4 )
txtPincode.Text = dr( 5 )
txtState.Text = dr( 6 )
txtEmail.Text = FixNull(dr( 7 ))
txtSTD.Text = dr( 8 )
txtPhone.Text = dr( 9 )
txtMobile.Text = dr( 10 )
drpCustType.SelectedItem.Text = dr( 11 )
如果 drpCustType.SelectedItem.Text = AMC 然后
drpDuration.SelectedItem.Text = dr( 12 )
txtStartDate.Text = dr( 13 )
txtEndDate.Text = dr( 14 )
结束 如果
结束 如果
Catch ex As 异常
MsgBox(ex.Message)
最后
cmd.Dispose()
conn.Close()
结束 尝试
结束 Sub
受保护的 Sub Update_Customer()
尝试
' 'sql =UPDATE tblCustomer SET [Firstname] ='& txtFirstName.Text& ',[姓氏] ='& txtLastName.Text& ',[公司] ='& txtCompany.Text& ',[地址] ='& txtAddress.Text& ',[城市] ='& txtCity.Text& ',[Pincode] ='& txtPincode.Text& ',[州] ='& txtState.Text& ',[电子邮件] ='& txtEmail.Text& ',[STD] ='& txtSTD.Text& ',[Phoneno] ='& txtPhone.Text& ',[手机] ='& txtMobile.Text& ',[Customertype] ='& drpCustType.SelectedItem.Text& ',[持续时间] ='& drpDuration.SelectedItem.Text& ',[Startdate] ='& txtStartDate.Text& ',[Enddate] ='& txtEndDate.Text& '在哪里[CustomerID] =& txtCustNo.Text&
sql = UPDATE tblCustomer SET Firstname = @FN,Lastname = @LN, Company = @ CO,Address = @ AD,City = @CI,Pincode = @ PI,State = @ST,Email = @EM,STD = @STD,Phoneno = @PN,Mobile = @MN,Customertype = @CT,持续时间= @DU,Startdate = @SD,Enddate = @ED WHERE CustomerID = @CID
conn.Open()
Trace.Write(sql)
cmd = < span class =code-keyword>新 OleDbCommand(sql,conn)
cmd.Parameters.AddWithValue( @ FN,txtFirstName.Text)
cmd.Parameters.AddWithValue( @LN,txtLastName.Text)
cmd.Parameters.AddWithValue( @ CO,txtCompany.Text)
cmd.Parameters.AddWithValue( @ AD,txtAddress.Text)
cmd.Parameters.AddWithValue( @ CI,txtCity.Text)
cmd.Parameters.AddWithValue( @ PI,txtPincode.Text)
cmd.Parameters.AddWithValue( @ ST,txtPincode.Text)
cmd.Parameters.AddWithValue( @EM,txtEmail.Text)
cmd.Parameters.AddWithValue( @ STD,txtSTD.Text)
cmd.Parameters.AddWithValue( @ PN,txtPhone.Text)
cmd.Parameters.AddWithValue( @ MN ,txtMobile.Text)
cmd.Parameters.AddWithValue( @ CT,drpCustType.SelectedItem.Text)
cmd.Parameters.AddWithValue( @ DU,drpDuration.SelectedItem.Text)
cmd .Parameters.AddWithValue( @ SD,txtStartDate.Text)
cmd.Parameters。 AddWithValue( @ ED,txtEndDate.Text)
cmd.Parameters.AddWithValue(< span class =code-string> @ CID,txtCustNo.Text)
cmd.ExecuteNonQuery()
Catch ex As 异常
MsgBox(ex.Message)
< span class =code-keyword>最后
cmd.Dispose()
conn.Close()
结束 尝试
结束 < span class =code-keyword> Sub
受保护的 Sub btnedit_Click( ByVal sender 作为 对象 , ByVal e As EventArgs)句柄 btnedit .Click
btnUpdate.Visible = True
btnCancle.Visible = True
结束 Sub
受保护的 Sub btnUpdate_Click( ByVal sender As 对象, ByVal e As EventArgs)句柄 btnUpdate.Click
' Update_Customer()
UpdateCust()
Response.Redirect( Customer.aspx)
结束 Sub
结束 类
解决方案
哦亲爱的......
不要连接字符串来构建SQL命令。它让您对意外或故意的SQL注入攻击持开放态度,这可能会破坏您的整个数据库。请改用参数化查询。
这可能会同时解决您的问题。
sql = UPDATE tblCustomer SET Firstname = @FN,Lastname = @LN,Company = @CO,... WHERE CustomerID = @ CI
conn.Open()
cmd = 新 OleDbCommand(sql,conn)
cmd .Parameters.AddWithValue( @ FN,txtFirstName.Text)
cmd.Parameters。 AddWithValue( @ LN,txtLastName.Text)
cmd.Parameters.AddWithValue(< span class =code-string> @ CO,txtCompany.Text)
...
cmd.Parameters .AddWithValue( @ CI,txtCustNo.Text)
cmd.ExecuteNonQuery()
只需填写点,然后离开即可。
至少可能是您的数据库没有更新的原因...
1。数据库与项目文件存储在同一目录中
将其移动到不同的目录中(例如:D:\ Mydatabase \
)
2。数据库被其他用户锁定
关闭数据库和项目并重新运行。
3 。连接字符串问题
4。命令文本问题
5。等...
I unable to update my access database in asp.net using VB.
i am using OleDB connection.
It does not show error and not update a database.
Please help me.
Imports System.Data Imports System.Data.OleDb Public Class Customer_Details Inherits System.Web.UI.Page Dim sql As String Dim cmd As OleDbCommand Dim dr As OleDbDataReader Dim conn As OleDbConnection = New OleDbConnection(ConfigurationManager.ConnectionStrings("dbconnection").ConnectionString) Dim da As OleDbDataAdapter Dim dt As New DataTable Protected Sub btnback_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnback.Click Response.Redirect("Customer.aspx") End Sub Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Me.txtCustNo.Text = Request.QueryString("ID") load_Cust() 'Show data Basic Information of Textbox btnUpdate.Visible = False btnCancle.Visible = False 'Menu Show / Hide pnAdmin.Visible = True pnUser.Visible = False Hhide_pan() '' End Sub Protected Sub Hhide_pan() pnAddContact.Visible = False pnAddMachine.Visible = False End Sub Public Function FixNull(ByVal o As Object) As Object If IsDBNull(o) Then Return Nothing Else Return o End If End Function Protected Sub load_Cust() 'Show data Basic Information of Textbox Try sql = "SELECT Firstname, Lastname, Company, Address, City, Pincode, State, Email, STD, Phoneno, Mobile, Customertype, Duration, Startdate, Enddate FROM tblCustomer WHERE CustomerID=" & txtCustNo.Text & "" conn.Open() cmd = New OleDbCommand(sql, conn) dr = cmd.ExecuteReader(CommandBehavior.CloseConnection) If dr.Read Then txtFirstName.Text = dr(0) txtLastName.Text = dr(1) txtCompany.Text = FixNull(dr(2)) txtAddress.Text = dr(3) txtCity.Text = dr(4) txtPincode.Text = dr(5) txtState.Text = dr(6) txtEmail.Text = FixNull(dr(7)) txtSTD.Text = dr(8) txtPhone.Text = dr(9) txtMobile.Text = dr(10) drpCustType.SelectedItem.Text = dr(11) If drpCustType.SelectedItem.Text = "AMC" Then drpDuration.SelectedItem.Text = dr(12) txtStartDate.Text = dr(13) txtEndDate.Text = dr(14) End If End If Catch ex As Exception MsgBox(ex.Message) Finally cmd.Dispose() conn.Close() End Try End Sub Protected Sub Update_Customer() Try ''sql = "UPDATE tblCustomer SET [Firstname] = '" & txtFirstName.Text & "', [Lastname] = '" & txtLastName.Text & "', [Company] = '" & txtCompany.Text & "', [Address] = '" & txtAddress.Text & "', [City] = '" & txtCity.Text & "', [Pincode] = '" & txtPincode.Text & "', [State] = '" & txtState.Text & "', [Email] = '" & txtEmail.Text & "', [STD] = '" & txtSTD.Text & "', [Phoneno] = '" & txtPhone.Text & "', [Mobile] = '" & txtMobile.Text & "', [Customertype] = '" & drpCustType.SelectedItem.Text & "', [Duration] = '" & drpDuration.SelectedItem.Text & "', [Startdate] = '" & txtStartDate.Text & "', [Enddate] = '" & txtEndDate.Text & "' WHERE [CustomerID]=" & txtCustNo.Text & " " sql = "UPDATE tblCustomer SET Firstname = @FN, Lastname = @LN, Company= @CO, Address = @AD, City = @CI, Pincode = @PI, State = @ST, Email = @EM, STD = @STD, Phoneno = @PN, Mobile = @MN, Customertype = @CT, Duration = @DU, Startdate = @SD, Enddate = @ED WHERE CustomerID = @CID" conn.Open() Trace.Write(sql) cmd = New OleDbCommand(sql, conn) cmd.Parameters.AddWithValue("@FN", txtFirstName.Text) cmd.Parameters.AddWithValue("@LN", txtLastName.Text) cmd.Parameters.AddWithValue("@CO", txtCompany.Text) cmd.Parameters.AddWithValue("@AD", txtAddress.Text) cmd.Parameters.AddWithValue("@CI", txtCity.Text) cmd.Parameters.AddWithValue("@PI", txtPincode.Text) cmd.Parameters.AddWithValue("@ST", txtPincode.Text) cmd.Parameters.AddWithValue("@EM", txtEmail.Text) cmd.Parameters.AddWithValue("@STD", txtSTD.Text) cmd.Parameters.AddWithValue("@PN", txtPhone.Text) cmd.Parameters.AddWithValue("@MN", txtMobile.Text) cmd.Parameters.AddWithValue("@CT", drpCustType.SelectedItem.Text) cmd.Parameters.AddWithValue("@DU", drpDuration.SelectedItem.Text) cmd.Parameters.AddWithValue("@SD", txtStartDate.Text) cmd.Parameters.AddWithValue("@ED", txtEndDate.Text) cmd.Parameters.AddWithValue("@CID", txtCustNo.Text) cmd.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) Finally cmd.Dispose() conn.Close() End Try End Sub Protected Sub btnedit_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnedit.Click btnUpdate.Visible = True btnCancle.Visible = True End Sub Protected Sub btnUpdate_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnUpdate.Click 'Update_Customer() UpdateCust() Response.Redirect("Customer.aspx") End Sub End Class解决方案Oh dear...
Do not concatenate strings to build a SQL command. It leaves you wide open to accidental or deliberate SQL Injection attack which can destroy your entire database. Use Parametrized queries instead.
The chances are that that will cure your problem at the same time.
sql = "UPDATE tblCustomer SET Firstname = @FN, Lastname = @LN, Company = @CO, ... WHERE CustomerID=@CI" conn.Open() cmd = New OleDbCommand(sql, conn) cmd.Parameters.AddWithValue("@FN", txtFirstName.Text) cmd.Parameters.AddWithValue("@LN", txtLastName.Text) cmd.Parameters.AddWithValue("@CO", txtCompany.Text) ... cmd.Parameters.AddWithValue("@CI", txtCustNo.Text) cmd.ExecuteNonQuery()Just fill in the dots, and off you go.
It might at least be few reasons of your database isn't being updated...
1. the database is stored in the same directory as project files
Move it into different directory (for example:D:\Mydatabase\
)
2. the database is locked by another user
Close the database and project and re-run it.
3. connection string issues
4. command text issues
5. etc...
这篇关于无法更新asp.net中的访问数据库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文