c#如何灵活的设定表的列名传参

springcyq 2013-11-26 05:14:23
各位大哥大姐,小弟最近遇到一个难题。
需要写一个WebServices接口,用来给客户Insert资料到我的数据库中。
假设:我的数据库有一个表,名为学员信息表,有四列:学号、姓名、性别、年龄。
按照正常情况,如下写就行:
[WebMethod(Description = "导入学员信息")]
public string InsertData(string K1(学号),string K2(姓名),string K3(性别),string K4(年龄))
{
//代码省略
return "返回结果字符串";
}
难点来了。
我不想让客户知道表中有这四列,而是让他们自己定义要传进来的列。
例:A用户,指定A1是学号,A2是姓名,然后他就传这两列进来。
public string InsertData(string A1,string A2)
例:B用户,指定B1是学号,B2是姓名,B3是年龄,然后他就传这三列进来。
public string InsertData(string B1,string B2,string B3)
难点在于:
1.InsertData要统一传参个数,不能A客户两个参数,B客户三个参数,因为客户越来越多,组合也越来越多,不能新增一个客户,就写一个新接口。
实际上,列很多,不仅仅是四个。
客户不用,需要用到的列的个数就不同,不可能在接口中写出所有的列,让客户把不用的列传空值的,这样客户体验就下降了。
对于这么多客户,统一传参怎么实现?
2.怎么来转换客户自定的列名?即,怎么知道A1、B1对应的是学号,A2、B2对应的是姓名?

请各位大哥大姐指教,感谢!
...全文
280 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
springcyq 2013-12-20
  • 打赏
  • 举报
回复
引用 17 楼 rtdb 的回复:
[quote=引用 16 楼 springcyq 的回复:] [quote=引用 15 楼 zhs23 的回复:] XML为什么不用?传一个XML文档。随意怎么写。根据你的标准就行
想过用XML,但是感觉同样的内容JSON比XML要更简洁短小。[/quote] 应该用XML。 XML的可读性和扩展性都比JSON好。节省那点数据是不必要的。 [/quote] 这样啊……但是我领导已经决定用JSON了……谢谢哥哥!
springcyq 2013-12-19
  • 打赏
  • 举报
回复
引用 15 楼 zhs23 的回复:
XML为什么不用?传一个XML文档。随意怎么写。根据你的标准就行
想过用XML,但是感觉同样的内容JSON比XML要更简洁短小。
rtdb 2013-12-19
  • 打赏
  • 举报
回复
引用 16 楼 springcyq 的回复:
[quote=引用 15 楼 zhs23 的回复:] XML为什么不用?传一个XML文档。随意怎么写。根据你的标准就行
想过用XML,但是感觉同样的内容JSON比XML要更简洁短小。[/quote] 应该用XML。 XML的可读性和扩展性都比JSON好。节省那点数据是不必要的。
迷迷520 2013-12-18
  • 打赏
  • 举报
回复
XML为什么不用?传一个XML文档。随意怎么写。根据你的标准就行
springcyq 2013-12-18
  • 打赏
  • 举报
回复
初步决定传JSON格式的字符串,等写好了,再来发表回复并结贴。
圣光麦造 2013-12-02
  • 打赏
  • 举报
回复

传两个参数 
1.表名
2.Dictionary<列名,值>

insert into 表名 (循环Dictionary的key) values (循环Dictionary的value)
PaulyJiang 2013-12-02
  • 打赏
  • 举报
回复
自己定义一个Entity 给客户传啊
springcyq 2013-12-02
  • 打赏
  • 举报
回复
还在思考中,完成后会给出采用的方法并结贴。
_小黑_ 2013-12-02
  • 打赏
  • 举报
回复
楼主 看看 三层 或mvc
rtdb 2013-11-27
  • 打赏
  • 举报
回复
引用 5 楼 springcyq 的回复:
[quote=引用 2 楼 rtdb 的回复:] 基本意思是传 LIST of ( Name , Value): public string InsertData(List<string> NameList, List<string> DataList);
请问这种传参支持其他语言来调用吗?例如Java。[/quote]JAVA可以的
springcyq 2013-11-27
  • 打赏
  • 举报
回复
引用 4 楼 youzelin 的回复:
用 Optional Parameter,.NET 4.0 引入的新特性。

public string InsertData(string number = "", string name = "", string gender = "", string age = "")
{
    ......
} 
// Call
InsertData(name = "ZhangSan", age = 23);
InsertData(number = 12345, gender = "male");
......// 此处省略各种组合
请问这种传参支持其他语言来调用吗?例如Java。
springcyq 2013-11-27
  • 打赏
  • 举报
回复
引用 2 楼 rtdb 的回复:
基本意思是传 LIST of ( Name , Value): public string InsertData(List<string> NameList, List<string> DataList);
请问这种传参支持其他语言来调用吗?例如Java。
  • 打赏
  • 举报
回复
封装成对象不就好了么
reenjie 2013-11-27
  • 打赏
  • 举报
回复
引用 楼主 springcyq 的回复:
各位大哥大姐,小弟最近遇到一个难题。 需要写一个WebServices接口,用来给客户Insert资料到我的数据库中。 假设:我的数据库有一个表,名为学员信息表,有四列:学号、姓名、性别、年龄。 按照正常情况,如下写就行: [WebMethod(Description = "导入学员信息")] public string InsertData(string K1(学号),string K2(姓名),string K3(性别),string K4(年龄)) { //代码省略 return "返回结果字符串"; } 难点来了。 我不想让客户知道表中有这四列,而是让他们自己定义要传进来的列。 例:A用户,指定A1是学号,A2是姓名,然后他就传这两列进来。 public string InsertData(string A1,string A2) 例:B用户,指定B1是学号,B2是姓名,B3是年龄,然后他就传这三列进来。 public string InsertData(string B1,string B2,string B3) 难点在于: 1.InsertData要统一传参个数,不能A客户两个参数,B客户三个参数,因为客户越来越多,组合也越来越多,不能新增一个客户,就写一个新接口。 实际上,列很多,不仅仅是四个。 客户不用,需要用到的列的个数就不同,不可能在接口中写出所有的列,让客户把不用的列传空值的,这样客户体验就下降了。 对于这么多客户,统一传参怎么实现? 2.怎么来转换客户自定的列名?即,怎么知道A1、B1对应的是学号,A2、B2对应的是姓名? 请各位大哥大姐指教,感谢!

public string InsertData(Student stu)
{
//代码省略
return "返回结果字符串";
}
youzelin 2013-11-26
  • 打赏
  • 举报
回复
用 Optional Parameter,.NET 4.0 引入的新特性。

public string InsertData(string number = "", string name = "", string gender = "", string age = "")
{
    ......
} 
// Call
InsertData(name = "ZhangSan", age = 23);
InsertData(number = 12345, gender = "male");
......// 此处省略各种组合
csdnFUCKINGSUCKS 2013-11-26
  • 打赏
  • 举报
回复
传一个字典 后台查找键值对
rtdb 2013-11-26
  • 打赏
  • 举报
回复
基本意思是传 LIST of ( Name , Value): public string InsertData(List<string> NameList, List<string> DataList);
  • 打赏
  • 举报
回复
把做好的模版给客户 或让客户下载模版 终止就是让客户按照你的滚则来,不这样做就会无分控制上传的数据格式 然后 可以获取固定好的列 col[0] col[1]...

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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