在Api中调用sqlService万能添加存储过程

終99 2017-11-16 01:47:07


我在sql数据库中写的万能添加存储过程 是把所有的value值定义为一个字符串, 但是调用的时候需要用双引号.
然后在Api&Winform中调用的时候 值传到dal里边都对的,就是添加不到数据库.一直报错说有引号错误

求大神解决一下!困扰一天了
...全文
184 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
二月十六 2017-11-16
  • 打赏
  • 举报
回复
引用 14 楼 qq_28548963 的回复:
谢谢大神 我主要想看他怎么调用 竟然不写 ..... 然后我的问题解决了 string t1 = textBox1.Text; int t2 = Convert.ToInt32( textBox1.Text); string str2 = "'" + t1 + "'," + t2; 这个值传过去就对了 谢谢你哦!~
记得结贴
終99 2017-11-16
  • 打赏
  • 举报
回复
谢谢大神 我主要想看他怎么调用 竟然不写 ..... 然后我的问题解决了 string t1 = textBox1.Text; int t2 = Convert.ToInt32( textBox1.Text); string str2 = "'" + t1 + "'," + t2; 这个值传过去就对了 谢谢你哦!~
二月十六 2017-11-16
  • 打赏
  • 举报
回复
3积分给你下载的内容……
万能修改,删除表的存储过程
修改的
create Procedure up 
@table varchar(50), --表名
@zid varchar(50),  --字段
@value varchar(100), --要更改的字段的值
@zhi varchar(50)    --更改条件
as
begin
exec('update ' +@table+ ' set ' +@zid+'='+@value+ ' where ' +@zid+'='+@zhi)
end 

删除的
create proc del
@table varchar(50),
@zid varchar(50),
@zhi varchar(50)
as
begin
exec('delete '+@table+' where '+@zid+'='+@zhi)
end
終99 2017-11-16
  • 打赏
  • 举报
回复
还是报错 估计就是一堆引号传来传去不知道两个软件之间怎么转换 那要怎么改呢
終99 2017-11-16
  • 打赏
  • 举报
回复
是说 : string str2 = "''" + textBox1.Text + "'',''" + textBox1.Text + "'',"; 这一行吗
二月十六 2017-11-16
  • 打赏
  • 举报
回复
引用 7 楼 qq_28548963 的回复:
我现在还是学生 考试会考存储过程 练习总是要建好多存储过程 自从学了分能分页就想研究一套全能增查改出来 在数据库里存储过程都写出来了 就是在VS软件的Api项目中调用的时候传值到数据库这部分总出错 写不出来不甘心 求帮帮忙
我之前学习的时候也有过这个想法,基本的语法写多了写腻了,就想玩花活儿,也做了这种万能的存储过程,万能的程序框架(有点像orm似的东西)。现在对这种东西 的理解就是一定程度上提高了开发效率,但是降低了数据库、项目的运行效率,大而全的通用功能肯定是要比小而精的针对功能开发写起来要快,包括现在很多程序框架也是这个意思,但是运行效率相对要低一些,这个就是看需求做取舍,自己学习弄着玩,那就随便了,如果是公司项目,就得考虑开发成本和实际运行效果。
吉普赛的歌 2017-11-16
  • 打赏
  • 举报
回复
说了你买书看啊, 自己瞎摸不是正道
二月十六 2017-11-16
  • 打赏
  • 举报
回复
传过去的数据还是用双引号引起来的?不能用双引号
終99 2017-11-16
  • 打赏
  • 举报
回复
我现在还是学生 考试会考存储过程 练习总是要建好多存储过程 自从学了分能分页就想研究一套全能增查改出来 在数据库里存储过程都写出来了 就是在VS软件的Api项目中调用的时候传值到数据库这部分总出错 写不出来不甘心 求帮帮忙
終99 2017-11-16
  • 打赏
  • 举报
回复
在api里边怎么调用呢,值传到存储过程里都是对的,但是一用command方法就错了
吉普赛的歌 2017-11-16
  • 打赏
  • 举报
回复
如果我们就着你的意思, 帮你解决了这个问题, 有用吗? 不能说没用, 但对你没有提高。 编程里讲得很多的一句话就是“面向对象”。 一切都是对象, C# 就是 object , 任何类都继承于它。但为什么不直接都写成 object 类呢, 省了好多事? 就数据库里来说, 可以设计一个 几百个列的表, 所有类型都是 nvarchar(max) , 99%的数据都可以往里装, 省了设计表的过程, 好不好? 建议找一本 项目实战 的书看看, 先参考人家的做法。
二月十六 2017-11-16
  • 打赏
  • 举报
回复
CREATE PROC All_DBHelper_Add
@tablename VARCHAR(20),
@valueStr VARCHAR(300)
AS
BEGIN
DECLARE @str VARCHAR(300)
SET @str='insert into '+@tablename+' values('+@valueStr+')'
EXEC(@str)
END

EXEC dbo.All_DBHelper_Add 'testinfor', '''张三'',12'

SELECT * FROM testinfor


吉普赛的歌 2017-11-16
  • 打赏
  • 举报
回复
EXEC All_DBHelper_Add 'testinfor', ' ''小红'',''20'' '
这样应该是可以, 你少了单引号。 不过不推荐这样做。 写程序不要怕麻烦, 这样“万能”, 表面上省了一点事, 实际带来的麻烦更大。 兼容就是损耗, 什么都能其实就是等于都不能。 这样有安全问题, 如果插入的字符串里有单引号会异常, 问题多多。 还是一个表一个存储过程吧, 尽量不要搞什么动态SQL
終99 2017-11-16
  • 打赏
  • 举报
回复
提示 消息 207,级别 16,状态 1,第 1 行 列名 '小红' 无效。 您可以参考下我的建表 create table testinfor ( tid int primary key identity, tname varchar(20), tnum int ) go insert into testinfor values ('张三',12)
二月十六 2017-11-16
  • 打赏
  • 举报
回复
为什么一定要用双引号?换成'小红,20'

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧