各位老大,我是想更新数据库啊,我贴出代码: ================================ Imports System.Data Imports System.Data.OleDb Imports System.Web.UI Imports System.Web.UI.WebControls Public Class MyWebclass Inherits System.Web.UI.Page Public statues As Label Public ds As New DataSet() Public mydatagrid As DataGrid Public objadapter As OleDbDataAdapter Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim strCon As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("db\NewList.mdb") Dim strSql As String = "select id,subject,content,postime,author from newlist order by id desc" Dim ObjConnection As OleDbConnection = New OleDbConnection(strCon) objadapter = New OleDbDataAdapter(strSql, strCon) Objadapter.Fill(ds) mydatagrid.DataSource = ds.Tables(0).DefaultView mydatagrid.DataBind()End SubPublic Sub Newlist_Edit(ByVal sender As Object, ByVal e As datagridcommandeventargs) mydatagrid.EditItemIndex = CInt(e.item.itemindex) mydatagrid.DataBind() End SubPublic Sub NewList_cancel(ByVal sender As Object, ByVal e As datagridcommandEventArgs) mydatagrid.EditItemIndex = -1 mydatagrid.DataBind() End Sub Public Sub NewList_delete(ByVal sender As Object, ByVal e As datagridcommandEventArgs) Objadapter.DeleteCommand = Objbuilder.GetDeleteCommand() objadapter.Update(ds) mydatagrid.DataBind() End Sub Public Sub NewList_update(ByVal sender As Object, ByVal e As datagridcommandEventArgs) Dim Objbuilder As OleDbCommandBuilder = New OleDbCommandBuilder(Objadapter) 'Objadapter.InsertCommand = Objbuilder.GetInsertCommand() 'Objadapter.DeleteCommand = Objbuilder.GetDeleteCommand() Objadapter.UpdateCommand = Objbuilder.GetUpdateCommand() response.write(Objadapter.updatecommand.commandtext) objadapter.Update(ds) mydatagrid.EditItemIndex = -1 mydatagrid.DataBind() End Sub End Class ================== 可是数据库怎么都不能更新
commandbuilder是这样用的,你好好看看msdn吧!看看下面的代码OleDbConnection myConn = new OleDbConnection(myConnection); OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(); myDataAdapter.SelectCommand = new OleDbCommand(mySelectQuery, myConn); OleDbCommandBuilder custCB = new OleDbCommandBuilder(myDataAdapter); myConn.Open(); DataSet custDS = new DataSet(); myDataAdapter.Fill(custDS, "Customers"); //code to modify data in dataset here //Without the OleDbCommandBuilder this line would fail myDataAdapter.Update(custDS, "Customers"); myConn.Close(); return custDS;
你对commandbuilder理解的不清楚Dim myConn As New OleDbConnection(myConnection) Dim myDataAdapter As New OleDbDataAdapter() myDataAdapter.SelectCommand = New OleDbCommand(mySelectQuery, myConn) Dim custCB As OleDbCommandBuilder = New OleDbCommandBuilder(myDataAdapter) myConn.Open() Dim custDS As DataSet = New DataSet myDataAdapter.Fill(custDS, "Customers") ' Code to modify data in DataSet here ' Without the OleDbCommandBuilder this line would fail. myDataAdapter.Update(custDS, "Customers") myConn.Close()
修改后调用这个事件,把修改结果保存到数据库
把代码全贴出来
================================
Imports System.Data
Imports System.Data.OleDb
Imports System.Web.UI
Imports System.Web.UI.WebControls
Public Class MyWebclass
Inherits System.Web.UI.Page
Public statues As Label
Public ds As New DataSet()
Public mydatagrid As DataGrid
Public objadapter As OleDbDataAdapter
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim strCon As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("db\NewList.mdb")
Dim strSql As String = "select id,subject,content,postime,author from newlist order by id desc"
Dim ObjConnection As OleDbConnection = New OleDbConnection(strCon)
objadapter = New OleDbDataAdapter(strSql, strCon)
Objadapter.Fill(ds)
mydatagrid.DataSource = ds.Tables(0).DefaultView
mydatagrid.DataBind()End SubPublic Sub Newlist_Edit(ByVal sender As Object, ByVal e As datagridcommandeventargs)
mydatagrid.EditItemIndex = CInt(e.item.itemindex)
mydatagrid.DataBind()
End SubPublic Sub NewList_cancel(ByVal sender As Object, ByVal e As datagridcommandEventArgs)
mydatagrid.EditItemIndex = -1
mydatagrid.DataBind()
End Sub
Public Sub NewList_delete(ByVal sender As Object, ByVal e As datagridcommandEventArgs)
Objadapter.DeleteCommand = Objbuilder.GetDeleteCommand()
objadapter.Update(ds)
mydatagrid.DataBind()
End Sub
Public Sub NewList_update(ByVal sender As Object, ByVal e As datagridcommandEventArgs)
Dim Objbuilder As OleDbCommandBuilder = New OleDbCommandBuilder(Objadapter)
'Objadapter.InsertCommand = Objbuilder.GetInsertCommand()
'Objadapter.DeleteCommand = Objbuilder.GetDeleteCommand()
Objadapter.UpdateCommand = Objbuilder.GetUpdateCommand()
response.write(Objadapter.updatecommand.commandtext) objadapter.Update(ds)
mydatagrid.EditItemIndex = -1
mydatagrid.DataBind()
End Sub
End Class
==================
可是数据库怎么都不能更新
看看这个
ms-help://MS.VSCC/MS.MSDNVS.2052/cpref/html/frlrfsystemdataoledboledbcommandbuilderclasstopic.htm
ds.Tables[0].Rows[0][0] = "test";
试试能否更新。
(应该是可以的)
但它是根据你以前的selectcommand和dataset中的改变来自动生成相应的更新语句
现在看来并不好用,各位都用过这个对象吗?
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter();
myDataAdapter.SelectCommand = new OleDbCommand(mySelectQuery, myConn);
OleDbCommandBuilder custCB = new OleDbCommandBuilder(myDataAdapter); myConn.Open(); DataSet custDS = new DataSet();
myDataAdapter.Fill(custDS, "Customers"); //code to modify data in dataset here //Without the OleDbCommandBuilder this line would fail
myDataAdapter.Update(custDS, "Customers"); myConn.Close(); return custDS;
Dim myDataAdapter As New OleDbDataAdapter()
myDataAdapter.SelectCommand = New OleDbCommand(mySelectQuery, myConn)
Dim custCB As OleDbCommandBuilder = New OleDbCommandBuilder(myDataAdapter) myConn.Open() Dim custDS As DataSet = New DataSet
myDataAdapter.Fill(custDS, "Customers") ' Code to modify data in DataSet here ' Without the OleDbCommandBuilder this line would fail.
myDataAdapter.Update(custDS, "Customers") myConn.Close()
OleDbCommandBuilder cb = new OleDbCommandBuilder(DataAdapter1);
DataSet ds = new DataSet();
DataAdapter1.Fill(ds);
ds.Tables[0].Rows[0][0] = "test";
DataAdapter1.Update(ds);
OleDbCommandBuilder cb = new OleDbCommandBuilder(DataAdapter1);
DataSet ds = new DataSet();
DataAdapter1.Fill(ds);
ds.Tables[0].Rows[0][0] = "test";
DataAdapter1.Update(ds);
custCB这个名字你可以随便取
这一句只要执行一次就可以了。
可是我的例子到底应该怎么改?