| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2387 人关注过本帖
标题:我无法向数据库中插入数据
取消只看楼主 加入收藏
louzhenghong
Rank: 1
等 级:新手上路
帖 子:54
专家分:5
注 册:2016-4-25
结帖率:64.71%
收藏
已结贴  问题点数:20 回复次数:4 
我无法向数据库中插入数据
数据库为sql 2005,位于192.168.0.3,
表是这样的
CREATE TABLE [dbo].[bx](
    [bxren] [nchar](10) NULL,
    [bxdh] [nchar](10) NULL,
    [bxrq] [datetime] NULL,
    [bxdz] [char](10) NULL,
    [bxnr] [char](10) NULL,
    [bxlx] [char](10) NULL,
    [bxqy] [char](10) NULL,
    [bxtsqk] [char](10) NULL,
    [bxbj] [char](10) NULL,
    [bxpg] [char](10) NULL,
    [bxwxxx] [char](10) NULL,
    [bxxm] [bigint] NOT NULL
) ON [PRIMARY]

然后我在一个按钮里的代码为:
RESTORE FROM D:\aaa\szb.txt addi
  lcodbcdriver  =ALLTRIM(szb_类型)
  lcodbcserver  =ALLTRIM(szb_服务器)
  lcodbcdatabase=ALLTRIM(szb_数据库)
  lcuid     =ALLTRIM(szb_用户)
  lcpwd     =ALLTRIM(szb_密码)
con1=sqlstringconnect('driver='+lcodbcdriver+';server='+lcodbcserver+';database='+lcodbcdatabase+';uid='+lcuid+';pwd='+lcpwd) &&建立测试连接句柄
a1='楼*洪'
a2='楼*洪'
a3=datetime()
a4='楼*洪'
a5='楼*洪'
a6='楼*洪'
a7='楼*洪'
a8='楼*洪'
a9='楼*洪'
a10='楼*洪'
a11='楼*洪'
a12=100
if con1>0
  messagebox("连接成功!",0,"数据源")
  SQLEXEC(con1,"insert into dbo.bx (bxren,bxdh,bxrq,bxdz,bxnr,bxlx,bxqy,bxtsqk,bxbj,bxpg,bxwxxx,bxxm) values (?a1,?a2,?a3,?a4,?a5,?a6,?a7,?a8,?a9,?a10,?a11,?a12)")
  messagebox("插入成功!",0,"数据源")
  SQLDISCONNECT(con1)  &&断开连接句柄,这东东占用服务器资源的,用完就断了它
else
  messagebox("连接失败,请检查网络及设置!",0,"警告")
ENDIF

运行显示连接成功,插入成功,然后到数据库的表里却没有发现有插入的数据,怎么回事?
2016-04-26 08:10
louzhenghong
Rank: 1
等 级:新手上路
帖 子:54
专家分:5
注 册:2016-4-25
收藏
得分:0 
还不不行
if con1>0
  messagebox("连接成功!",0,"数据源")
  *n=SQLEXEC(con1,"insert into upmis_test.dbo.bx (bxren,bxdh,bxrq,bxdz,bxnr,bxlx,bxqy,bxtsqk,bxbj,bxpg,bxwxxx,bxxm) values (?a1,?a2,?a3,?a4,?a5,?a6,?a7,?a8,?a9,?a10,?a11,?a12)")
  TEXT TO lcSql TEXTMERGE NOSHOW PRETEXT 4
          insert into dbo.bx (bxren,bxdh,bxrq,bxdz,bxnr,bxlx,bxqy,bxtsqk,bxbj,bxpg,bxwxxx,bxxm)
          values (?a1,?a2,?a3,?a4,?a5,?a6,?a7,?a8,?a9,?a10,?a11,?a12)
  ENDTEXT
if sqlexec(con1,lcSql)>0
  messagebox("插入成功",0,"数据源")
else
  messagebox("插入失败",0,"数据源")
endif
显示插入成功,但表里没有数据
2016-04-26 09:18
louzhenghong
Rank: 1
等 级:新手上路
帖 子:54
专家分:5
注 册:2016-4-25
收藏
得分:0 
以下是引用mywisdom88在2016-4-26 09:06:34的发言:

*可以把这句,用 TEXT TO ..
TEXT TO lcSql TEXTMERGE NOSHOW PRETEXT 4
 insert into dbo.bx (bxren,bxdh,bxrq,bxdz,bxnr,bxlx,bxqy,bxtsqk,bxbj,bxpg,bxwxxx,bxxm)
 values (?a1,?a2,?a3,?a4,?a5,?a6,?a7,?a8,?a9,?a10,?a11,?a12)
ENDTEXT
*然后
if sqlexec(con1,lcSql)>0
  messagebox("插入成功",0,"数据源")
else
  messagebox("插入失败",0,"数据源")
endif
 
用TEXT TO 的好处,还有1个,就是可以用类似宏运算 &的东西,就是<< >>运算
如:
cWh=" where id=" + nId + " and name=" + cName &&这样的动态条件
用TEXT TO 就是
TEXT TO lcSql TEXTMERGE NOSHOW PRETEXT 4  && 参数TEXTMERGE
update 表1 set sex='男'
 <>
ENDTEXT
sqlexec(con1,lcSql)
*相当于
 
sqlexec(con1,"update 表1 set sex='男' where id=?nId and name=?cName")
*但这样不是动态的 WHERE条件
还是不行
2016-04-26 09:24
louzhenghong
Rank: 1
等 级:新手上路
帖 子:54
专家分:5
注 册:2016-4-25
收藏
得分:0 
都是插入成功的,只是我没有把表重新打开,他没有显示出来,他感谢你了
2016-04-26 09:33
louzhenghong
Rank: 1
等 级:新手上路
帖 子:54
专家分:5
注 册:2016-4-25
收藏
得分:0 
回复 3楼 mywisdom88
if con1>0
  messagebox("连接成功!",0,"数据源")
  SELECT wxfl
  GO top
  DO WHILE !EOF()
     a1= lx
     a2= bj
     a3= sgd
     ?a1,a2,a3
  TEXT TO lcSql TEXTMERGE NOSHOW PRETEXT 4
          insert into dbo.wxfl (维修类型,维修标记,施工队)
          values (?a1,?a2,?a3)
  ENDTEXT
  SKIP
  ENDDO
if sqlexec(con1,lcSql)>0
  messagebox("插入成功",0,"数据源")
else
 messagebox("插入失败",0,"数据源")
endif

  SQLDISCONNECT(con1)  &&断开连接句柄,这东东占用服务器资源的,用完就断了它
else
  messagebox("连接失败,请检查网络及设置!",0,"警告")
ENDIF

我有10条记录,但执行结果是只有一条记录,结果显示为表wxfl的最后一条记录,全部覆盖上去了?
2016-04-28 14:39
快速回复:我无法向数据库中插入数据
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027035 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved