当前位置:编程学习 > C#/ASP.NET >>

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

各位大哥大姐,小弟最近遇到一个难题。
需要写一个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对应的是姓名?

请各位大哥大姐指教,感谢! 灵活 表的列名传参 --------------------编程问答--------------------
把做好的模版给客户 或让客户下载模版
终止就是让客户按照你的滚则来,不这样做就会无分控制上传的数据格式

然后 可以获取固定好的列 col[0] col[1]... --------------------编程问答-------------------- 基本意思是传 LIST of ( Name , Value):


public string InsertData(List<string> NameList, List<string> DataList);

--------------------编程问答-------------------- 传一个字典 后台查找键值对 --------------------编程问答-------------------- 用 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");
......// 此处省略各种组合
--------------------编程问答--------------------
引用 2 楼 rtdb 的回复:
基本意思是传 LIST of ( Name , Value):


public string InsertData(List<string> NameList, List<string> DataList);


请问这种传参支持其他语言来调用吗?例如Java。 --------------------编程问答--------------------
引用 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。 --------------------编程问答--------------------
引用 5 楼 springcyq 的回复:
Quote: 引用 2 楼 rtdb 的回复:

基本意思是传 LIST of ( Name , Value):


public string InsertData(List<string> NameList, List<string> DataList);


请问这种传参支持其他语言来调用吗?例如Java。
JAVA可以的 --------------------编程问答--------------------
引用 楼主 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 "返回结果字符串";
}

--------------------编程问答-------------------- 封装成对象不就好了么 --------------------编程问答-------------------- 还在思考中,完成后会给出采用的方法并结贴。 --------------------编程问答-------------------- 自己定义一个Entity 给客户传啊 --------------------编程问答--------------------

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

insert into 表名 (循环Dictionary的key) values (循环Dictionary的value)
--------------------编程问答-------------------- 楼主 看看 三层 或mvc --------------------编程问答-------------------- 初步决定传JSON格式的字符串,等写好了,再来发表回复并结贴。 --------------------编程问答-------------------- XML为什么不用?传一个XML文档。随意怎么写。根据你的标准就行 --------------------编程问答--------------------
引用 15 楼 zhs23 的回复:
XML为什么不用?传一个XML文档。随意怎么写。根据你的标准就行


想过用XML,但是感觉同样的内容JSON比XML要更简洁短小。 --------------------编程问答--------------------
引用 16 楼 springcyq 的回复:
Quote: 引用 15 楼 zhs23 的回复:

XML为什么不用?传一个XML文档。随意怎么写。根据你的标准就行


想过用XML,但是感觉同样的内容JSON比XML要更简洁短小。


应该用XML。

XML的可读性和扩展性都比JSON好。节省那点数据是不必要的。
--------------------编程问答--------------------
引用 17 楼 rtdb 的回复:
Quote: 引用 16 楼 springcyq 的回复:

Quote: 引用 15 楼 zhs23 的回复:

XML为什么不用?传一个XML文档。随意怎么写。根据你的标准就行


想过用XML,但是感觉同样的内容JSON比XML要更简洁短小。


应该用XML。

XML的可读性和扩展性都比JSON好。节省那点数据是不必要的。


这样啊……但是我领导已经决定用JSON了……谢谢哥哥!
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,