您好,欢迎访问一九零五行业门户网

vb.net操作数据库之ACCESS(2)

由于图片,声音不能直接存储,这里就要用到数据流方式了。对于.net中的一些术语概念我仍然很迷糊,在学习中。主要我不是专业的, 只是开始学了点vb6代码,然后就用vb.net了,所以目前只是会写点代码,却不知道原理,很惭愧。 哎哟,走题了,赶紧回来,不好意
由于图片,声音不能直接存储,这里就要用到数据流方式了。对于.net中的一些术语概念我仍然很迷糊,在学习中。主要我不是专业的,
只是开始学了点vb6代码,然后就用vb.net了,所以目前只是会写点代码,却不知道原理,很惭愧。
    哎哟,走题了,赶紧回来,不好意思!
好吧,我们先看看图片和声音的存储和读取。看下代码。
’这段代码是插入图片和声音的代码 ’第一个就是图片了,path当然是图片的地址了 picturebyte = my.computer.filesystem.readallbytes(picturepath) ’下面这个就是声音咯,voicepath自然还是声音地址了 voicebyte = my.computer.filesystem.readallbytes(voicepath) ‘这里就开始照旧写sql,区别以前的地方就是这里是用command的一个参数来赋值 str = new system.text.stringbuilder str.append( insert into wordinfo ([picture],[englishname],[chinesename],[voice],[class]) ) str.append( values(?,?,?,?,?)) cmd = new oledb.oledbcommand(str.tostring, dbconnection) cmd.parameters.add(new oledb.oledbparameter) cmd.parameters(0).value = picturebyte cmd.parameters.add(new oledb.oledbparameter) cmd.parameters(1).value = englishname cmd.parameters.add(new oledb.oledbparameter) cmd.parameters(2).value = chinesename cmd.parameters.add(new oledb.oledbparameter) cmd.parameters(3).value = voicebyte cmd.parameters.add(new oledb.oledbparameter) cmd.parameters(4).value = classstring cmd.executenonquery()’sql写完了就开始执行 dbconnection.close() msgbox(save ok, msgboxstyle.information)
看看上面的代码是不是很简单了?就这样就可以存储进数据库咯,我这里还是用access来演示的,sql之类的还要简单。
行了,不说别的了,继续实行功能吧,其他的问题我放在最后交代。
下面我们来看看如何读取,看代码。(怎么有点像武侠上看刀一个味?呵)
dim englishname as string dim picturebyte() as byte dim voicebyte() as byte dim stream as new adodb.stream englishname = trim(searchtbox.text) if englishname then dbconnection.connectionstring = db_cnstr() dbconnection.open() '开始查询 dim sql as new system.text.stringbuilder sql.append( select * from wordinfo) sql.append( where englishname=').append(englishname).append(') dim cmd as new oledb.oledbcommand(sql.tostring, dbconnection) dim rs as oledb.oledbdataadapter = new oledb.oledbdataadapter(cmd) dim dt as new datatable rs.fill(dt) dbconnection.close() '有查到则显示出来 if dt.rows.count = 0 then msgbox(no record , msgboxstyle.critical, error) exit sub else '界面初始化 modifybtn.enabled = true deletebtn.enabled = true 'englishnametbox.enabled = true chinesenametbox.enabled = true classtbox.enabled = true insertpiclinklab.enabled = true insertvoicelinklab.enabled = true testlinklab.enabled = true recordlinklab.enabled = true printbtn.enabled = true searchtbox.text = ’上面你可以不要看了,关键来咯,下面是开始显示图片 picturebyte = dt.rows(0).item(1) picturebox1.image = bitmap.fromstream(new io.memorystream(picturebyte, true), true) englishnametbox.text = dt.rows(0).item(2).tostring chinesenametbox.text = dt.rows(0).item(3).tostring classtbox.text = dt.rows(0).item(5).tostring ‘这里是取出声音文件了,需要交代的是,我研究了很久(套用行家台词),没找到好的方法, ‘好像只能先把声音文件暂存出来,然后你去播放之类的动作。不知道能不能直接播放流文件, ’或者有其他的方法,这个是刚刚想到的,呵呵,以后去尝试下。 with stream .mode = adodb.connectmodeenum.admodereadwrite .type = adodb.streamtypeenum.adtypebinary .open() .write(dt.rows(0).item(4)) .savetofile(c:/test.wav , adodb.saveoptionsenum.adsavecreateoverwrite) end with voicetbox.text = c:/test.wav end if else msgbox(english name is empty, msgboxstyle.critical, error) end if
ok,上面一些话呢就是说了下存储和读取了,其他的更新之类的就不要说了吧?我想大家肯定比我还聪明。
不知道这样用代码来说,能不能帮助到大家清楚这些操作方法呢,希望大家能和我交流,我的空间里有联系方式。
最后呢,我还要啰嗦下,其实图片和声音之类的文件太大,或者你的程序中用到很多的话,还是不要直接存储到数据库里,自己单独用
一个文件夹放置他们,然后呢你就把这些文件的地址保存到数据库里,这样来说就会很合理化了,不会影响到数据库和程序的性能。
我这里只是做一个介绍,大的项目就要有性能方面的考虑了。好了,就说这么多,谢谢!
其它类似信息

推荐信息