求高人指点VB对数据库的增删改查。

zhanghuang7979 2011-09-23 11:28:26
本人刚刚接触VB!如何对数据库进行增删改查操作!请各位大虾指点。
...全文
528 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
coolmoon1973 2011-09-24
  • 打赏
  • 举报
回复
VB访问ORACLE数据库可以用ADO的方法,也可以使用OO40等。如果是ADO,必须安装配置ORACLE客户端,才能在客户端上远程访问ORACLE,当然,连接字符串也要写的正确。
只要连接上了数据库,后面的增删改查这类东西,任何语言都差不多,你就用SQL操作就可以了。
zhanghuang7979 2011-09-23
  • 打赏
  • 举报
回复
感谢你能帮助我!! 我刚刚接触不会连接! 我是玩java的,现在需要vb。
  • 打赏
  • 举报
回复
你会连接不?
zhanghuang7979 2011-09-23
  • 打赏
  • 举报
回复
顶起来!!!!!!!
啊的发哦 2011-09-23
  • 打赏
  • 举报
回复
vb操作ora用oo4o好一点。

你这个不是监听器配置错误,就是VB连接串数据库名给错了。

VB连接ORA和JAVA一个B样,就是关键字换个名。
波导终结者 2011-09-23
  • 打赏
  • 举报
回复
做数据库,拉控件,ADODC。
功能很弱,怪微软,更新不积极。
of123 2011-09-23
  • 打赏
  • 举报
回复 1
你需要学 2 个东西:

1 ADO 数据对象的 Connection(连接)对象和 Recordset(记录集)对象

Connection:
* Set 方法
* Open 方法
* Close 方法
* Execute 方法(可选)

Recordset:
* Set 方法
* Open 方法
* Close 方法

2 SQL 语句

查询、增、删都是在 SQL 命令中实现的。这部分与 VB 无关,只要用数据库,哪一平台都一样。

在记录集对象的 Set 或 Open 方法中,传入相应的 SQL 语句即可。

zhanghuang7979 2011-09-23
  • 打赏
  • 举报
回复
ORA-12514:TNS:listener does not currently know of service requested in connect descriptor 连接数据源报这个错??
贝隆 2011-09-23
  • 打赏
  • 举报
回复
贝隆 2011-09-23
  • 打赏
  • 举报
回复
重点在Sql语句的掌握上
看看这个
zhanghuang7979 2011-09-23
  • 打赏
  • 举报
回复
z_wenqian
谢谢你! 那么要在一个按钮空间里点击增删改查怎么弄呢。
z_wenqian 2011-09-23
  • 打赏
  • 举报
回复
'Select Select_list
'[ INTO new_table ]
'From table_source
'[ Where search_condition ]
'[ GROUP BY group_by_expression ]
'[ HAVING search_condition ]
'[ ORDER BY order_expression [ ASC | DESC ] ]

'CopyFromRecordset方法的使用说明
'expression.CopyFromRecordset(Data, MaxRows, MaxColumns)
'expression : 必需。该表达式返回一个 Range 对象。
'Data : Variant 类型,必需。复制到指定区域的 Recordset 对象。
'MaxRows : Variant 类型,可选。复制到工作表的记录个数上限。如果省略该参数,将复制Recordset对象的所有记录
'MaxColumns : Variant 类型,可选。复制到工作表的字段个数上限。如果省略该参数,将复制Recordset对象的所有字段
'说明:复制从 Recordset 对象的当前行开始的内容。复制完成之后,Recordset 对象的 EOF 属性值为True

'Where的功能就是根据后面的条件,限制与筛选Selet检索的数据,而条件中又可以分为几种:
'1.运算符。>,<,=,>=,<=,<>
'Select 进仓日期,物品名称,进仓数量 From 进仓表 Where 物品名称='铅笔'
'2.Or 与 And
'Select 进仓日期,物品名称,进仓数量 From 进仓表 Where 物品名称='铅笔' And 日期=#2008-10-2#
'3.Between…And
'Select 进仓日期,物品名称,进仓数量 From 进仓表 Where 进仓数量 Between 3 and 6
'4.In。通过In 列出所有可能的值
'Select 进仓日期,物品名称,进仓数量 From 进仓表 Where 物品名称 In ('铅笔','毛笔','钢笔')
'5.Like。通过Like与通配符,列出符合的条件。通配符有%,_,[]三种,不同的数据库可能支持不一样
'Select 进仓日期,物品名称,进仓数量 From 进仓表 Where 物品名称 Like '铅%' 检索出物品名称以铅为开头的数据
'Select 进仓日期,物品名称,进仓数量 From 进仓表 Where 物品名称 Like '_笔%' 检索出物品名称以任一一个字符+笔为开头
'Select 进仓日期,物品名称,进仓数量 From 进仓表 Where 物品名称 Like '[钢,圆珠,毛]%' 检索出物品名称以钢,圆珠,毛为开头

'SQL函数 -预处理检索值的命令
'Sum:对检索的数值求和
'Avg:对检索的数据求平均值
'Min:求检索出数据的最小值
'Max:求检索出数据的最大值
'Count:求检索数据中非空的个数

'Group By - 分类汇总检索的数据
'Select 条件列名1, 函数(汇总列名1) From 表格名 GROUP BY 条件列名1,条件列名2,条件列名3...
'条件列与汇总列都可以有一个或者多个,而汇总列名应该是可以让指定函数的计算类型。
'如果要在Select中列举出来,一定要在 GROUP BY 作为条件列出现,否则就会出错。
'但在GROUP BY 作为条件的列,不一定需要在Select中一一列举出来。

'Having - 筛选汇总后的数据
'Select 条件列名1, 函数(汇总列名1) From 表格名 GROUP BY 条件列名1 HAVING (函数条件)
'Having后面出现的函数条件,应该在Selet中有列出来的,否则会出错。

'Order By - 排序检索的数据
'Select 列名1,列名2…… From 表格名 ORDER BY 排序列名 [ASC|DESC]
'排序列名可以是多列,与检索的列名一样,用“,”分开。

'Select Into - 把检索的数据添加到新的数据表中
'Select 列名1,列名2…… INTO 新表格名 From 表格名
'新表格名在数据库中应该是不存在的,否则就会出错。

'Insert Into Select - 批量添加数据到数据库中
'INSERT INTO 表格名1 (列名11,列名12, ...) Select 列名21, 列名22, ... From 表格名2
'把检索出来的数据,批量添加到数据库中,目标表名在数据库中一定要存在的。

'Top - 限制检索结果的数量
'Select Top 数量 列名1,列名2,…… From 表格名 [Order By 排序列名1,排序列名2,…… [Asc|Desc]]

'Distinct - 筛选出不重复的数据
'Select Distinct 列名 From 表格名

'CREATE TABLE - 创建数据表
'CREATE TABLE 表格名(列名1 列名1的数据类型,列名2 列名2的数据类型,... )

'DROP TABLE - 删除数据表
'DROP TABLE 表格名

'Alter Table - 修改数据表
'增加列:Alter Table 表格名 Add Column 列名 列名的数据类型
'删除列:Alter Table 表格名 Drop Column 列名
'修改数据类型:Alter Table 表格名 Alter Column 列名 列名的数据类型

'INSERT INTO - 向数据库中添加数据
'INSERT INTO 表格名 (列名1, 列名2, ...) VALUES (数值1, 数值2, ...)
'日期数值的表示方式为——#日期#,否则不正确

'UPDATE - 修改数据库中已有的数据
'UPDATE 表格名 SET 列名1 = 数值1, 列名2 = 数值2,…… Where {条件}
'UPDATE如果不指定条件,则会修改指定数据表中所有的数据,而指定条件后,则后修改数据表中所有满足条件的数据

'DELETE From - 删除数据库的数据
'DELETE From 表格名 Where {条件}


'Union 运算符
'UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。
'当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。
'两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。

'EXCEPT 运算符
'EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。
'当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。

'Intersect 运算符
'INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。
'当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。

'使用外连接
'例子:Select a.a, a.b, a.c, b.c, b.d, b.f From a LEFT OUT JOIN b ON a.a = b.c
'1.LEFT (OUTER) JOIN
'左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。
'2.RIGHT (OUTER) JOIN
'右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
'3.FULL/CROSS (OUTER) JOIN
'全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。

'excel使用sql中的JOIN,以下几种形式能用:
'Select * From `表1$` a,`表2$` b Where a.`aaa`=b.`a2`
'Select * From `表1$` a INNER JOIN `表2$` b on a.`aaa`=b.`a2` Where 1=1
'Select * From `表1$` a LEFT JOIN `表2$` b on a.`aaa`=b.`a2`
'Select * From `表1$` a RIGHT OUTER JOIN `表2$` b on a.`aaa`=b.`a2`

'FULL JOIN报无法打开数据库, 原因不明:
'Select * From `表1$` a FULL JOIN `表2$` b
'不过可以用From a,b,这就行了,一个意思.

'JOIN形式必须有ON , 且必须使用JOIN两边的表的字段
'LEFT OUTER JOIN及RIGHT OUTER JOIN中的OUTER可以省
'INNER JOIN中的INNER不能省

'"WHERE 1=1" 表示选择全部
'"WHERE 1=2" 表示全部不选
z_wenqian 2011-09-23
  • 打赏
  • 举报
回复

'需引用 Microsoft ActiveX Data Objects 2.X Library
Sub aaa()
Dim cnn As ADODB.Connection, SQL As String

'链接数据库
Set cnn = New ADODB.Connection
With cnn
.Provider = "microsoft.jet.oledb.4.0"
.Open "你的数据库"
End With

SQL = ""
cnn.Execute SQL

'增加记录
SQL = "Insert Into 表名称 (字段名1,字段名2,.....) Values (值1,值2,......)"
cnn.Execute

'删除记录
SQL = "DELETE From 表名称 Where {条件}"
cnn.Execute

'查找记录
SQL = "Select 字段名1,字段名2,.... From 表名称 Where {查找条件}"
cnn.Execute

'修改记录
SQL = "UPDATE 表名称 SET 字段名 = 值1, 字段名2 = 值2,…… Where {条件}"
cnn.Execute

'关闭数据库
cnn.Close
Set cnn = Nothing
End Sub

就是 SQL 语句的用法
z_wenqian 2011-09-23
  • 打赏
  • 举报
回复
网上有很多例子,不需在这问,主要过程就是
1.连接数据库
2.增删记录
3.关闭数据库

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧