| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2388 人关注过本帖
标题:我无法向数据库中插入数据
只看楼主 加入收藏
louzhenghong
Rank: 1
等 级:新手上路
帖 子:54
专家分:5
注 册:2016-4-25
结帖率:64.71%
收藏
已结贴  问题点数:20 回复次数:11 
我无法向数据库中插入数据
数据库为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
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
if con1>0
  messagebox("连接成功!",0,"数据源")
  if 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)")>0
     messagebox("插入成功!",0,"数据源")
  else
    messagebox("插入失败!",0,"数据源")
  endif

  SQLDISCONNECT(con1)  &&断开连接句柄,这东东占用服务器资源的,用完就断了它
else
  messagebox("连接失败,请检查网络及设置!",0,"警告")
ENDIF
2016-04-26 08:50
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:10 
*可以把这句,用 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='男'
 <<cWh>>
ENDTEXT

sqlexec(con1,lcSql)
*相当于

sqlexec(con1,"update 表1 set sex='男' where id=?nId and name=?cName")
*但这样不是动态的 WHERE条件


[此贴子已经被作者于2016-4-26 09:10编辑过]

2016-04-26 09:06
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
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:10 
--你直接在SQL上执行看看
declare @a1 varchar(10),@a2 varchar(10),@a3 datetime,@a4 varchar(10),@a5 varchar(10),@a6 varchar(10),@a7 varchar(10)
declare @a8 varchar(10),@a9 varchar(10),@a10 varchar(10),@a11 varchar(10),@a12 int
set @a1='楼*洪'
set @a2='楼*洪'
set @a3=getdate()
set @a4='楼*洪'
set @a5='楼*洪'
set @a6='楼*洪'
set @a7='楼*洪'
set @a8='楼*洪'
set @a9='楼*洪'
set @a10='楼*洪'
set @a11='楼*洪'
set @a12=100
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)
--看看,能不能执行
2016-04-26 09:29
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
很可能是某个变量与字段的类型不匹配引进的。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2016-04-26 09:33
louzhenghong
Rank: 1
等 级:新手上路
帖 子:54
专家分:5
注 册:2016-4-25
收藏
得分:0 
都是插入成功的,只是我没有把表重新打开,他没有显示出来,他感谢你了
2016-04-26 09:33
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
没有显示出来?
2016-04-26 10:03
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
以下是引用tlliqi在2016-4-26 10:03:52的发言:

没有显示出来?

也就是没有刷新。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2016-04-27 07:59
快速回复:我无法向数据库中插入数据
数据加载中...
 
   



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

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