c# - 在 C#.NET 中为 Web 服务应用程序使用选择查询

标签 c# sql-server-2008

当我们使用 C#.NET 创建 Web 服务以连接到 SQL 数据库时,我无法理解 select * 查询的编写方式。

基本上,我有 4 列。我正在接受用户的特定输入,这是第一列的现有值。现在,根据该值,我想选择剩余 3 列的所有记录。我需要编写一个 SELECT * 查询,但我不知道我将以何种形式获得这些记录。我听说过 SqlDataAdapter,但它会以行-列格式返回我的记录,还是必须将结果存储在某种列表中,然后将其用于其他目的。

有人可以帮助我理解如何编写这样的查询吗?

这段代码是错误的,但它会帮助理解我需要什么

我想根据我的“where子句”条件获取其他列的记录

        using System;
        using System.Collections;
        using System.ComponentModel;
        using System.Data;
        using System.Linq;
        using System.Web;
        using System.Web.Services;
        using System.Web.Services.Protocols;
        using System.Xml.Linq;
        using System.Data.SqlClient;



   namespace statistics 
 {
       /// <summary>
/// Summary description for Service1
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
// [System.Web.Script.Services.ScriptService]
public class Service1 : System.Web.Services.WebService
{

    [WebMethod]
    public int retrieve(String rollno)
    {

        int rows=0;

        SqlConnection myConnection = new SqlConnection(@"Data Source=.\SQLEXPRESS;Initial Catalog=student;User ID=sa;Password=123");
        try
        {
            myConnection.Open();

            SqlCommand myCommand = new SqlCommand();
            myCommand.Connection = myConnection;
            String strsql = "SELECT * FROM checkrecord values WHERE rollno=@rollno";
            DataSet dataSet = new DataSet();
            SqlDataAdapter dataAdapter = new SqlDataAdapter(strsql, myConnection);
            myCommand.Parameters.Add("@rollno", SqlDbType.VarChar).Value = rollno;
            rows = myCommand.ExecuteNonQuery();
            SqlDataReader myReader = myCommand.ExecuteReader()         

        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
        finally
        {
            myConnection.Close();
        }

        return rows;
         }

      }
         }

最佳答案

您需要连接到数据库,然后使用 SQLDataAdapter 将用户输入的 SELECT 查询发送到数据库。类似的东西,

从你的表中选择 col2、col3、col4,其中 col1 = ?

使用 SQLDataAdapter 和指定查询和参数的方法有多种。 SQLDataAdapter 将返回一个包含 DataTable 的 DataSet。然后,您可以使用 DataSet 或 DataTable 将结果填充到您选择的控件(即 DataGrid)中。在 MSDN 上有一个演练:http://msdn.microsoft.com/en-us/library/aa984467%28v=vs.71%29.aspx

根据您的编辑,您不想使用 ExecuteNonQuery。要获取您使用 ExecuteReader 的行。这里的例子: http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executereader%28v=VS.71%29.aspx

关于c# - 在 C#.NET 中为 Web 服务应用程序使用选择查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8038530/

相关文章:

c# - 在oracle存储过程中使用CASE语句

sql-server - 查找 2 个日期之间的星期一

SQL 比较每小时总订单并删除当前库存可能吗?

c# - 按列排序的 Linq 查询摘要

c# - 输出一个 ISO 8601 字符串

SQL解析键值字符串

c# - 如何在不使用 catch Exception 的情况下从 .NET 应用程序检测 sql server 超时

sql - 获取对象信息

c# - 专业的 C#/.Net/WPF 开发人员应该知道什么?

c# - 如何从数组中转换对象