2013-07-20 24 views
-1

嗨有人可以帮助我使用我的连接字符串,我可以浏览我的数据库,但我无法将数据添加到它。在此先感谢我的代码如下,如果有人对我的一些光,这将是伟大的。所以我可以导航,但我无法添加数据或更新数据。我确实有过这样的工作,但自那时起就已经完成了。如果我做了一个备份它:(我的连接字符串不是很正确

Imports System.Data.OleDb 

公共类adminPanel

Dim con As New OleDb.OleDbConnection 
Dim dbProvider As String 
Dim dbSource As String 
Dim ds As New DataSet 
Dim sql As String 
Dim da As New OleDb.OleDbDataAdapter 
Dim inc As Integer 
Dim MaxRows As Integer 
Private Sub adminPanel(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 


    Dim Builder As New OleDb.OleDbConnectionStringBuilder With 
{ 
    .ConnectionString = My.Settings.Database1 
} 
    ' Change it 
    Builder.DataSource = IO.Path.Combine(Application.StartupPath, "Database1.mdb") 
    lblName.Text = LoginForm.txtUserName.Text 
    If lblName.Text = LoginForm.txtUserName.Text Then 
     Builder.Add("Jet OLEDB:Database Password", "password") 
     Using con As New OleDb.OleDbConnection With {.ConnectionString = Builder.ConnectionString} 
      sql = "SELECT * FROM tblContacts" 
      da = New OleDb.OleDbDataAdapter(sql, con) 
      da.Fill(ds, "Database1") 
      'MsgBox("Database is now open") 
      MaxRows = ds.Tables("Database1").Rows.Count 
      inc = -1 

     End Using 
    End If 

End Sub 
Private Sub NavigateRecords() 

    UserName.Text = CStr(ds.Tables("Database1").Rows(inc).Item(1)) 
    UserPassword.Text = CStr(ds.Tables("Database1").Rows(inc).Item(2)) 
    UserTimer.Text = ds.Tables("Database1").Rows(inc).Item(3).ToString 
End Sub 

Private Sub btnUpdate_Click(sender As Object, e As EventArgs) Handles btnUpdate.Click 

    UserName.Text = CStr(ds.Tables("Database1").Rows(inc).Item(1)) 
    UserPassword.Text = CStr(ds.Tables("Database1").Rows(inc).Item(2)) 
    UserTimer.Text = CStr(ds.Tables("Database1").Rows(inc).Item(3)) 
    da.Update(ds, "Database1") 
    MsgBox("Data updated") 
End Sub 


Private Sub btnNext_Click(sender As Object, e As EventArgs) Handles btnNext.Click 
    If inc <> MaxRows - 1 Then 

     inc = inc + 1 

     NavigateRecords() 

    Else 

     MsgBox("No More Rows") 

    End If 
End Sub 

Private Sub btnPrevious_Click(sender As Object, e As EventArgs) Handles btnPrevious.Click 
    If inc > 0 Then 

     inc = inc - 1 

     NavigateRecords() 

    Else 

     MsgBox("First Record") 

    End If 
End Sub 

Private Sub btnLast_Click(sender As Object, e As EventArgs) Handles btnLast.Click 
    If inc <> MaxRows - 1 Then 

     inc = MaxRows - 1 

     NavigateRecords() 

    End If 
End Sub 

Private Sub btnFirst_Click(sender As Object, e As EventArgs) Handles btnFirst.Click 
    If inc <> 0 Then 

     inc = 0 

     NavigateRecords() 

    End If 
End Sub 

Private Sub adminPanel_Load(sender As Object, e As EventArgs) Handles MyBase.Load 

End Sub 


Private Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click 
    MsgBox("Data cleared") 
    btnCommit.Enabled = False 
    btnAddNew.Enabled = True 
    btnUpdate.Enabled = True 
    btnDelete.Enabled = True 

    inc = 0 
    NavigateRecords() 
End Sub 


Private Sub btnAddNew_Click(sender As Object, e As EventArgs) Handles btnAddNew.Click 
    btnCommit.Enabled = True 
    btnUpdate.Enabled = False 
    btnDelete.Enabled = False 
    btnAddNew.Enabled = False 
    UserName.Clear() 
    UserPassword.Clear() 
    UserTimer.Clear() 
End Sub 

Private Sub btnCommit_Click(sender As Object, e As EventArgs) Handles btnCommit.Click 
    If inc <> -1 Then 

     Dim con As New OleDb.OleDbCommandBuilder(da) 
     Dim dsNewRow As DataRow 
     dsNewRow = ds.Tables("Database1").NewRow() 
     dsNewRow.Item("UserName") = UserName.Text 
     dsNewRow.Item("UserPassword") = UserPassword.Text 
     dsNewRow.Item("UserTimer") = UserTimer.Text 
     ds.Tables("Database1").Rows.Add(dsNewRow) 
     da.Update(ds, "Database1") 
     MsgBox("New Record added to the Database") 
     btnCommit.Enabled = False 
     btnAddNew.Enabled = True 
     btnUpdate.Enabled = True > 
     btnDelete.Enabled = True 

    End If 
End Sub 

Private Sub btnDelete_Click(sender As Object, e As EventArgs) Handles btnDelete.Click 
    If MessageBox.Show("Do you really want to Delete this Record?", "Delete", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) = DialogResult.No Then 

     MsgBox("Operation Cancelled") 
     Exit Sub 

    End If 
    Dim cb As New OleDb.OleDbCommandBuilder(da) 

    ds.Tables("Database1").Rows(inc).Delete() 
    MaxRows = MaxRows - 1 

    inc = 0 
    da.Update(ds, "Database1") 
    NavigateRecords() 
End Sub 

末级

+0

请原谅我的微软Access'的'无知,但它不具有相同的权限的概念,'SQL Server'呢?如果是这样,那么你有没有验证你连接到数据库的用户的权限? –

+0

嗨卡尔,我没有权限问题(我不认为),因为我可以连接到数据库。我知道我已连接,因为我可以使用导航按钮滚动列出的用户。即BtnNext,BtnPrevious,BtnLast,BtnFirst全部工作。我只是不能添加用户或更新用户信息。 – user1906671

+2

此问题与连接字符串无关,除非您以只读方式打开连接。另外,请[编辑]删除与您的问题无关的所有代码(如所有空方法)。将所有额外的混乱添加到您的代码是没有用的;它使阅读变得更加困难,并帮助您解决问题。谢谢。 –

回答

0

它无关,与你的连接字符串。在btnUpdate_Click代码不更新数据库,正在更新文本框。

编辑

btnUpdate_Click应改为类似(未测试的代码)

Private Sub btnUpdate_Click(sender As Object, e As EventArgs) Handles btnUpdate.Click 
    ds.Tables("Database1").Rows(inc).Item("UserName") = UserName.Text 
    ds.Tables("Database1").Rows(inc).Item("Password") = UserPassword.Text 
    ds.Tables("Database1").Rows(inc).Item("UserTimer") = UserTimer.Text 
    da.Update(ds, "Database1") 
    MsgBox("Data updated") 
End Sub 
相关问题