我有以下子程序。它将INPUT作为参数1,并将多值数据OUTPUT作为参数2发送。
SUBROUTINE MV_TO_DATASET_SELECT_SUBROUTINE(ARG_INPUT,ARG_OUTPUT)
x = ARG_INPUT ARG_OUTPUT =“100”:@ VM:“101”:@ VM:“102”:@ VM:“103”:@ FM:“Nancy”:@ VM:“Andrew”:@ VM:“Janet”:@ VM : “霭”:@ FM: “1991年1月6日”:@ VM: “1996年6月7日”:@ VM: “1999年11月8日”:@ VM: “12/10/2001”
RETURN
上述子程序的多值数据的模式如下。
DataSet ds = new DataSet();
DataTable dt = new DataTable("Employee");
ds.Tables.Add(dt);
dt.Columns.Add("ID",typeof(Int32));
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("HireDate", typeof(DateTime));
答案 0 :(得分:3)
您可以通过以下方式之一来完成此任务:
创建ASP.NET Web应用程序项目。在“项目名称”中键入“WebApplication_Subroutine”。
添加对U2NETDK程序集的引用(U2.Data.Client)
将标题'欢迎使用ASP.NET!'更改为'欢迎使用U2 Toolkit for .NET演示业务逻辑子程序的多值字符串数据到.NET DataSet!'
打开'Default.aspx'文件并转到设计模式。
执行以下操作:
拖放GridView控件。
右键单击解决方案资源管理器。选择Add - > New Item-DataSet。在“名称”框中,键入“Employee.xsd”
将DataTable拖放到Designer中。将名称更改为“员工”表。
创建3个新列(U2子例程架构):
在设计模式下打开'Default.aspx'文件。双击“加载按钮”。它将创建事件处理程序代码。
剪切并粘贴以下代码。
protected void Button1_Click(object sender, EventArgs e)
{
U2ConnectionStringBuilder l = new U2ConnectionStringBuilder();
l.Server = "127.0.0.1";
l.UserID = "user";
l.Password = "pass";
l.Database = "HS.SALES";
l.ServerType = "universe";
string lconnstr = l.ToString();
U2Connection c = new U2Connection();
c.ConnectionString = lconnstr;
c.Open();
U2Command command = c.CreateCommand();
command.CommandText = "CALL MV_TO_DATASET_SELECT_SUBROUTINE(?,?)";
command.CommandType = CommandType.StoredProcedure;
U2Parameter p1 = new U2Parameter();
p1.Direction = ParameterDirection.InputOutput;
p1.Value = "";
p1.ParameterName = "@arg_input";
command.Parameters.Add(p1);
U2Parameter p2 = new U2Parameter();
p2.Direction = ParameterDirection.InputOutput;
p2.Value = "";
p2.ParameterName = "@arg_output";
command.Parameters.Add(p2);
command.ExecuteNonQuery();
Employee.EmployeeDataTable dt = new Employee.EmployeeDataTable();
command.Parameters[1].MV_To_DataTable(dt);
Session["GridDataset"] = dt;
this.GridView1.DataSource = dt;
this.GridView1.DataBind();
}
运行该应用程序。按“加载”按钮。
在设计模式下打开'Default.aspx'文件。双击“更新按钮”。它将在Code后面的页面中创建Event Handler。 剪切并粘贴以下代码。
protected void Button2_Click(object sender, EventArgs e)
{
DataTable dt = (DataTable)Session["GridDataset"];
//To TEST, change first row
string s1 = (string)dt.Rows[0]["Name"];
dt.Rows[0]["Name"] = s1 + "NewValue";
// get the modified rows
DataTable dt_changed = dt.GetChanges();
//call DATASET_TO_MV_UPDATE_SUBROUTINE
U2ConnectionStringBuilder l = new U2ConnectionStringBuilder();
l.Server = "127.0.0.1";
l.UserID = "user";
l.Password = "pass";
l.Database = "HS.SALES";
l.ServerType = "universe";
string lconnstr = l.ToString();
U2Connection c = new U2Connection();
c.ConnectionString = lconnstr;
c.Open();
U2Command command = c.CreateCommand();
command.CommandText = "CALL DATASET_TO_MV_UPDATE_SUBROUTINE(?)";
command.CommandType = CommandType.StoredProcedure;
U2Parameter p1 = new U2Parameter();
p1.Value = "";
p1.Direction = ParameterDirection.InputOutput;
p1.ParameterName = "@arg_data";
command.Parameters.Add(p1);
command.Parameters[0].DataTable_To_MV(dt_changed);
// modified data going to subroutine
string lData = (string)command.Parameters[0].Value;
command.ExecuteNonQuery();
}
单击“更新按钮”时,请参阅调试器中的“修改的值”。
在Visual Studio Server Explorer中创建U2数据连接。展开存储过程节点。
转到返回结果集/数据集的子例程。将子例程拖放到DataSet Designer中。 它显示了INPUT参数和结果集/数据集列。