ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: hyefeifei

[原创] 再讲ADO

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-4-18 21:41 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖已被收录到知识树中,索引项:ADO技术
liu-aguang 发表于 2016-4-18 21:32
兄台,请教一个关于Sql数据库的问题: 有一数据库文件,扩展名为mdf,只知道它来自一个图书管理软件(该软 ...

打开ssms,附加数据库,然后取数据。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2016-4-18 21:56 | 显示全部楼层
感谢分享   学习中

TA的精华主题

TA的得分主题

发表于 2016-4-18 22:02 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
hyefeifei 发表于 2016-4-18 21:41
打开ssms,附加数据库,然后取数据。

谢谢解答。本人对Sql数据库基本不懂,是否在其它任何一台电脑上安装一个SQL数据库软件,就可以用SSMS去打开并取数据?(我的疑虑是看到一些ADO连接数据库的例子中,都用了账户和密码之类的)

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-4-18 23:27 | 显示全部楼层
liu-aguang 发表于 2016-4-18 22:02
谢谢解答。本人对Sql数据库基本不懂,是否在其它任何一台电脑上安装一个SQL数据库软件,就可以用SSMS去打 ...

登录账户密码都记录在master里,你这个普通数据库无所谓什么密码,按我说的,安装sqlserver2008,然后
把mdf附加就行了,你那个文件不保密的话,也可以传上来看看。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2016-4-18 23:54 | 显示全部楼层
hyefeifei 发表于 2016-4-18 23:27
登录账户密码都记录在master里,你这个普通数据库无所谓什么密码,按我说的,安装sqlserver2008,然后
把 ...

如果是这样那就太好了。这是学校图书室的一个图书信息数据,没有什么保密的,后面如果搞不定,一定请教兄台帮助,再次感谢!

TA的精华主题

TA的得分主题

发表于 2016-4-19 09:45 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
hyefeifei 发表于 2016-4-18 23:27
登录账户密码都记录在master里,你这个普通数据库无所谓什么密码,按我说的,安装sqlserver2008,然后
把 ...

学习,一般附加数据库都可以打开数据表,如果要继续用软件是不是要初始化登录用户与权限?

TA的精华主题

TA的得分主题

发表于 2016-4-19 09:47 | 显示全部楼层
hyefeifei 发表于 2016-4-18 18:18
当然可以,不过,除非你的sql2000是正版的,否则这样有何意义呢?
sql2000的效率性能差得太多,这对中小 ...

谢谢指导,看来还是装个2008版的

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-4-19 15:13 | 显示全部楼层
本帖最后由 hyefeifei 于 2016-5-16 15:00 编辑

如何更新数据库表?

与插入 删除 相比 ,更新记录情况稍复杂一些。
我们如何更新记录呢?这里只讲一下用操作查询和客户端临时表两种方式更新记录:

一、操作查询

图1

2.jpg


图1 为数据库表voyty 表的一部分,现在假如我们要把红框处amount的值由97改为197,那么该如何办呢?

对sql语句略熟的人都马上会想到这样做:

  1. Set conn =createobject(“adodb.connection”)
  2. ……
  3. strSQL = " UPDATE VoyTY SET amount = 197 WHERE voy='北星横栈- 0001I / 0002O'"
  4. Conn.Execute strSQL, lrstaff, adExecuteNoRecords
复制代码

这样利用dml语句直接修改数据库是最为常用的方式,如果你的程序是单用户的,建议采取这种方式。

但是,采用sql数据库,你总会有写多用户使用程序的进候,如果是多用户程序呢?

考虑一下这种情境,你正在客户端浏览数据,发现红框处的值为97,你想把它改为197,但此时,另一个人也在浏览记录,在你要修改数据时,他先你一步把97改为了180,此时怎么办?

当然你可以在你浏览数据的时候,把表锁住,禁止别人修改,但这样失之于灵活,一般不推荐。
所以你现在就面临着如何处理两个人或者多个人修改数据冲突的情况。

1、假如你就是要把amount的值改为197,那么你可以执行:
  1. UPDATE VoyTY SET amount = 197 WHERE voy='北星横栈- 0001I / 0002O'
复制代码
别人的修改会被覆盖,也就意味着以最后修改的人为准(就是说多个人都要改数据,谁最后提交,结果就是谁的)。

2、假如你是只有当amount为97时才修改(也就是以第一个修改的人为准),那么你可以执行:
  1. UPDATE VoyTY SET amount = 197 WHERE voy='北星横栈- 0001I / 0002O'  and amount=97
复制代码

3、假如你不是想把值从97改到197,而是要在原值的基础上加100,你可以执行:

  1. UPDATE VoyTY SET amount = amount+100 WHERE voy='北星横栈- 0001I / 0002O'
复制代码

这样的话,也就意味着任何人的修改都会影响结果。

操作查询的问题之一是,假如别人修改了记录,你并不会知道,举个例子,当你执行:

  1. UPDATE VoyTY SET amount = 197 WHERE voy='北星横栈- 0001I / 0002O'
复制代码

别人修改了记录,你会覆盖别人的修改,但也许此时你想看一下别人把这个值改成了多少,
参考一下,再重新决定自己要修改的值,可操作查询并不会告诉你别人已经修改了这个值。

二、客户端临时表(待续)

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2016-4-19 15:30 | 显示全部楼层
hyefeifei 发表于 2016-4-19 15:13
如何更新数据库表?

与插入 删除 相比 ,更新记录情况稍复杂一些。

讲得很好!用实际情景来说明各种用法,虽然话长一些,但对初学者来说更易理解。

TA的精华主题

TA的得分主题

发表于 2016-4-19 15:42 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
持续关注老师新作
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-13 15:33 , Processed in 0.060722 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表