重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
需要声明使用CommandBuilder对象,你是 SQL 数据库还是 ACCESS 数据库,这两者的对象不一样的。
创新互联建站主要从事做网站、成都做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务五家渠,十余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792
对于:SQL server
Dim Mybuilder As SqlCommandBuilder = New SqlCommandBuilder(da)
da.Update(dt) '使用Update方法实现更新到数据库
对于:ACCESS
Dim Mybuilder As OleDbCommandBuilder = New OleDbCommandBuilder(da)
da.Update(dt) '使用Update方法实现更新到数据库
首先窗口也是一个类,而显示出来的可以操作的那个窗口则是这个类的实例
你的意思是点击a的按钮之后单纯更新b的数据还是要改变b上面的控件显示的数据?
如果是前者,也就是b不用在显示上有任何变动的话,那么:
如果b是a的子窗口,那把b窗口的变量名变成是a的全局变量,然后再b把那个要变的数据设为全局并且是public,这样通过“b窗口变量名.要变的数据”就能访问到b里面的变量
如果b不是别人子窗口那么b就不具备变量名了(比如说你是要从子窗口改变主窗口的变量),那你只能通过b的类名(就是name属性)来访问它的数据,这时就只能把你要改的那个数据设为static了。
如果你懂了前面我说的,然后你问题是后者,就是说要通过a的按钮改变b的控件的状态的话,那么由于b上面的控件不是public的,所以没法访问,那么,
方法一:在实例化b之后,把b上面要改的那个控件作为变量传给a
方法二:有时因为各种原因无法使用方法一,那就只能把你将要做的修改做成b里面一个带变量的函数,但由于静态函数不能调用控件,所以要另外定义一个委托,然后设置一个该委托的静态全局变量,然后再b初始化的时候用这个函数作为变量执行构造函数,这样就能在a调用b的那个更改控件状态的函数了。
简单总结一下:把设计的窗体当成类,把实际操作的窗体看成这些类实体化后的变量,然后通过全局的公共变量、函数进行互动,由于主窗体是系统自动打开的,所以没有变量名,那就只能通过类名来访问,所以要把需要被访问的变量、函数设为静态,但由于静态函数无法访问控件,所以只能设置静态的委托变量并在窗体实例化的时候加载那个要访问的非静态函数。
以下是完整模块
Imports System.Data
Imports System.IO
Imports System.Data.OleDb
Module Module1
Public cn As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\ACCESS数据库.mdb") '定义连接---这里请更改为实际数据库路径及名称
Public DataBaseRST As Integer '用来返回数据库执行结果
Public Function DataModify(ByVal str As String) As Boolean '进行数据库修改操作函数
Dim cmdinsert As New OleDbCommand
Try
cmdinsert.CommandText = str
cmdinsert.Connection = cn
If cn.State = ConnectionState.Closed Then cn.Open()
DataBaseRST = cmdinsert.ExecuteNonQuery() '用来返回执行的结果
cn.Close()
Return True
Catch ex As Exception
MessageBox.Show(Err.Description, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Return False
End Try
End Function
Public Function Search(ByVal str As String, ByVal DGV As DataGridView) As Boolean '查询 str---查询命令,DGV---DataGridView,用来显示数据的控件
Dim tb As New DataTable
Try
Dim ap As New OleDb.OleDbDataAdapter(str, cn)
ap.Fill(tb)
DGV.DataSource = tb
Return True
Catch ex As Exception
MessageBox.Show(Err.Description, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Return False
End Try
End Function
End Module
'以下是调用方法
DataModify(" insert into aa values ('1','2')")'-------这里是数据库更新操作
Search("select bb from aa",DataGridView1)'-----------这里是数据表查询操作
用户信息.UpdateCommand = "update 用户 set grouptype='" ra1 "',usertype ='" ra2 "' where 用户_ID='1'"
Try
objconn.Open()
Dim dt As New DataTable
Dim strsql = "select * from Info"
objadap.SelectCommand = New OleDb.OleDbCommand(strsql, objconn)
objadap.Fill(objDSet, "Info")
objDSet.Clear()
Dim cmdbuilder As New OleDb.OleDbCommandBuilder(objadap)
objadap.UpdateCommand = cmdbuilder.GetUpdateCommand()
‘此处修改数据
objadap.Update(objDSet.Tables("Info"))
objconn.Close()
MsgBox("保存成功", , "提示") '******
Catch ex As Exception
MsgBox(Err.Description, MsgBoxStyle.Critical, Err.Number)
End Try
以下是模块模块1
完整的模块
进口System.Data
进口System.IO
进口System.Data.OleDb
CN作为新OleDb.OleDbConnection (供应商= Microsoft.Jet.OLEDB.4.0;数据源= C:\ ACCESS数据库的。mdb“)'定义连接---改变到实际的数据库路径和名称
DataBaseRST上的作为整数使用返回数据库执行的结果
的公共功能DataModify(BYVAL str作为字符串)作为布尔数据库的操作功能
昏暗的cmdinsert作为新的OleDbCommand
尝试
cmdinsert.CommandText = STR
是用来返回cmdinsert.Connection的= CN
如果cn.State = ConnectionState.Closed cn.Open()
DataBaseRST cmdinsert.ExecuteNonQuery()的执行结果 BR / cn.Close()
,则返回true
赶上前为异常
MessageBox.Show(Err.Description,“错误”,MessageBoxButtons.OK,MessageBoxIcon.Error)
返回False
尝试
端的功能
功能搜索(BYVAL作为字符串,BYVAL的DGV作为DataGridView的)作为布尔查询STR ---查询命令,DGV ---海峡和DataGridView控件来显示数据
昏暗的结核病新的DataTable
昏暗的AP尝试作为的新OleDb.OleDbDataAdapter(STR,CN)
ap.Fill(TB)
DGV作为数据源= TB
返回TRUE,“
抓住前异常
MessageBox.Show(Err.Description,”错误“,MessageBoxButtons.OK,MessageBoxIcon.Error)
则返回false /末尝试
功能
前端模块
以下是通话
DataModify(“插入AA值吗?('1 ','2')“)-------这里是数据库更新操作。
搜索(”选择BB AA“DataGridView1的)-----------数据表的查询操作。