一个关于DataTable返回值的问题
请问下边代码有错误么?
public DataTable GetTab(string tabid)
{
string ConnString = System.Configuration.ConfigurationSettings.AppSettings[ "ConnectiongSqlServer "];
SqlConnection myConn=new SqlConnection(ConnString);
SqlCommand topcmd=new SqlCommand();
topcmd.Connection= myConn;
topcmd.Parameters.Add(new SqlParameter( "@tabid ",SqlDbType.VarChar,20));
topcmd.Parameters[ "@tabid "].Value=tabid;
topcmd.CommandText= "GetsysTab ";
topcmd.CommandType = CommandType.StoredProcedure;//new
DataTable dstable = new DataTable();
SqlDataAdapter adapter = new SqlDataAdapter(topcmd);
adapter.Fill(dstable);
return dstable;
}
为什么错误提示:类型 System.ComponentModel.ISite 的成员 System.ComponentModel.MarshalByValueComponent.Site 是接口,因此无法将其序列化。
------解决方案--------------------SqlCommand topcmd=new SqlCommand();
topcmd.Connection= myConn;
topcmd.Parameters.Add(new SqlParameter( "@tabid ",SqlDbType.VarChar,20));
topcmd.Parameters[ "@tabid "].Value=tabid;
topcmd.CommandText= "GetsysTab ";
topcmd.CommandType = CommandType.StoredProcedure;//new
这块应该有问题.
改一下写的顺序.
SqlCommand topcmd=new SqlCommand();
topcmd.Connection= myConn;
topcmd.CommandText= "GetsysTab ";
topcmd.Parameters.Add(new SqlParameter( "@tabid ",SqlDbType.VarChar,20));
topcmd.Parameters[ "@tabid "].Value=tabid;
------解决方案--------------------要返回一个数据集,要定义一个游标类型的输出参数...具体给你看一个Oracle的例子吧..
1:建立包
CREATE OR REPLACE package SCOTT.pk_test
as
type mytype is ref cursor;
procedure p_get(mycs out mytype);
end;
/
2:建立包体:
CREATE OR REPLACE package BODY SCOTT.pk_test
as
procedure p_get(mycs out mytype)
as
begin
open mycs for select * from test;
end p_get;
end pk_test;
/
3:C#掉用存储过程:
OracleConnection orcn =new OracleConnection(System.Configuration.ConfigurationSettings.AppSettings[ "scott "]);
OracleCommand cmd=new OracleCommand( "pk_test.p_get ",orcn);
cmd.CommandType=CommandType.StoredProcedure;
OracleParameter p=new OracleParameter( "mycs ",OracleType.Cursor);
p.Direction=ParameterDirection.Output;
cmd.Parameters.Add(p);
OracleDataAdapter da=new OracleDataAdapter(cmd);
DataSet ds=new DataSet();
da.Fill(ds, "test ");
this.DataGrid1.DataSource=ds.Tables[ "test "].DefaultView;
Page.DataBind();
或者看看这里:
http://dev.csdn.net/develop/article/59/59109.shtm
------解决方案--------------------返回dataset就好.
public DataTable GetTab(string tabid)
==>
public DataSet GetTab(string tabid)
fill时用dataset
------解决方案--------------------