vb.net数据库 *** 作

vb.net数据库 *** 作,第1张

参考一下下面这段代码就可以了。

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 Acc

    Dim 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)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9538881.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存