您的位置:程序门 -> vb ->



vb访问sql数据库问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


vb访问sql数据库问题
发表于:2007-10-20 17:16:21 楼主
电解?
                                                                set   rs   =   nothing
                                                                rs.cursortype   =   adopenkeyset
                                                                rs.locktype   =   adlockoptimistic
                                                                rs.open   "select   *     from   "   +   str_sql_field   +   "   where   发布中心='"   +   str_text(1)   +   "'and   发布时间='"   +   str_text(2)   +   "'and     tc本科编号='"   +   str_text(3)   +   "'   and   id=1   ",   cn
                                                                for   j   =   1   to   int_sum
                                                                        if   str_text(j)   <>   "9999"   then   rs!str_name(j)   =   str_text(j)
                                                                next
                                                                rs.update
                                                                rs.close
数据写不进去?
我是要把一条记录写到sql数据库里,如果是新记录addnew写进去了,但如果记录已存在,我要覆盖它,上面语句写不进去,急!
发表于:2007-10-20 21:33:281楼 得分:0
电解?  
                                                                set   rs   =   nothing  
                                                                rs.cursortype   =   adopenkeyset  
                                                                rs.locktype   =   adlockoptimistic  
                                                                rs.open   "select   *     from   "   +   str_sql_field   +   "   where   地点=   '"   +   str_text(1)   +   "   'and   时间=   '"   +   str_text(2)   +   "   'and     号码=   '"   +   str_text(3)   +   "   '   and   id=1   ",   cn  
                                                                for   j   =   1   to   int_sum  
                                                                        rs!str_name(j)   =   str_text(j)  
                                                                next  
                                                                rs.update  
                                                                rs.close  
数据写不进去?  
我是要把一条记录写到sql数据库里,如果是新记录addnew写进去了,但如果记录已存在,我要覆盖它,上面语句写不进去,急!
如何确定一条记录?
发表于:2007-10-23 14:16:532楼 得分:0
set   rs   =   nothing   ????
如果这一句话存在,不就把rs指向一个空地址了吗?
后面的代码难道不提示“对象或者变量名未设置”之类的错误?
发表于:2007-10-23 15:40:513楼 得分:0
同意楼上.
set   rs   =   nothing
之后
set   rs=new   adodb.recordset
发表于:2007-10-23 16:02:274楼 得分:0
第一句:"set   rs   =   nothing"
改成
if   rs.state=1   then
    rs.close
    set   rs   =   nothing  
endif
发表于:2007-10-23 22:58:485楼 得分:0

set   rs   =   nothing
修改为:
set   rs   =   new   adodb.recordset

如果一定要清除原来数据
可以
if   not   rs   is   nothing   then
      if   rs.state <> 0   then
            rs.close
      end   if
set   rs=nothing
end   if

还有,建议在连接string的时候,使用&而不是+
发表于:2007-10-23 23:00:116楼 得分:0
for   j   =   1   to   int_sum  
if   str_text(j)     <   >   "9999"   then   rs!str_name(j)   =   str_text(j)  
next  

还有,
这里你需要考虑rs的容量,是不是有int_sum那么多
否则会出错
最好做一个判断

发表于:2007-11-08 23:01:247楼 得分:0
谢谢各位大虾!
处理access数据库就很简单,直接edit后,再update就行,但sql数据库不行,我就先delete后再addnew才行。set       rs=new       adodb.recordset是增加一个新记录,但我是要把同样的旧记录覆盖,因为数据库已有了一条或多条记录,我要删除的,然后再写一条同样的记录。能不能不用删除旧记录,直接把新的覆盖它。
发表于:2007-11-09 00:36:188楼 得分:0

对数据库多条数据更新一般要采用:

do   while   not   rs.eof
    rs.field(i)=****
    rs.update
    rs.mowenext
loop

你的语句看不太明白,采用ado和dao是有一定的区别的,如果是dao,在   rs.field(i)=****之前要增加rs.edit语句,如果是ado就不必了。
发表于:2007-11-09 09:22:359楼 得分:0
vbscript code
public declare sub copymemory lib "kernel32" alias "rtlmovememory" (destination as any, source as any, byval length as long) if rs.state <> adstateclosed then rs.close copymemory rs, 0&, 4 '清空rs(等同与set rs=nothing,不过比它快) set rs = new recordset rs.open "select * from " & str_sql_field & " where 地点='" & str_text(1) & "' and 时间='" & str_text(2) & "' and 号码='" & str_text(3) & "' and id=1", cn, adopenkeyset, adlockoptimistic if rs.eof then rs.addnew '判断数据库中记录是否存在,如果不存在,则新增(addnew),如果存在,则直接覆盖(注意:自动编号类型的列是不能覆盖的,会出错) for j = i to int_sum rs!str_name(j) = str_text(j) next j rs.update rs.close


快速检索

最新资讯
热门点击