我在.net中按名称运行存储过程,并将数据作为JSON返回到我的前端
如果我的存储过程是
SELECT name from employees
我找回tablename =“Table1”
的表格所以我的JSON是{Table1:[{row1stuff},{row2stuff}]}
我想在我的程序中定义表名。
现在我正在做
SELECT 'names'
SELECT name from employees
在我的c#中,我遍历第一个表值并命名其他表
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt); //dt is a dataset
//start at 1 since the first table is the tablenames table
for (int i = 1; i < dt.Tables.Count; i++)
dt.Tables[i].TableName = dt.Tables[0].Rows[0].ItemArray[i-1].ToString();
//get rid of the first table
dt.Tables.RemoveAt(0);
return JObject.FromObject(dt);
现在正在使用,我的json是{姓名:[{row1},{row2} ...]}
如果我能做的话会很棒
SELECT name from employees as names
(但是这不会在sp返回的内容中设置表名,只是为sql设置它)
为了清楚起见,我的一些存储过程正在返回多个结果集,所以我这样做
SELECT 'Employees','Cars','Websites'
SELECT * FROM employees
SELECT * FROM cars
SELECT * from sites
所以我回到了json
{Employees:[{emp1},{emp2}...], Cars:[{car1}], Websites:[{site1}, {site2}]}
哪个是完美的,但是如果我在顶部选择那么让SP变得怪异......当你只是看着sp
时就不那么明显了答案 0 :(得分:1)
https://msdn.microsoft.com/en-us/library/Bb748727.aspx?f=255&MSPPError=-2147217396
LoadDataSet有一个用于命名表的参数。
(如果未来的网址为di3s,则会从上面的网址粘贴以下内容)
'Declaration
Public Overridable Sub LoadDataSet ( _
storedProcedureName As String, _
dataSetAs DataSet, _
tableNames As String(), _
ParamArray parameterValues As Object() _
)
tableNames
Type: array<System.String>
An array of table name mappings for the DataSet.
答案 1 :(得分:1)
这里提到了一些讨论.. Set dbo.Table name as DataTable Name ..是的,你只能通过TableMapping在C#中做到这一点,或者像你一样聪明。 :)