注册 登录
编程论坛 PowerBuilder

为什么数据不能传送到数据库?数据库已经连接!

冷月烟云梦 发布于 2011-06-22 09:02, 913 次点击
为什么数据不能传送到数据库?数据库已经连接成功!在其他模块数据就能传送到数据库里,只有在这个模块不能,怎么回事呢?
   long ll_bookid,ll_publisherid,ll_words,ll_number,ll_price
    date ld_publish
    string ls_ISBN,ls_title,ls_author,ls_keyword,ls_abstract
//数据格式检验
if sle_bookid.text="" or isNull(sle_bookid.text) then
    messagebox ("缺少数据","请输入图书编号!")
    sle_bookid.setfocus()
    return
elseif sle_title.text="" or isnull(sle_title.text) then
    messagebox ("缺少数据","请输入图书名称!")
    sle_title.setfocus()
    return
end if
//检查图书编号有无重号
select BookInfo.BookID
into: ll_bookid
from BookInfo
where BookInfo.BookID=: ll_bookid;
if ll_bookid<>0 then
    messagebox("错误信息","图书编号第"+string(ll_bookid)+"号重号!请改正!")
    sle_bookid.setfocus()
    return
end if
      ls_ISBN=trim(sle_isbn.text)
        ls_title=trim(sle_title.text)
        ls_author=trim(sle_author.text)
        ls_keyword=trim(sle_keyword.text)
        ls_abstract=trim(mle_abstract.text)
//向数据库写入数据
insert into "BookInfo"
           ("BookID",
            "ISBN",
            "Title",
            "Publish",
            "Author",
                "Words",
            "PublisherID",
            "Number",
            "Price",
            "Keyword",
            "Abstract")
values(:ll_bookid,
       :ls_ISBN,
       :ls_title,
       :ld_publish,
       :ls_author,
       :ll_words,
       :ll_price,
       :ls_keyword,
       :ls_abstract);

//数据写入数据库后,将输入控件全部置空
        sle_bookid.text=""
        sle_ISBN.text=""
        sle_title.text=""
        sle_publish.text=""
        sle_author.text=""
        sle_words.text=""
        sle_publisherid.text=""
        sle_number.text=""
        sle_price.text=""
        sle_keyword.text=""
        mle_abstract.text=""
        sle_bookid.setfocus()//将光标放到“图书编号”输入栏
6 回复
#2
go20112011-06-22 16:16
可能是因为 insert语句中列的数目(11个)大于 VALUES 子句中指定的值的数目(9个)
#3
冷月烟云梦2011-06-23 09:42
回复 2楼 go2011
谢谢你啊!可能是值类型吧~
#4
路過2011-06-23 11:34
insert语句中列的数目(11个)大于 VALUES 子句中指定的值的数目(9个) ,不用附值的欄位 可以在into後面去掉。
語句執行完之後要commit;
#5
sfjhj19812011-06-23 13:50
commit;
#6
Mackou9912011-08-05 14:29
第一:注意事务提交,commit;
第二:注意判断sqlcode值。
#7
jimfeer2011-08-28 01:58
同意楼上的兄弟。
以前自己也有这样的习惯,没有跟踪写完的SQL语句。
if sqlca.sqlcode <> 0 then
    messagebox('erro',sqlca.sqlerrtext)
end if
这样就更方便在运行时查看是什么原因造成语句执行不正确。
1