参考一下下面这段代码就可以了。
Imports SystemData
'引入数据库 *** 作类命名空间
Imports SystemDataOleDb
'引入ADONET *** 作命名空间
Public Class FrmModifystInfo
Inherits SystemWindowsFormsForm
Public ADOcmd As OleDbDataAdapter
Public ds As DataSet = New DataSet()
'建立DataSet对象
Public mytable As DataDataTable
'建立表单对象
Public myrow As DataDataRow
'建立数据行对象
Public rownumber As Integer
'定义一个整型变量来存放当前行数
Public SearchSQL As String
Public cmd As OleDbCommandBuilder
'======================================================
#Region " Windows 窗体设计器生成的代码 "
#End Region
'======================================================
Private Sub FrmModifystInfo_Load(ByVal sender As Object, ByVal e As SystemEventArgs) Handles MyBaseLoad
'窗体的载入
TxtSIDEnabled = False
TxtNameEnabled = False
ComboSexEnabled = False
TxtBornDateEnabled = False
TxtClassnoEnabled = False
TxtRuDateEnabled = False
TxtTelEnabled = False
TxtAddressEnabled = False
TxtCommentEnabled = False '设置信息为只读
Dim tablename As String = "student_Info "
SearchSQL = "select from student_Info "
ExecuteSQL(SearchSQL, tablename) '打开数据库
ShowData() '显示记录
End Sub
Private Sub ShowData()
'在窗口中的textbox中显示数据
myrow = mytableRowsItem(rownumber)
TxtSIDText = myrowItem(0)ToString
TxtNameText = myrowItem(1)ToString
ComboSexText = myrowItem(2)ToString
TxtBornDateText = Format(myrowItem(3), "yyyy-MM-dd ")
TxtClassnoText = myrowItem(4)ToString
TxtTelText = myrowItem(5)ToString
TxtRuDateText = Format(CDate(myrowItem(6)), "yyyy-MM-dd ")
TxtAddressText = myrowItem(7)ToString
TxtCommentText = myrowItem(8)ToString
End Sub
Private Sub BtFirst_Click(ByVal sender As SystemObject, ByVal e As SystemEventArgs) Handles BtFirstClick
'指向第一条数据
rownumber = 0
ShowData()
End Sub
Private Sub BtPrev_Click(ByVal sender As SystemObject, ByVal e As SystemEventArgs) Handles BtPrevClick
'指向上一条数据
BtNextEnabled = True
rownumber = rownumber - 1
If rownumber < 0 Then
rownumber = 0 '如果到达记录的首部,行号设为零
BtPrevEnabled = False
End If
ShowData()
End Sub
Private Sub BtNext_Click(ByVal sender As SystemObject, ByVal e As SystemEventArgs) Handles BtNextClick
'指向上一条数据
BtPrevEnabled = True
rownumber = rownumber + 1
If rownumber > mytableRowsCount - 1 Then
rownumber = mytableRowsCount - 1 '判断是否到达最后一条数据
BtNextEnabled = False
End If
ShowData()
End Sub
Private Sub BtLast_Click(ByVal sender As SystemObject, ByVal e As SystemEventArgs) Handles BtLastClick
'指向最后一条数据
rownumber = mytableRowsCount - 1
ShowData()
End Sub
Private Sub BtDelete_Click(ByVal sender As SystemObject, ByVal e As SystemEventArgs) Handles BtDeleteClick
mytableRowsItem(rownumber)Delete() '删除记录
If MsgBox( "确定要删除改记录吗? ", MsgBoxStyleOKCancel + vbExclamation, "警告 ") = MsgBoxResultOK Then
cmd = New OleDbCommandBuilder(ADOcmd)
'使用自动生成的SQL语句
ADOcmdUpdate(ds, "student_Info ")
BtNextPerformClick()
End If
End Sub
Private Sub BtModify_Click(ByVal sender As SystemObject, ByVal e As SystemEventArgs) Handles BtModifyClick
TxtSIDEnabled = False '关键字段只读
TxtNameEnabled = True '可读写
ComboSexEnabled = True
TxtBornDateEnabled = True
TxtClassnoEnabled = True
TxtRuDateEnabled = True
TxtTelEnabled = True
TxtAddressEnabled = True
TxtCommentEnabled = True
End Sub
Private Sub BtUpdate_Click(ByVal sender As SystemObject, ByVal e As SystemEventArgs) Handles BtUpdateClick
If Not Testtxt(TxtNameText) Then
MsgBox( "请输入姓名! ", vbOKOnly + vbExclamation, "警告 ")
TxtNameFocus()
Exit Sub
End If
If Not Testtxt(ComboSexText) Then
MsgBox( "请选择性别! ", vbOKOnly + vbExclamation, "警告 ")
ComboSexFocus()
Exit Sub
End If
If Not Testtxt(TxtClassnoText) Then
MsgBox( "请选择班号! ", vbOKOnly + vbExclamation, "警告 ")
TxtClassnoFocus()
Exit Sub
End If
If Not Testtxt(TxtTelText) Then
MsgBox( "请输入联系电话! ", vbOKOnly + vbExclamation, "警告 ")
TxtTelFocus()
Exit Sub
End If
If Not Testtxt(TxtAddressText) Then
MsgBox( "请输入家庭住址! ", vbOKOnly + vbExclamation, "警告 ")
TxtAddressFocus()
Exit Sub
End If
If Not IsNumeric(Trim(TxtSIDText)) Then
MsgBox( "请输入数字学号! ", vbOKOnly + vbExclamation, "警告 ")
Exit Sub
TxtSIDFocus()
End If
If Not IsDate(TxtBornDateText) Then
MsgBox( "出生时间应输入日期格式(yyyy-mm-dd)! ", vbOKOnly + vbExclamation, "警告 ")
Exit Sub
TxtBornDateFocus()
End If
If Not IsDate(TxtRuDateText) Then
MsgBox( "入校时间应输入日期格式(yyyy-mm-dd)! ", vbOKOnly + vbExclamation, "警告 ")
TxtRuDateFocus()
Exit Sub
End If
myrowItem(0) = Trim(TxtSIDText)
myrowItem(1) = Trim(TxtNameText)
myrowItem(2) = Trim(ComboSexText)
myrowItem(3) = Trim(TxtBornDateText)
myrowItem(4) = Trim(TxtClassnoText)
myrowItem(5) = Trim(TxtTelText)
myrowItem(6) = Trim(TxtRuDateText)
myrowItem(7) = Trim(TxtAddressText)
myrowItem(8) = Trim(TxtCommentText)
mytableGetChanges()
cmd = New OleDbCommandBuilder(ADOcmd)
'使用自动生成的SQL语句
ADOcmdUpdate(ds, "student_Info ")
'对数据库进行更新
MsgBox( "修改学籍信息成功! ", vbOKOnly + vbExclamation, "警告 ")
TxtNameEnabled = False
ComboSexEnabled = False
TxtBornDateEnabled = False
TxtClassnoEnabled = False
TxtRuDateEnabled = False
TxtTelEnabled = False
TxtAddressEnabled = False
TxtCommentEnabled = False '重新设置信息为只读
End Sub
Private Sub BtCancel_Click(ByVal sender As SystemObject, ByVal e As SystemEventArgs) Handles BtCancelClick
TxtSIDEnabled = False
TxtNameEnabled = False
ComboSexEnabled = False
TxtBornDateEnabled = False
TxtClassnoEnabled = False
TxtRuDateEnabled = False
TxtTelEnabled = False
TxtAddressEnabled = False
TxtCommentEnabled = False
End Sub
Public Function ExecuteSQL(ByVal SQL As String, ByVal table As String)
Try
'建立ADODataSetCommand对象
'数据库查询函数
ADOcmd = New OleDbDataAdapter(SQL, "Provider=MicrosoftJetOLEDB40;Data Source=c:\studentmdb ")
'建立ADODataSetCommand对象
ADOcmdFill(ds, table) '取得表单
mytable = dsTablesItem(0) '取得名为table的表
rownumber = 0 '设置为第一行
myrow = mytableRowsItem(rownumber)
'取得第一行数据
Catch
MsgBox(ErrDescription)
End Try
End Function
End Class
1、打开源数据文件,把首行中的对应的数据,复制行到空白位置。
2、选中J2单元格,单击编辑栏中的"插入函数“,如图示。
3、d出”插入函数“对话框,设置其类别为”逻辑“,并选择列表框中的IF选项。然后确定。
4、在d出的”函数参数“对话框中,设置Logical_test参数为”I2=“”,将Value_if_true设置为“”,即空白内容。
将Value_if_false参数框中输入“VLOOKUP(I2,A2:B2846,2),然后确定。
5、选中J2单元格,注意是J2,不是I2哦(I2是输入证券代码的地方),鼠标移动到单元格右下角,出现十字光标时,按住鼠标左键向右拖动到O2单元格。如图
6、这个时候会发现原来源数据中的C2-G2单元格中的内容就会自动填充到K2-O2单元格中。这个时候,如需要的数据是按源数据中的数据从上 到下排列的,就可以不用修改了。直接重复第5步中的方法,把J2-O2每个单元格下拉填充就完成了。如图示,先把需要的数据列复制到I列中,然后依次下拉 填充。
7、但有时候,需要的不是按照源数据中的排序,比如说,现用的这个例子,如果在I3中,输入000002就会出错。如图示。
8,这是j3中的函数为VLOOKUP(I3,A3:B2847,2)),也就是搜索从A3到B2487区域中 的内容。没有包含A2,所以我们输入000002在源数据中找不到。所以使用这个方法前,要先对需要的数据按源数据进行排序。不然,是不准确的。
Access数据库的加密及数据库的 *** 作权限(表,查询,窗体等)有关数据是保存在Access数据库的系统文件 Systemmdw中的如果你在设计中设置成功的话,实际上系统默认了系统文件的存在并获取各参数,但当编译系统运行或独立发包时,需要给你的系统指明 Systemmdw 文件的存在
所以连接数据库的连接字符如下:
Dim adoConnstring As String
adoConnstring="Provider=MicrosoftJetOLEDB40;Password=xxx;User ID=xxx;Data Source=数据库文件mdb;Persist Security Info=True;Jet OLEDB:System database= 系统文件MDW;Jet OLEDB:Create System Database=True"
其中
User ID=xxx 访问数据库的用户,默认的是 admin
Password=xxx 访问数据库的密码
数据库文件mdb; 数据库文件绝对路径
系统文件MDW Systemmdw 文件的绝对路径
bat 做不到,你可尝试写一个VBS脚本,达到目的
建立一个文本文件,复制下段文本到文本文件中,保存。把该文件名修改为
导出vbs
具体使用时修改下面代码中的三个地方
d:\输出文件名txt 是输出文件的名字
d:\aaamdb 是ACCESS文件的名字
查询1 是你要导出的查询的名字
Dim AccDim rst
Dim db
Dim FSO
Dim txtFile
Dim F
Dim strT
Set Acc = CreateObject("accessapplication")
Set FSO = CreateObject("ScriptingFileSystemObject")
Set txtFile = FSOCreateTextFile("d:\输出文件名txt")
AccOpenCurrentDatabase ("d:\aaaaccdb")
Set db = AccCurrentDb
Set rst = dbOpenRecordset("查询1")
For Each F In rstFields
strT = strT & FName & ","
Next
txtFileWriteLine Left(strT, Len(strT) - 1)
rstMoveFirst
Do While Not rstEOF
strT = ""
For Each F In rstFields
strT = strT & F & ","
Next
txtFileWriteLine Left(strT, Len(strT) - 1)
rstMoveNext
Loop
txtFileClose
rstClose
AccQuit
有两种方法去访问Access数据库的数据。
但是之前一定要开启AdHocremoteQueriesEnabled,因为它是
不同服务器不同数据库两张表连接查询
启用步骤:右击自己的数据库服务器,在右键菜单中选择“方面”
在d出的的窗口中有一个名为方面的下拉列表先项点开后选择“外围应用配置器”选项,然后在下面的方面属性窗口中将AdHocremoteQueriesEnabled的状态改成true点击确定即可。
也可以通过Transact-SQL查询语句:
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
go
第一种方法就是通过Transact-SQL查询语句:
SELECT
FROM OpenDataSource( 'MicrosoftACEOLEDB120',
'Data Source="E:\Databaseaccdb"; Persist Security Info=False;JET OLEDB:Database Password=123;User ID=Admin;')分组表
其中:'MicrosoftACEOLEDB120'为链接的Access 2007 OLEDB访问接口,'Data Source="E:\Databaseaccdb"为你链接的Access文件及具体位置。Persist Security Info=False;表示是否保存安全信息,其实可以简单的理解为"ADO在数据库连接成功后是否保存密码信息"。
JET OLEDB:Database Password=123这是最重要的部分,因为你的Access是加密的,所以必须以访问接口方式获取你的Access密码,而不能简单的直接写Database Password = 123。后面的User ID = Admin表示登陆用户,一般没有特意区分不同用户也可以不写。
第二种方法就是按照SQL Server向导来访问。具体截图如下:
1、选择要导入数据的数据库:
2、选择Access 2007的链接数据源,注意与03的区别,通过“属性”设置参数。
3、以JET OLEDB获取Access的密码。
4、设置完成后,测试连接,如果成功,即可继续进行下面的步骤。
下面的设置目标数据源,也就是SQL Server,以及导入那些列数据等相信你都了解,在此就不再赘述了。
--(1) 查询每个教师的学生人数。
select 教师号,count(0) 人数 from students group by 教师号
--(2) 查询每一个教师的学生的最低分、最高分和平均成绩。
select 教师号,min(成绩) 最低分,max(成绩) 最高分,avg(成绩) 平均成绩 from students group by 教师号
--(3) 查询学号为“030012”的所有教师的名单:教师号、姓名和性别。
select Students教师号,姓名,性别 from Students left join Teachers on Students教师号=Teachers教师号 where 学号='030012';
1
首先确保Access与开发工具Visual Studio都正确安装了,如果没安装的话需要下载相关的软件安装一下,Visual Studio不限制你的版本,2012,2008什么的都行。
2
然后在一个盘符下右键创建一个access文件,比如我创建了一个aaaaccdb ,注意Access07之前你创建的话后缀名都是mdb而07和10版本后缀名已经为accdb了。这个需要你熟悉的,因为不同的后缀名影响下面的连接的。
3
然后我们在Access中添加一个数据表(tb_test),随便加几列内容,如下所示:
4
打开Visual Studio,新建一个Winform窗体,在窗体上放一个button按钮,剩下的就是书写点击按钮后的方法了
5
点击button按钮后我们要做的就是连接数据库,然后查询数据库中我们刚才新建的表,将其赋值给一个DataSet。我们先来看看怎么怎么连接。连接要用到连接字符串,这个就和上面我们说的后缀名有联系了。注意mdb和accdb的连接方式是不一样的,分别如下:
string ConStr_Accdb = @"Provider=MicrosoftACEOLEDB120;Data Source=F:\aaaaccdb;Persist Security Info=False;";
string ConStr_Mdb = @"Provider=MicrosoftACEOLEDB40;Data Source=F:\aaaaccdb;Persist Security Info=False;";
6
拼接好连接字符串以后,下面就是建立连接获取数据了,这我就不多说了,代码截图整体如下:
7
写完了以后你运行以后,可能会报如下的错误:未在本地计算机上注册microsoftace120。这个是由于计算机中缺少驱动程序造成的,去官网下载安装即可:
>
8
到这里连接Access数据库的方法就讲解完了,我们用的是net,你如果用别的语言,步骤也一样,只不过换一下新建连接的方式即可。
END
以上就是关于vb.net数据库 *** 作全部的内容,包括:vb.net数据库 *** 作、EXCEL从数据库提取数据、VB2010 连接带有密码的数据库(*.accdb)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)