搜索
查看: 637|回复: 2

关于数据库调用求助

[复制链接]

1

主题

5

帖子

37

积分

新手入门

Rank: 1

积分
37
发表于 2018-8-3 11:20:02 | 显示全部楼层 |阅读模式
本帖最后由 api 于 2018-8-3 11:25 编辑

  1. //增 - 使用命名参数示例
  2. var command = db.prepare("replace into film values (@title,@length,@year, 'Jodie Foster');" )
  3. command.bind.parameterByNamesAt( //绑定命名参数
  4.         title = "标题";
  5.         length = 4;
  6.         year = time.now();
  7. )   
  8. command.step(); //执行命令
复制代码


  1. db.exec("DELETE FROM [%s] where length=%d;","film",999)
复制代码


无论是sqlServer,mysql,sqlite 等查询调用
一下问题:

1.执行 新增和修改时 如:

  1. command.step();
复制代码

或者
  1. db.exec("sql语句");
复制代码

如何知道 该 sql语句是否成功呢?
如:C#代码在执行新增或修改时 ExecuteNonQuery 成功时 返回代码影响行数.
而aardio 执行代码时得如何根据结果判断是否成功?




2.复杂sql语句执行有问题
如: sqlServer 需要执行的sql中  有多行代码时如本身 定义变量


  1. declare @测试变量 int
  2. .........
  3. .........
复制代码

...等复杂多行的sql时.无法正常执行.

回复

使用道具 举报

12

主题

57

帖子

423

积分

二级会员

Rank: 3Rank: 3

积分
423
发表于 2018-8-3 11:44:45 | 显示全部楼层
本帖最后由 iaauto 于 2018-8-3 11:48 编辑

sqlite有db.changes()可以判断有没有改变行
aardio里access和sqlserver都是调用的ado,ado里好像也有类似的影响行数的内容,不过通常不怎么用,因为不可靠
sqlserver因为用的ado,所以不支持复杂的sql
回复

使用道具 举报

185

主题

2541

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13974
发表于 2018-8-3 13:26:38 | 显示全部楼层
以后遇到问题以前能不能先看一下函数说明?!
真的是任何小问题都要去跟其他编程语言比一下,忙到低头看一下代码提示的时间都没有了吗?!
step函数成功则返回值大于等于100
你说的C#的ExecuteNonQuery 实际上是源于ADO里的 executeNoRecords,
aardio里access,sqlServer里都有executeNoRecords函数,无论你是用C#还是aardio,有文档不看,有和没有对你都没有区别。

sqlite又不是微软的东西,接口当然不一样,
exec函数失败会抛出异常,你想不知道出错了都不行,本来就不需要你自己操心的东西。
step函数一般都不会出错,非要检测的话,可以检测返回值。

aardio中的函数失败不是抛出异常,就是可以通过返回值检测.........,都是给你准备好的东西。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-12-15 15:21 , Processed in 0.062500 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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