vb.net 关于ACCESSvb.net数据库入门经典操作相关问题

vb.net数据库操作_百度知道下次自动登录
现在的位置:
& 综合 & 正文
VB.NET操作ACCESS数据库读取存入图片
一、准备工作
在ACCESS数据库中,将字段声明为 OLE链接 类型
二、将图片框中图片转化成二进制数组的方法
Dim MyStream As New System.IO.MemoryStream
'将图片框中的图片以BMP形式存入内存流中
Me.PictureBoxPeiTu.Image.Save(MyStream, System.Drawing.Imaging.ImageFormat.Bmp)
Dim MyBytes(MyStream.Length) As Byte
MyBytes = MyStream.ToArray()
'调用方法给数组赋值
三、二进制数组转化成图片框中图片的方法
'这个例子是从DATASET中获取一项中的第4个数据项
Dim Picturebyte = allData.Tables("timu").Rows(id - 1).Item(4)
'用得到的BYTE数组创建内存流
Dim ioStream As IO.MemoryStream = New IO.MemoryStream(Picturebyte, True)
'从流中得到BITMAP,注意这里要和上面的类型一致,不一样会报ArgumentException
PictureBoxPeiTu.Image = Bitmap.FromStream(ioStream, True)
-----------------------------------------------我是分割线--------------------------------------------
下面是详细的:
这一部分是有关数据访问的类,主要的操作就是把数据存入刚刚说到的表中,还有一个是把表中数据读出
Imports System.Data.OleDb
Public Class AccessDBTools
Private conn As OleDbConnection
Public Sub New(ByVal dbPath As String)
conn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Application.StartupPath & "\" & dbPath)
Public Sub insertIntoTable(ByVal tableName As String, ByRef options As Object())
'生成SQL字符串,这个字符串可以按自己的需要自行更改,我这里是将4个字段插入数据
Dim str As String = "INSERT INTO " & tableName & " (timu,daan,jiexi,pic)
Dim comm As OleDbCommand
For i As Integer = 0 To options.Count - 1
If i & options.Count - 1 Then
str = str & "?,"
str = str & "?)"
'到这里str会形成:insert into 表名 values(?,?,?,?)这样的字符串,?为占位符,可以加入数据
conn.Open()
comm = New OleDbCommand(str, conn)
'这里的添加数据,这里我用的是OBJECT数组,由外部添加
'如果想自己添加的话,
'comm.Parameters.Add(New OleDb.OleDbParameter)
'comm.Parameters(第几个参数).Value = 值
For i As Integer = 0 To options.Count - 1
comm.Parameters.Add(New OleDb.OleDbParameter)
comm.Parameters(i).Value = options(i)
comm.ExecuteNonQuery() 'sql写完了就开始执行
conn.Close()
MsgBox("Save OK", rmation)
''' &summary&
''' 这是一个查询,最简单的Select了,把所有数据都查询出来
''' &/summary&
''' &param name="tableName"&&/param&
''' &returns&返回一个DataSet&/returns&
''' &remarks&&/remarks&
Public Function selectByTableName(ByVal tableName As String) As DataSet
Dim str As String = "select * from " & tableName
conn.Open()
Dim cmd As New OleDb.OleDbCommand(str, conn)
Dim RS As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(cmd)
Dim DT As New DataSet
RS.Fill(DT, "timu")
conn.Close()
End Function
Imports System.Data.OleDb
Public Class AccessDBTools
Private conn As OleDbConnection
Public Sub New(ByVal dbPath As String)
conn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Application.StartupPath & "\" & dbPath)
Public Sub insertIntoTable(ByVal tableName As String, ByRef options As Object())
'生成SQL字符串,这个字符串可以按自己的需要自行更改,我这里是将4个字段插入数据
Dim str As String = "INSERT INTO " & tableName & " (timu,daan,jiexi,pic)
Dim comm As OleDbCommand
For i As Integer = 0 To options.Count - 1
If i & options.Count - 1 Then
str = str & "?,"
str = str & "?)"
'到这里str会形成:insert into 表名 values(?,?,?,?)这样的字符串,?为占位符,可以加入数据
conn.Open()
comm = New OleDbCommand(str, conn)
'这里的添加数据,这里我用的是OBJECT数组,由外部添加
'如果想自己添加的话,
'comm.Parameters.Add(New OleDb.OleDbParameter)
'comm.Parameters(第几个参数).Value = 值
For i As Integer = 0 To options.Count - 1
comm.Parameters.Add(New OleDb.OleDbParameter)
comm.Parameters(i).Value = options(i)
comm.ExecuteNonQuery() 'sql写完了就开始执行
conn.Close()
MsgBox("Save OK", rmation)
''' &summary&
''' 这是一个查询,最简单的Select了,把所有数据都查询出来
''' &/summary&
''' &param name="tableName"&&/param&
''' &returns&返回一个DataSet&/returns&
''' &remarks&&/remarks&
Public Function selectByTableName(ByVal tableName As String) As DataSet
Dim str As String = "select * from " & tableName
conn.Open()
Dim cmd As New OleDb.OleDbCommand(str, conn)
Dim RS As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(cmd)
Dim DT As New DataSet
RS.Fill(DT, "timu")
conn.Close()
End Function
-----------------------------------------------我是分割线--------------------------------------------
窗体部分比较简单,如下图
这里面除了配图是图片框以外,其它都是RichTextBox,这个是我的功能需要,你可以自行修改。
这部分是窗口内部的代码:
Public Class FormMain
Private accessTool As AccessDBTools = New AccessDBTools("data.accdb")
Private Sub ButtonSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonSave.Click
Dim MyStream As New System.IO.MemoryStream
'下面的方法把PictureBox中的Image属性存入一个流中
Me.PictureBoxPeiTu.Image.Save(MyStream, System.Drawing.Imaging.ImageFormat.Bmp)
'声明字节数组
Dim MyBytes(MyStream.Length) As Byte
'把流变成数组
MyBytes = MyStream.ToArray()
Dim options As Object() = {RichTextBoxTiMu.Rtf, RichTextBoxDaAn.Rtf, RichTextBoxJieXi.Rtf, MyBytes}
'调用上个代码段类中的方法存入数据库
accessTool.insertIntoTable("timu", options)
''' &summary&
''' 这个是我加的功能,点节图片框可以更换图片,可跳过
''' &/summary&
''' &param name="sender"&&/param&
''' &param name="e"&&/param&
''' &remarks&&/remarks&
Private Sub PictureBoxPeiTu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBoxPeiTu.Click
If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
PictureBoxPeiTu.Image = Image.FromFile(OpenFileDialog1.FileName)
''' &summary&
''' 这个代码是输入ID来读取一行数据
''' &/summary&
''' &param name="sender"&&/param&
''' &param name="e"&&/param&
''' &remarks&&/remarks&
Private Sub ButtonRead_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonRead.Click
'调用上个代码段中ACCESS类来读取一个表的数据
Dim allData As DataSet = accessTool.selectByTableName("timu")
'获取输入的ID
Dim id As Integer = CInt(TextBoxID.Text)
'ID范围判断
If id & allData.Tables("timu").Rows.Count Then
MsgBox("你的ID超过最大的范围了!", rmation)
'将一行数据的前三个赋值到相应RichTextBox中
RichTextBoxTiMu.Rtf = allData.Tables("timu").Rows(id - 1).Item(1).ToString()
RichTextBoxDaAn.Rtf = allData.Tables("timu").Rows(id - 1).Item(2).ToString()
RichTextBoxJieXi.Rtf = allData.Tables("timu").Rows(id - 1).Item(3).ToString()
'取最后一个,即图片数据
Dim Picturebyte = allData.Tables("timu").Rows(id - 1).Item(4)
'用这个二进制数据创建一个流
Dim ioStream As IO.MemoryStream = New IO.MemoryStream(Picturebyte, True)
'用流转化成BITMAP并设置到图片框中去
PictureBoxPeiTu.Image = Bitmap.FromStream(ioStream, True)
&&&&推荐文章:
【上篇】【下篇】查看: 4576|回复: 24
在线时间606 小时威望175 金钱3379 人气106 最后登录注册时间帖子精华0积分7769阅读权限80UID163840
系统分析员, 积分 7769, 距离下一级还需 231 积分
擂点0 人气106 威望175 注册时间精华0帖子
本人一直喜欢简单小巧快速便捷的Access
虽然MSSQL与MYSQL等功能更加强大。但是不得不吐槽搭建成本和繁琐程度,MSSQL被注入则会导致系统极不安全
而Access拥有基本使用的功能,就缺少远程访问的支持。然后就百度谷歌必应,结果只找到一个比较靠谱的VB6+OCX控件,据说还有后门
好吧,还是VB6,除了玩玩,开发点小产品换点饭吃恐怕都不那么好办。所以果断自己开发vb.net版本的远程Access。
就此发上来,但愿能暖和暖和VB.NET板块
【使用的技术】
(1)多线程
(2)Socket通信(TCP/IP)
(3)数据源XML导出导入
(4)XML分包
【实现功能】
(1)Access外网共享访问(废话,必须的)
(2)多用户同时连接访问数据库
(3)理论上突破Access最大并发数255,稳定与否待实验
(4)自定义服务器命令
(5)任意语句查询、执行、返回结果表
【结构图解】
【源码:VS%开源】
(335.93 KB, 下载次数: 1126)
22:55 上传
点击文件名下载附件
(1) 基本快要一行一注释
(2) 完整傻瓜化的实例及附带测试数据库
下一步打算封装成DLL,傻瓜化调用
从VB6的Winsock过渡到面向对象的Socket还是改不掉事件驱动的思想。写的较差,不过能稳定运行。使用过的资源也未做释放处理。放到真正服务器上用户量多的情况下可能要留意下未释放资源带来的内存增量。
&有个BUG,,表中又HTML代码的时候传输会部分乱码。。&
总评分:&威望 + 3&
本帖被以下淘专辑推荐:
& |主题: 318, 订阅: 10
& |主题: 136, 订阅: 8
在线时间606 小时威望175 金钱3379 人气106 最后登录注册时间帖子精华0积分7769阅读权限80UID163840
系统分析员, 积分 7769, 距离下一级还需 231 积分
擂点0 人气106 威望175 注册时间精华0帖子
[服务器发往客户端命令]
Start|&&//XML文件流传输开始,文件头
Goon|& & //数据包中间段
|End& & //XML文件传输完毕
Msg|& & //返回客户端的信息,如错误信息、服务器信息等
Error|&&//返回一个错误信息
[客户端发往服务器的命令]
SqlTable|&&//SQL语句,有返回表的语句
SqlEx& && &//SQL语句,无返回表的语句执行
Com|& && & //其他请求命令:
& && && && && && && && &&&
& && && && & GetAN(获得服务器累计被访问次数)
& && && && & GetMem(获得服务器当前占用内存数)
在线时间2440 小时威望208 金钱10793 人气131 最后登录注册时间帖子精华1积分29158阅读权限200UID206406
网络设计师, 积分 29158, 距离下一级还需 2842 积分
擂点0 人气131 威望208 注册时间精华1帖子
在线时间606 小时威望175 金钱3379 人气106 最后登录注册时间帖子精华0积分7769阅读权限80UID163840
系统分析员, 积分 7769, 距离下一级还需 231 积分
擂点0 人气106 威望175 注册时间精华0帖子
【V1.1 版本+源码+DEMO】
(334.93 KB, 下载次数: 456)
14:47 上传
点击文件名下载附件
不再使用延迟的土办法分包发包,确保不受延时及超时的影响
使用分包应答方式确认每个数据包接受,超时时间设置为5秒钟。
在线时间1470 小时威望43 金钱3388 人气19 最后登录注册时间帖子精华0积分16131阅读权限200UID260928
业余VB爱好者
网络设计师, 积分 16131, 距离下一级还需 15869 积分
擂点0 人气19 威望43 注册时间精华0帖子
最近在用ASP.NET 做个网站&&用VB.net 和 SQL server ,其实SQL server 也挺简单的
&我在用 VS2010 ,里面可以直接连接SQL Server 服务器,可以查看表数据,像Access一样修改,挺方便的&
&也没那么麻烦,.net 自带就安装 SQL Server ,安装一个免费版的SQL Server /EXPRESS ,就能用了 几百M而已,常驻就一个sqlserver.exe进程,不用的时候把它停止就行(改成手动模式)&
&每每想到要安装部署一个几GB的东西,常驻一大堆服务,就疼了。。&
在线时间390 小时威望8 金钱438 人气1 最后登录注册时间帖子精华0积分4091阅读权限80UID191800
系统分析员, 积分 4091, 距离下一级还需 3909 积分
擂点0 人气1 威望8 注册时间精华0帖子
sqlite秒杀access
&所以我来帮Access一把..&
在线时间241 小时威望137 金钱1817 人气53 最后登录注册时间帖子精华1积分3412阅读权限40UID181385
高级程序员, 积分 3412, 距离下一级还需 588 积分
擂点0 人气53 威望137 注册时间精华1帖子
vb6远程简单操作Access数据库用XMLHttp Post ASP网页也不错
&我以前就是这么干的,不过嘛,还要IIS&
专业VB控件编写,要求购控件的请联系我,非诚勿扰!Q:
在线时间606 小时威望175 金钱3379 人气106 最后登录注册时间帖子精华0积分7769阅读权限80UID163840
系统分析员, 积分 7769, 距离下一级还需 231 积分
擂点0 人气106 威望175 注册时间精华0帖子
本帖最后由 huangshanvs 于
15:06 编辑
(344.41 KB, 下载次数: 358)
15:01 上传
点击文件名下载附件
【更新:V1.2】
(1)支持表传输时候DES简单加密传输
(2)解决HTML及其他字符导致乱码的问题
【待解决问题】
&&大数据表查询及每次客户端连接查询后,总是无法完全释放内存,导致随着查询和客户端连接次数增加,内存不断增大。使用了Nothing和GC垃圾回收,有效果,但是还是不理想。求高人解决指点。
&&客户端连接后查询返回约1MB左右的表数据。
&&连接前占用:20MB
&&查询时占用:70MB
&&断开时占用:40MB
在线时间606 小时威望175 金钱3379 人气106 最后登录注册时间帖子精华0积分7769阅读权限80UID163840
系统分析员, 积分 7769, 距离下一级还需 231 积分
擂点0 人气106 威望175 注册时间精华0帖子
【查询引擎:DLL+源码】
(132.43 KB, 下载次数: 341)
23:20 上传
点击文件名下载附件
简单调用DLL即可实现远程连接、查询、执行、断开,支持多线程同时查询
在线时间3 小时威望0 金钱187 人气0 最后登录注册时间帖子精华0积分105阅读权限10UID280792
初级程序员, 积分 105, 距离下一级还需 95 积分
擂点0 人气0 威望0 注册时间精华0帖子
(*^__^*) 嘻嘻……我只是拿经验的,顺便鼓励一下啦[求指点]用VB.NET操作Access数据库的数据出错。(代码,图)_vb.net吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:4,733贴子:
[求指点]用VB.NET操作Access数据库的数据出错。(代码,图)收藏
对数据库进行插入操作,提示错误(图)开发工具:Visual Studio 2012(.NET 4.5)数据库:Access 2003 代码:Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim con As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & lujing.Text)
con.Open()
Dim cmd As New OleDbCommand(mingling.Text, con)
cmd.ExecuteNonQuery()End Sub 说明: lujing.Text是数据库路径mingling.Text是SQL语句:INSERT INTO userlist (ID,用户名) VALUES (9,ninth)
首先你要先确定下是Open出错还是cmd.ExecuteNonQuery()出错
我觉得你的SQL语句应该做个修改改成mandText="INSERT INTO userlist (ID,用户名) VALUES ('9','ninth')"
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或查看: 3338|回复: 4
关于:用vb.net操作access2010数据库
阅读权限20
在线时间 小时
自编一个vb.net程序用于操作access2010数据库
例如:现有5个记录: 12345,删除第2条记录后,变成了1345,如何才能保持1234这样的序号相连呢?
还有:现有5个记录:12345,在记录3、4之间插入1条记录后,变成了123645,如何才能保持序号相连 123456 呢
阅读权限50
在线时间 小时
插入或删除后,执行Drop子句,删除自动编号字段,再执行Alter子句,增加自动编号字段,即可实现。
可参考以下帖子:
http://www./thread-.html
如果您还没有注册账号,可点击以下链接先注册,否则看不到附件:
roych邀请您访问Access/Office中国
http://www./?fromuser=roych
阅读权限20
在线时间 小时
& & & & & & & &
附件该用什么打开呢?打不开呢
阅读权限95
在线时间 小时
成都风清扬 发表于
附件该用什么打开呢?打不开呢
附件打开需要密码是吗?
试试看能否打开
阅读权限50
在线时间 小时
& & & & & & & &
本帖最后由 roych 于
23:51 编辑
附件是压缩包,我们公司里面的Win7里是用7zip解压的。
---不对啊。老汉(TodayNew)这个附件是没密码的啊。如果有密码,一般是:
玩命加载中,请稍候
玩命加载中,请稍候
Powered by
本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任! & & 本站特聘法律顾问:徐怀玉律师 李志群律师

我要回帖

更多关于 vb.net sql数据库 的文章

 

随机推荐