这是我代码一部分,我的数据库连接cn是一直打开的,必须查询里有这个表的主键,才能直接update
袁州网站建设公司创新互联公司,袁州网站设计制作,有大型网站制作公司丰富经验。已为袁州近千家提供企业网站建设服务。企业网站搭建\成都外贸网站建设公司要多少钱,请找那个售后服务好的袁州做网站的公司定做!
====================================================
' 用户账号列表
Public Sub UserList()
sql = "select Id, OperatorName, Role, Phone, Address, Remarks from tbOperatorInfo"
'cn = New OleDbConnection(cnStr)
da = New OleDbDataAdapter(sql, cn)
ds = New DataSet
da.Fill(ds, "tbOperatorInfo")
Users.DataGridView1.DataSource = ds.Tables("tbOperatorInfo")
'cn.Close()
End Sub
' 用户账号列表保存
Public Sub UserRecord()
Try
If IsNothing(ds.Tables("tbOperatorInfo").GetChanges) Then Exit Sub
Dim cb = New OleDbCommandBuilder(da)
da.Update(ds.Tables("tbOperatorInfo").GetChanges)
'否则再次刷新表不同步
ds.Tables("tbOperatorInfo").AcceptChanges()
cb.Dispose()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
步骤如下:
1. 先到C:\WINDOWS\system32目录下看看你的系统里是否已经有了MSADODC.ocx和MSDATGRD.ocx这两个文件(多半是没有的),要是有了就直接看第2步吧。
然后放到C:\WINDOWS\system32目录下。
2. 在VS 2005中注册MSADODC.ocx和MSDATGRD.ocx这两个控件。在VS 2005中点击"Tools" -- "Visual Studio 2005 Command Prompt",输入如下命令即可:
regsvr32 msadodc.ocx
regsvr32 msdatgrd.ocx
OleDbConnection conn =new OleDbConnection();
conn.ConnectionString =@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\test.mdb;";
conn.Open();
DataTable dt = conn.GetSchema( "columns", newstring[] { null, null, "表名" } );
conn.Close();
foreach (DataRow row in dt .Rows)
{
row["DESCRIPTION"].ToString(); //用Description 可以获取 字段说明、描述;
}
如果要在 dgcus中显示中文描述而不显示字母,需要自定义数据源DataTable,或者 查询数据的时候自己给字段加别名,如:select ziduan as 字段,ziduan2 as 字段2 from biao,绑定的时候直接绑定中文字段名就可以了
一般设计数据库的时候自动编号是自增的,所以新插入的编号是最大的编号
你可以用
select max(id) from table
来获取这个编号
; 在VB 在 ADO是大家在数据库编程中用得较多的 而在新的中 虽然也可以用它来查询数据库 但在与新的datagrid的绑定中 不能像以前那样使用 datagrid datasoure=rs 而是需要一定的转化 因为新的datagrid datasoure所对应的是 datatable或dataset 而并不是原来的Recordset 所以 在使用中 要把Recordset转换成datatable或 dataset 我们以datatable为例 Function RecordsetToDataTable(ByVal adoRS As ADODB Recordset ByVal strTable As String) adoRS MoveFirst() Dim dt As DataTable dt = New DataTable(strTable) Dim i As Integer Dim strcolname As String Dim t As Type Dim dr As DataRow For i = To adoRS Fields Count strcolname = adoRS Fields(i) Name t = adoRS Fields(i) Value GetType() dt Columns Add(strcolname t) Next While (Not adoRS EOF) dr = dt NewRow() For i = To adoRS Fields Count dr(i) = adoRS Fields(i) Value Next dt Rows Add(dr) adoRS MoveNext() End While Return dt End Function 以上函数是实现将Recordset转换成DataTable 而我们要做的 就是在窗口的load中加入对ADO中的转化后再进行引用 Dim dts As DataTable dts = RecordsetToDataTable(rsuser login ) 其中rsuser为ado Recordset login 为表名 DataGrid DataSource = dts DefaultView lishixinzhi/Article/program/net/201311/13855
我的理解是这样的,当你设置了 ADODC1.CONNECTIONSTRING 属性和 RECORDSOURCE属性时,这个时候ADODC1 并没有连接到数据库,并向数据库提出数据放到 其 RECORDSET 对象中,所以此时 RECORDSET 对象没有被建立和初始化,因此你尝试访问这个对象时就弹出错误了。
你当加入 Set Text1.DataSource = Adodc1 (意为将 TEXT1 绑定到 ADODC1)时,程序运行到这里,ADODC1会自动的连接数据库,并向数据库提取数据记录。因此此时RECORDSET 也就被建立被初始化了,你也就可以访问它了。
还有,你可以用 ADODC1.REFRESH 代替 Set Text1.DataSource = Adodc1 。作用如上。