我有一个名为Query
的类,它包含一个使用SQL查询调用数据的函数。
public static UserDetails[] BindDatatable()
{
DataTable dt = new DataTable();
List<UserDetails> details = new List<UserDetails>();
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["###"].ConnectionString))
{
using (SqlCommand cmd = new SqlCommand("select top 3 Deal, [property], [event] from [dbo].[Database_CRE_Events]", con))
{
con.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
foreach (DataRow dtrow in dt.Rows)
{
UserDetails user = new UserDetails();
user.Deal = dtrow["Deal"].ToString();
user.LoanProperty = dtrow["property"].ToString();
user.Events = dtrow["event"].ToString();
details.Add(user);
}
}
}
return details.ToArray();
}
我想知道如何将此查询传递到我的WebAPI控制器中?这是可能的,因为我在网上找不到很多例子来进一步指导我这个版本。
public class TestController : ApiController
{
private cdwEntities db = new cdwEntities();
private Query respository;
[HttpGet]
public HttpResponseMessage getData()
{
// Not sure how to pass method from Query class here?
}
}
非常感谢你的帮助。
答案 0 :(得分:1)
首先,为什么static
中的方法?
public static UserDetails[] BindDatatable()
所以如果它是静态的那么你必须像这样消耗它。
var result = Query.BindDatatable();
但如果这是一个错误,那么你必须像这样使用它,你当前的实现已经是正确的,所有你需要做的就是删除 static
修饰符,然后调用它respository
实例。
[HttpGet]
public HttpResponseMessage getData()
{
var result = repository.BindDatatable();
}
答案 1 :(得分:1)
这很简单,因为你的方法是静态的。对静态方法的调用使用以下语法
Classname.Methodname();
在您的情况下Query.BindDatatable();
您的代码可以修改如下
public class TestController : ApiController
{
private cdwEntities db = new cdwEntities();
private Query respository;
[HttpGet]
public HttpResponseMessage getData()
{
//Calling the static method in Query class
var details = Query.BindDatatable();
//Your code here
}
}