Sql C类查询不起作用

Sql C类查询不起作用,sql,nhibernate,Sql,Nhibernate,有人能帮我吗?我通常不在C语言工作,所以我很抱歉。我有以下可以使用的查询,但需要将store.Zip查找更改为LIKE而不是=。当我尝试将=更改为LIKE并在{0}之后添加%时,它会编译,但不会运行。数据库是Sql Server 2008: public List<Store> DoesStoreExist(string customerNumber, string zipCode) { StringBuilder sb = new StringBuilder();

有人能帮我吗?我通常不在C语言工作,所以我很抱歉。我有以下可以使用的查询,但需要将store.Zip查找更改为LIKE而不是=。当我尝试将=更改为LIKE并在{0}之后添加%时,它会编译,但不会运行。数据库是Sql Server 2008:

public List<Store> DoesStoreExist(string customerNumber, string zipCode) {
    StringBuilder sb = new StringBuilder();
    sb.Append("SELECT id, Company, CustomerNumber, Name, Address, City, State, Zip, Phone, Latitude, Longitude, NumOfReferrals, IsNashville, PredsPromotionParticipant ");
    sb.Append("FROM dbo.Stores store ");
    sb.AppendFormat("WHERE store.CustomerNumber='{0}' ", customerNumber);
    sb.AppendFormat("AND store.Zip ='{0}' ", zipCode);
    sb.AppendFormat("AND store.Locator=1");

    IQuery query = NHibernateSession.CreateSQLQuery(sb.ToString());
    IList results = query.List();
    List<Store> stores = new List<Store>();
    foreach (object result in results) {
        object[] result_arr = result as object[];
        if (result_arr != null) stores.Add(Store.From(result_arr));
    }
    return stores;

}
谢谢

试试这个

    public List<Store> DoesStoreExist(string customerNumber, string zipCode)
    {
        StringBuilder sb = new StringBuilder();
        sb.Append("SELECT id, Company, CustomerNumber, Name, Address, City, State, Zip, Phone, Latitude, Longitude, NumOfReferrals, IsNashville, PredsPromotionParticipant ");
        sb.Append("FROM dbo.Stores store ");
        sb.AppendFormat("WHERE store.CustomerNumber ='{0}' ", customerNumber);
        sb.AppendFormat("AND store.Zip like '{0}%' ", zipCode);
        sb.AppendFormat("AND store.Locator=1");
    }
这应该起作用:
sb.appendformatandstore.Zip类似于{0}%',zipCode

如果超时,则需要增加命令超时时间。假设您的实体对象名为“db”,请在c代码中执行查询之前执行此操作

db.CommandTimeout = 300;

超时时间以秒为单位

您遇到了什么错误?是否尝试将.Zip存储为“{0}%”,zipCode;?另外,我在任何地方都看不到like?你能用like发布你的查询吗?你的代码也容易受到SQL注入的攻击。使用参数进行研究。我要做的是处理zip+4,有时最后四位数字不在数据库中。谢谢看看我的答案,我假设您从SQL数据库获得超时异常。您还没有提到收到的错误消息。
    public List<Store> DoesStoreExist(string customerNumber, string zipCode)
    {
        StringBuilder sb = new StringBuilder();
        sb.Append("SELECT id, Company, CustomerNumber, Name, Address, City, State, Zip, Phone, Latitude, Longitude, NumOfReferrals, IsNashville, PredsPromotionParticipant ");
        sb.Append("FROM dbo.Stores store ");
        sb.AppendFormat("WHERE store.CustomerNumber ='{0}' ", customerNumber);
        sb.AppendFormat("AND store.Zip like '{0}%' ", zipCode);
        sb.AppendFormat("AND store.Locator=1");
    }
db.CommandTimeout = 300;