给个例子,呵呵
string connStr="server=localhost;uid=sa;pwd=sa;database=test";
SqlConnection objConn=new SqlConnection(connStr);
DataSet ds=new DataSet();
string sqlstr="select * from testtable  where 2>1";
SqlDataAdapter myAdapter=new SqlDataAdapter(sqlstr,objConn);
myAdapter.Fill(ds,"testtable");

解决方案 »

  1.   

    可以根据需要定义自己的函数,把微软提供的若干个函数封装在一个函数里面,在程序里面多处使用,这样提高了代码的可维护性和可重用性
    比如,一个执行sql语句的函数,我这样定义的(用的是oracle数据库)
    //========================================================================================
    //功能  :   执行指定的SQL语句
    //参数  :   要执行的Sql语句
    //返回值  :  1:执行成功;0:执行失败
    //创建日期:  2002-12-23
    //========================================================================================
    public int ExeSql(string Sql)
    {
    OracleConnection myConnection = new OracleConnection(this.ConnectionString);
    OracleCommand myCommand=new OracleCommand(Sql,myConnection);
    try
    {
    myConnection.Open();
    myCommand.ExecuteNonQuery();
    myCommand.Dispose();
    myConnection.Close();
    return 1;
    }
    catch(OracleException e)
    {
    errMsg = "";
    errMsg += e.Message;
    myConnection.Close();
    return 0;
    }
    }
      

  2.   

    to:luofix(枯古) 你说的这个办法我知道,我也是这么做的,但Microsoft的Duwamish例子为什么那样做呢?哪个好?或者应该在什么时候用什么办法呢?
      

  3.   

    我想用存储过程的效率能高一些,但是设计起来比较繁琐,想我们那样的方法对迅速开发是一个很好的解决办法,但是损失了执行效率。所以我想简单的数据访问就用我们那样的做法,如果数据量很大,对数据的操作很复杂的时候,最好还是象Duwamish那样了。
      

  4.   

    to my opinion, when you add or modify data stored in database, it's more efficient using stored procedure than using sql string. however,if you want query data from database,especially include business rules and not willing to show them to others, maybe it's more suitable for you to choise sql string.
    but that is not always true, when you consider efficiency is the primary factor,I prefer stored procedure.
      

  5.   

    to:luofix(枯古)
    那我们这样的办法也算很正规的方法喽?
    有没qq?能联系你吗?
      

  6.   

    数据库用存储过程,把数据库相关的类封装到.net的组件里面,然后在webform里面调用组件里相关的类就行了
    比如可以写一个Database类:
    using System;
    using System.ComponentModel;
    using System.Collections;
    using System.Diagnostics;
    using System.Data;
    using System.Data.SqlClient;
    using System.Configuration;
    namespace TomLi.Components
    {
    /// <summary>
    /// ADO.NET data access using the SQL Server Managed Provider.
    /// </summary>
    public class Database : IDisposable
    {
    // connection to data source
    private SqlConnection con;

    /// <summary>
    /// Run stored procedure.
    /// </summary>
    /// <param name="procName">Name of stored procedure.</param>
    /// <returns>Stored procedure return value.</returns>
    public int RunProc(string procName)
    {
    SqlCommand cmd = CreateCommand(procName, null);
    cmd.ExecuteNonQuery();
    this.Close();
    return (int)cmd.Parameters["ReturnValue"].Value;
    } /// <summary>
    /// Run stored procedure.
    /// </summary>
    /// <param name="procName">Name of stored procedure.</param>
    /// <param name="prams">Stored procedure params.</param>
    /// <returns>Stored procedure return value.</returns>
    public int RunProc(string procName, SqlParameter[] prams)
    {
    SqlCommand cmd = CreateCommand(procName, prams);
    cmd.ExecuteNonQuery();
    this.Close();
    return (int)cmd.Parameters["ReturnValue"].Value;
    } /// <summary>
    /// Run stored procedure.
    /// </summary>
    /// <param name="procName">Name of stored procedure.</param>
    /// <param name="dataReader">Return result of procedure.</param>
    public void RunProc(string procName, out SqlDataReader dataReader)
    {
    SqlCommand cmd = CreateCommand(procName, null);
    dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
    } /// <summary>
    /// Run stored procedure.
    /// </summary>
    /// <param name="procName">Name of stored procedure.</param>
    /// <param name="prams">Stored procedure params.</param>
    /// <param name="dataReader">Return result of procedure.</param>
    public void RunProc(string procName, SqlParameter[] prams, out SqlDataReader dataReader)
    {
    SqlCommand cmd = CreateCommand(procName, prams);
    dataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
    }
    /// <summary>
    /// Create command object used to call stored procedure.
    /// </summary>
    /// <param name="procName">Name of stored procedure.</param>
    /// <param name="prams">Params to stored procedure.</param>
    /// <returns>Command object.</returns>
    private SqlCommand CreateCommand(string procName, SqlParameter[] prams)
    {
    // make sure connection is open
    Open(); //command = new SqlCommand( sprocName, new SqlConnection( ConfigManager.DALConnectionString ) );
    SqlCommand cmd = new SqlCommand(procName, con);
    cmd.CommandType = CommandType.StoredProcedure; // add proc parameters
    if (prams != null)
    {
    foreach (SqlParameter parameter in prams)
    cmd.Parameters.Add(parameter);
    }

    // return param
    cmd.Parameters.Add(
    new SqlParameter("ReturnValue", SqlDbType.Int, 4,
    ParameterDirection.ReturnValue, false, 0, 0,
    string.Empty, DataRowVersion.Default, null)); return cmd;
    } /// <summary>
    /// Open the connection.
    /// </summary>
    private void Open()
    {
    // open connection
    if (con == null)
    {
    con = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
    con.Open();
    }
    } /// <summary>
    /// Close the connection.
    /// </summary>
    public void Close()
    {
    if (con != null)
    con.Close();
    } /// <summary>
    /// Release resources.
    /// </summary>
    public void Dispose()
    {
    // make sure connection is closed
    if (con != null)
    {
    con.Dispose();
    con = null;
    }
    } /// <summary>
    /// Make input param.
    /// </summary>
    /// <param name="ParamName">Name of param.</param>
    /// <param name="DbType">Param type.</param>
    /// <param name="Size">Param size.</param>
    /// <param name="Value">Param value.</param>
    /// <returns>New parameter.</returns>
    public SqlParameter MakeInParam(string ParamName, SqlDbType DbType, int Size, object Value)
    {
    return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value);
    } /// <summary>
    /// Make input param.
    /// </summary>
    /// <param name="ParamName">Name of param.</param>
    /// <param name="DbType">Param type.</param>
    /// <param name="Size">Param size.</param>
    /// <returns>New parameter.</returns>
    public SqlParameter MakeOutParam(string ParamName, SqlDbType DbType, int Size)
    {
    return MakeParam(ParamName, DbType, Size, ParameterDirection.Output, null);
    } /// <summary>
    /// Make stored procedure param.
    /// </summary>
    /// <param name="ParamName">Name of param.</param>
    /// <param name="DbType">Param type.</param>
    /// <param name="Size">Param size.</param>
    /// <param name="Direction">Parm direction.</param>
    /// <param name="Value">Param value.</param>
    /// <returns>New parameter.</returns>
    public SqlParameter MakeParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value)
    {
    SqlParameter param; if(Size > 0)
    param = new SqlParameter(ParamName, DbType, Size);
    else
    param = new SqlParameter(ParamName, DbType); param.Direction = Direction;
    if (!(Direction == ParameterDirection.Output && Value == null))
    param.Value = Value; return param;
    }
    }
    }
      

  7.   

    如果能找一个专家说说还好一点.
    我的感觉存储过程要用到恰到好处,简单的功能就没必要了!
    十分复杂的功能就用存储过程,因为用sql语句就不划算了!
      

  8.   

    在我的项目中,采用的基本上是存储过程,对于楼主提的这个问题,我认为首先应该认识好存储过程对于程序的优势,以下作为大家的参考使用 SQL Server 中的存储过程而不使用存储在客户计算机本地的 Transact-SQL 程序的优势有: 允许模块化程序设计。 
    只需创建过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次。存储过程可由在数据库编程方面有专长的人员创建,并可独立于程序源代码而单独修改。允许更快执行。 
    如果某操作需要大量 Transact-SQL 代码或需重复执行,存储过程将比 Transact-SQL 批代码的执行要快。将在创建存储过程时对其进行分析和优化,并可在首次执行该过程后使用该过程的内存中版本。每次运行 Transact-SQL 语句时,都要从客户端重复发送,并且在 SQL Server 每次执行这些语句时,都要对其进行编译和优化。减少网络流量。 
    一个需要数百行 Transact-SQL 代码的操作由一条执行过程代码的单独语句就可实现,而不需要在网络中发送数百行代码。可作为安全机制使用。 
    即使对于没有直接执行存储过程中语句的权限的用户,也可授予他们执行该存储过程的权限。
      

  9.   

    数据库不是装数据的筐,你的利用它的性能啊,传sql要多少网络开销啊
      

  10.   

    不知各位看过微软做的一个非常经典的例子-petshop,是为了跟J2EE做速度比较,里面凡是对数据库的操作基本上都是用存储过程;
    现在正在研究ing!!!
    如有需要petshop,请跟我联系!!