日期:2014-05-18  浏览次数:20391 次

ASP.NET中SqlDataAdapter的应用
我在前台页面中创建了一个GridView,想通过后台代码中返回的数据让GridView显示,且据有分面的功能.

 后台代码函数为:
 public static DataSet GetProducts(int ID)
  {
  SqlConnection myConnection = new SqlConnection(Constr);  

  SqlCommand myCommand = new SqlCommand("SelectCity", myConnection);

  // 设置sqlCommand的模式为执行存储过程
  myCommand.CommandType = CommandType.StoredProcedure;

  SqlParameter parameterID = new SqlParameter("@ID", SqlDbType.Int, 4);
  parameterID.Value = ID;
  myCommand.Parameters.Add(parameterID);

  myConnection.Open();

  SqlDataAdapter abc = new SqlDataAdapter(myCommand.ExecuteScalar()); DataSet dtr = new DataSet();
   
  abc.Fill(dtr);
  return dtr;
  }
 一般的情况SqlDataAdapter的使用方法是:SqlDataAdapter abc = new SqlDataAdapter(sql,connect)
 我想通过存储过程SelectCity返回的值作为数据来填充DataSet对象dtr,不知道如何让SqlDataAdapter来接收存储过程返回
 结果.上面红色的部分应该怎么写啊.

  存储过程SelectCity代码如下:
  ALTER PROCEDURE dbo.SelectCity
(
@ID int
)

  AS
SELECT 
ID,
CityName
FROM
City
WHERE
ID=@ID


------解决方案--------------------
SqlDataAdapter abc = new SqlDataAdapter("SelectCity", myConnection);
这样就行
前面的Command不用
------解决方案--------------------
C# code
public static DataSet GetProducts(int ID) 
    { 
        SqlConnection myConnection = new SqlConnection(Constr);      

        SqlCommand myCommand = new SqlCommand("SelectCity", myConnection); 

        // 设置sqlCommand的模式为执行存储过程 
        myCommand.CommandType = CommandType.StoredProcedure; 

        SqlParameter parameterID = new SqlParameter("@ID", SqlDbType.Int, 4); 
        parameterID.Value = ID; 
        myCommand.Parameters.Add(parameterID); 

        SqlDataAdapter abc = new SqlDataAdapter(myCommand);    
    
DataSet dtr = new DataSet(); 
        
        abc.Fill(dtr); 
        return dtr; 
    }

------解决方案--------------------
建议用存储过程分页。然后用ObjectDataSource作为GridView的数据源。ObjectDataSource你看看它的属性栏,它本身就支持分页(EnablePaging属性),还有startRowIndexParameterName, maximumRowsParameterName,SelectCountMethod等等属性。这些都与自定义分页有关。

参考Scott Mitchel的Data Access Tutorials.

http://www.asp.net/learn/data-access 其中#24~#27部分。
------解决方案--------------------
SqlDataAdapter abc=new SqlDataAdapter('SelectCity',myConnection)像这样写应该就可以了。