最近由于工作需要开始接触vb2010,也叫vb.net。相比vb6.0有面向对象编程的优势。同时接触一门新语言,要更快的实际应用起来,链接数据库是必不可少的。之前用vba写过一个售书工具,正好可以拿来改造成vb.net程序。同时考虑到面向对象编程,尽力使用MVC模式编程。其中链接数据库的部分被写在一个模块中,可以切换选择用ole直连oracle,或者用odbc连接dsn数据源。具体如下:

1.dao层新建一个模块

Option Explicit Off
Imports Microsoft.Data.Odbc
Module dao
Public conndsn As OdbcConnection
Public connole As OleDb.OleDbConnection
Public connectionString1 As String
Public connectionString2 As String = "Provider=MSDAORA;Data Source=xx;User ID=xx;Password=xx;"
Sub OdbcConnection()
connectionString1 = "DSN=sht1;UID=sheet;Pwd=sheet;"
Try
conndsn = New OdbcConnection(connectionString1)
conndsn.Open()
MsgBox("数据库连接成功!", MsgBoxStyle.OkOnly, "连接状态")
Catch ex As Exception
MsgBox("数据库连接发生错误!", MsgBoxStyle.OkOnly, "系统错误")
End
End Try
End Sub
Sub OleConnection()
Try
connole = New System.Data.OleDb.OleDbConnection(connectionString2)
connole.Open()
MsgBox("采用ole数据库连接成功!", MsgBoxStyle.OkOnly, "连接状态")
Catch ex As Exception
MsgBox("数据库连接发生错误!", MsgBoxStyle.OkOnly, "系统错误")
End
End Try
End Sub
Sub CloseConndsn()
conndsn.Close()
conndsn.Dispose()
End Sub
Sub CloseConole()
connole.Close()
connole.Dispose()
End Sub
End Module

2.数据库设计,字典表如下:

TableName

TableId

FieldName TableId Type(Oracle) Primary key

书目表 bookTab 书目号 bookCode varchar2(20) Y
    书名 bookName varchar2(50)  
    定价 price number(5,2)  
    折扣 discount number(3,2)  
    分类 classification varchar2(50)  
    分类号 classificationCode varchar2(50)  
    库存数 inventoryNum INTEGER  
TableName

TableId

FieldName TableId Type(Oracle) Primary key

顾客表 customerTab 顾客号 customerCode varchar2(50) Y
    姓名 name varchar2(50)  
    工号 jobNum varchar2(50)  
TableName

TableId

FieldName TableId Type(Oracle) Primary key

购书经历表 purchaseExperienceTab 顾客号 customerCode varchar2(50) Y
    购书日期 purchaseDate DATE Y
    书单 bookList varchar2(3000)  
    金额 moneyAmount number(5,2)  

建表语句:

DB Create        
create table bookTab (      
  bookCode varchar2(20) not null,  
  bookName varchar2(50),    
  price number(5,2),    
  discount number(3,2),    
  classification varchar2(50),    
  classificationCode varchar2(50),    
  inventoryNum INTEGER    
)        
;        
alter table bookTab add(constraint pk_bookCode primary key(bookCode));
create table customerTab (        
  customerCode varchar2(50) not null,    
  name varchar2(50),      
  jobNum varchar2(50)      
)          
;          
alter table customerTab add(constraint pk_customerCode primary key(customerCode));
create table purchaseExperienceTab (        
  customerCode varchar2(50) not null,      
  purchaseDate DATE not null,      
  bookList varchar2(3000),      
  moneyAmount number(5,2)        
)            
;            
alter table purchaseExperienceTab add(constraint pk_CodeDate primary key(customerCode,purchaseDate));

插入数据:

insert into bookTab (bookCode,bookName,price,discount,classification,classificationCode,inventoryNum)values('9787532489510','老象恩仇记',12.8,0.75,'童话系列','1111',100)

insert into bookTab (bookCode,bookName,price,discount,classification,classificationCode,inventoryNum)values('9787532489527','神奇的警犬-沈石溪激情动物小说',13.85,0.8,'童话系列','1111',200)

insert into bookTab (bookCode,bookName,price,discount,classification,classificationCode,inventoryNum)values('9787533266066','小男生杜歌飞',133.85,0.9,'男生系列','2222',50)

insert into bookTab (bookCode,bookName,price,discount,classification,classificationCode,inventoryNum)values('9787533266067','Public変数/定数の宣',133.85,0.9,'男生系列','2222',50)

insert into customerTab (customerCode,name,jobNum)values('1','汪晓阳','wm139a0')

insert into customerTab (customerCode,name,jobNum)values('02','汪雨','wm110')

3.新建一个bookClass实体类:

Public Class bookClass
Private bookCode As String
Private bookName As String
Private price As Single
Private discount As Single
Private classification As String
Private classificationCode As String
Private inventoryNum As Integer
Sub New()
Me.bookCode = bookCode
Me.bookName = bookName
Me.price = price
Me.discount = discount
Me.classification = classification
Me.classificationCode = classificationCode
Me.inventoryNum = inventoryNum
End Sub Function getBook(ByVal bookCode As String) As bookClass
Return selectBook(bookCode)
End Function
Function getBookCode() As String
Return Me.bookCode
End Function
Function getBookName() As String
Return Me.bookName
End Function
Function getPrice() As Single
Return Me.price
End Function
Function getDiscount() As Single
Return Me.discount
End Function
Function getClassification() As String
Return Me.classification
End Function
Function getClassificationCode() As String
Return Me.classificationCode
End Function
Function getInventoryNum() As Integer
Return Me.inventoryNum
End Function Sub setBookCode(ByVal bookCode As String)
Me.bookCode = bookCode
End Sub
Sub setBookName(ByVal bookName As String)
Me.bookName = bookName
End Sub
Sub setPrice(ByVal price As Single)
Me.price = price
End Sub
Sub setDiscount(ByVal discount As Single)
Me.discount = discount
End Sub
Sub setClassification(ByVal classification As String)
Me.classification = classification
End Sub
Sub setClassificationCode(ByVal classificationCode As String)
Me.classificationCode = classificationCode
End Sub
Sub setInventoryNum(ByVal inventoryNum As Integer)
Me.inventoryNum = inventoryNum
End Sub
End Class

新建customerClass实体类:

Public Class customerClass
Private customerCode As String
Private name As String
Private jobNum As String
Sub New()
Me.customerCode = customerCode
Me.name = name
Me.jobNum = jobNum
End Sub
Function getCustomer(ByVal customerCode As String) As customerClass
Return selectCustomer(customerCode)
End Function
Function getCustomerCode() As String
Return Me.customerCode
End Function
Function getName() As String
Return Me.name
End Function
Function getJobNum() As String
Return Me.jobNum
End Function
Sub setCustomerCode(ByVal customerCode As String)
Me.customerCode = customerCode
End Sub
Sub setName(ByVal name As String)
Me.name = name
End Sub
Sub setJobNum(ByVal jobNum As String)
Me.jobNum = jobNum
End Sub End Class

4.表现层上用vb控件画出窗体很方便快速:

其页面代码如下:

Public Class sellBook

    Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
If e.KeyCode = Keys.Enter Then
Dim book As bookClass
book = New bookClass
book = book.getBook(TextBox1.Text)
DataGridView1.Rows.Add()
DataGridView1.Item("num", DataGridView1.Rows.Count - ).Value = DataGridView1.Rows.Count -
DataGridView1.Item("bookCode", DataGridView1.Rows.Count - ).Value = TextBox1.Text.Trim
DataGridView1.Item("bookName", DataGridView1.Rows.Count - ).Value = book.getBookName()
DataGridView1.Rows(DataGridView1.Rows.Count - ).Cells().Value = book.getPrice()
DataGridView1.Rows(DataGridView1.Rows.Count - ).Cells().Value = book.getDiscount()
Label2.Text = book.getPrice() * book.getDiscount() + Label2.Text
End If
End Sub Private Sub sellBook_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
Call CloseConole()
End Sub Private Sub sellBook_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Call OleConnection()
Label2.Text =
End Sub Private Sub TextBox2_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox2.KeyDown
If e.KeyCode = Keys.Enter Then
Dim customer As New customerClass
customer = customer.getCustomer(TextBox2.Text.Trim)
Label11.Text = customer.getName
Label12.Text = customer.getJobNum
End If
End Sub
End Class

今天就先写到这里,这个页面已经能跑起来了,页面使用了常用的DataGridview控件,输入顾客编号或者书目条码按回车自动检索,合计金额也是自动根据购书单算出的。程序待继续完善。。。

vb.net写的odbc连接dsn数据源和ole链接oracle的小例子的更多相关文章

  1. informix 通过ADO或ODBC连接提取数据时出现中文乱码的解决方法

    最近在做一个项目,是对INFORMIX数据库的数据进行大数据分析,INFORMIX数据库数据有上亿条,没有linux的Root权限和informix数据的生产权限,只能读取.客户要求结果显示在内网wi ...

  2. EntityFramework 使用Linq处理内连接(inner join)、外链接(left/right outer join)、多表查询

    场景:在实际的项目中使用EntityFramework都会遇到使用Ef处理连接查询的问题,这里做一些小例子如何通过Linq语法处理内连接(inner join).外连接(left/right oute ...

  3. VB连接MYSQL数据的方法

    原文链接:http://hanbaohong.iteye.com/blog/704800 第一步:上网http://dev.mysql.com/downloads/connector/odbc/下载m ...

  4. 采用ODAC,ODBC连接Oracle【转】

    采用ODAC,ODBC连接Oracle 在没有装oracle的环境中,偶尔会需要访问数据库(Word文档查看数据,开发项目运行等等),简单介绍我用过的方案. 一:ODAC 1.介绍.ODAC,全称:o ...

  5. MFC通过ODBC连接Mysql程序

    分享到 一键分享 QQ空间 新浪微博 百度云收藏 人人网 腾讯微博 百度相册 开心网 腾讯朋友 百度贴吧 豆瓣网 搜狐微博 百度新首页 QQ好友 和讯微博 更多... 百度分享 MFC通过ODBC连接 ...

  6. DOMINO的JDBC和ODBC连接方法

     利用ODBC实现Domino和关系数据库的互操作 Lotus Domino是当今办公自动化系统的主流开发平台之一,Domino自带一个非关系型数据库–文档型数据库,而目前大部分企业的信息都储存在 ...

  7. PHP 数据库 ODBC创建 ODBC 连接

    PHP 数据库 ODBC ODBC 是一种应用程序编程接口(Application Programming Interface,API),使我们有能力连接到某个数据源(比如一个 MS Access 数 ...

  8. Apache Doris 通过ODBC连接SQL Server

    社区有小伙伴有使用Doris ODBC外表连接SQL Server数据库,使用中遇到不知道驱动怎么安装,苦于我这边也没有SQL Server的环境,正好社区有用户使用了这个数据库,也安装ODBC驱动测 ...

  9. ODBC连接发生错误:未发现数据源名称并且未指定默认驱动程序

    程序在使用ODBC方式连接数据库时发生错误: ERROR [IM002] [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序. 什么原因造成的呢? 本人使用&l ...

随机推荐

  1. JPA--多对多关系

    JPA中,多对多关系用@ManyToMany标示. 关系维护端: package com.yl.demo1.bean.manyTomany; import java.util.HashSet; imp ...

  2. SharePoint 2010 master page 控件介绍(5):其他

    转:http://blog.csdn.net/lgm97/article/details/6409227 <!-- 处理搜索按下"enter"键和点击后退按钮 --> ...

  3. 静态Web开发 JavaScript

    三章 Javascript 1节javascript基本语法和注意事项 脚本,一条条的文字命令.执行时由系统的一个解释器,将其一条条的翻译成机器可识别的指令,然后执行.(不需要编译)常见的脚本:批处理 ...

  4. 17、手势(Gesture)

    课程目标: 学习Android必不可少的手势的功能 了解手势识别原理 , 掌握制作,加载以及识别手势 写出自己的手势Demo 重点难点:手势机制的了解     手势库的制作 考核目标:请说一下手势库的 ...

  5. lightoj 1015

    水题,统计大于0的和. #include<cstdio> int main(){ int t, n, tmp; scanf("%d", &t); for(int ...

  6. Owasp Top 10 Security Risks for 2014

    A1-互联网泄密事件/撞库攻击 以大量的用户数据为基础,利用用户相同的注册习惯(相同的用户名和密码),尝试登陆其它的网站.2011年,互联网泄密事件引爆了整个信息安全 界,导致传统的用户+密码认证的方 ...

  7. 开源了一个iOS输入控件【原】

    1.Github 地址:https://github.com/linyc/InputBarFollowKeyboard 2.说明文档:https://github.com/linyc/InputBar ...

  8. Good Bye 2015 C - New Year and Domino

    题意:计算给定矩形面积(r1,c1),(r2,c2)内长度为2的有多少个?向右或向下计算. 思路:预处理字符.分别向右和向下处理.注意边界情况,可能算多了.用容斥原理计算长度为二的单位. #inclu ...

  9. MyEclipse 10优化技巧

    MyEclipse 10优化速度方案仍然主要有这么几个方面:去除无需加载的模块.取消冗余的配置.去除不必要的检查.关闭更新. 第一步: 去除不需要加载的模块 一个系统20%的功能往往能够满足80%的需 ...

  10. leetcode@ [211] Add and Search Word - Data structure design

    https://leetcode.com/problems/add-and-search-word-data-structure-design/ 本题是在Trie树进行dfs+backtracking ...