简体   繁体   English

如何在C#中使用sql dataadapter进行内联查询作为存储过程

[英]how to make in line query as stored procedure with sql dataadapter in c#

im having inline query i want to make it stored procedure . 我有内联查询,我想使其成为存储过程。 how to write sp in C# in my case 在我的情况下如何在C#中编写sp

SqlConnection connection = new SqlConnection(GetConnectionString());
DataSet ds = new DataSet();
SqlDataAdapter Dap_Proj;

if (Session["LoginUser"] == null)
{
    Response.Redirect("Login.aspx");
}
else if (Session["LoginUser"].ToString() == "admin" || Session["CustomerId"] == "1")
{

    Dap_Proj = new SqlDataAdapter("select LinkId,LinkName,CategoryId, ReportLinks,SubmissionStatus,convert(nvarchar(18),LnkSubmsnDate) as LnkSubmsnDate, convert(nvarchar(18), LnkUpdateDate) as LnkUpdateDate,LnkSubmtdBy,K.KeyWord,RenewalDate  from tbl_Link L left join Tbl_keywords K on L.KeywordID=K.KeywordID  where (SubmissionStatus='Approved'or SubmissionStatus='Waiting for Approval') and  LnkSubmtdBy like '%%' and Convert(Char(4),LnkSubmsnDate,100) in (select Convert(Char(4),LnkSubmsnDate,100) from tbl_Link )order by case when RenewalDate is null then 1 else 0 end,RenewalDate", connection);
    ds = new DataSet();
    Dap_Proj.Fill(ds);
}

In your database: 在您的数据库中:

CREATE PROCEDURE uspGetLinks
AS

SELECT linkid, 
       linkname, 
       categoryid, 
       reportlinks, 
       submissionstatus, 
       CONVERT(NVARCHAR(18), lnksubmsndate) AS LnkSubmsnDate, 
       CONVERT(NVARCHAR(18), lnkupdatedate) AS LnkUpdateDate, 
       lnksubmtdby, 
       K.keyword, 
       renewaldate 
FROM   tbl_link L 
       LEFT JOIN tbl_keywords K 
              ON L.keywordid = K.keywordid 
WHERE  ( submissionstatus = 'Approved' 
          OR submissionstatus = 'Waiting for Approval' ) 
       AND lnksubmtdby LIKE '%%' 
       AND CONVERT(CHAR(4), lnksubmsndate, 100) IN (SELECT 
           CONVERT(CHAR(4), lnksubmsndate, 100) 
                                                    FROM   tbl_link) 
ORDER  BY CASE 
            WHEN renewaldate IS NULL THEN 1 
            ELSE 0 
          END, 
          renewaldate 
GO

In C#: 在C#中:

if (Session["LoginUser"] == null)
{
    Response.Redirect("Login.aspx", true);
}

DataSet ds = new DataSet();
using(var connection  = new SqlConnection(GetConnectionString()))
{
    using(var Dap_Proj = new SqlDataAdapter("uspGetLinks", connection))
    {
        Dap_Proj.SelectCommand.CommandType = CommandType.StoredProcedure;
        Dap_Proj.Fill(ds);
    }
}
            String connStr = GetConnectionString());
            String cmdStr = "SQLStoredProcedure";
            try
            {
                using (SqlConnection conn = new SqlConnection(connStr))
                {
                    using (SqlCommand cmd = new SqlCommand(cmdStr, conn))
                    {
                        conn.Open();
                        cmd.CommandType = CommandType.StoredProcedure;
                        cmd.ExecuteNonQuery();
                        conn.Close();
                        cmd.Dispose();
                        conn.Dispose();
                    }
                }
            }
            catch (Exception ex)
            {
                TextBox1.Text = ex.Message;
            }
    DataSet ds = new DataSet();
    using (SqlDataAdapter Dap_Proj = new SqlDataAdapter)
    {

... } ...}

  Dap_Proj = new SqlDataAdapter("sp_getLinks", connection);
            Dap_Proj.SelectCommand.CommandType = CommandType.StoredProcedure;
            ds = new DataSet();
            Dap_Proj.Fill(ds);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM