无法更新asp.net中的访问数据库 [英] Unable to update a access database in asp.net

查看:58
本文介绍了无法更新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屋!

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