首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ObjectDataSource故障

ObjectDataSource故障
EN

Stack Overflow用户
提问于 2009-09-18 09:24:44
回答 1查看 424关注 0票数 1

我申请的公司给了我一个小项目。他们想要一个使用asp.net GridViewFormView和带有DataSet (xsd)文件的ObjectDataSource的小型应用程序。我一直在做3层应用程序,但以一种不同的方式,我的DataAccess层是一个c文件,带有接受参数和返回数据表等方法。我的业务层是另一个类,具有返回业务对象的静态方法和使用DAL类的集合。现在这个ObjectDataSource是我不喜欢的东西,它生成了一些我甚至看不到的代码?

我可以让应用程序工作到一定程度(90%)。另外10%是我的问题所在。我需要按名称搜索功能。有两个ObjectDataSources 1和2。ObjectDatasource1只在第一次加载时获取表中的每条记录。当搜索按钮被裁剪时,我将gridview的数据源设置为第二个控件,它有一个名为GetDataByNameSearch的方法,该方法应该接受一个参数(都是由wizzzardz定义的),参数源是ObjectDataSource (TextBox.Text)。虽然我的FormView在从QueryString获取参数时工作得很好,但是这个搜索没有返回任何结果。搜索语句如下:

代码语言:javascript
复制
SELECT     Birthday, CreatedAt, ID, Name, Surname
FROM         Users
WHERE     (Name LIKE '%@name%') OR
                      (Surname LIKE '%@name%')

有没有关于如何使用这些ObjectDataSources的想法,让生活变得更容易(!)

EN

回答 1

Stack Overflow用户

发布于 2009-09-20 08:47:52

没有代码样本就很难判断,但我确实注意到您使用SQL参数有点不寻常。

您必须:

代码语言:javascript
复制
SELECT Birthday, CreatedAt, ID, Name, Surname 
FROM Users 
WHERE (Name LIKE '%@name%') OR (Surname LIKE '%@name%')

我不确定SQL '@‘参数在周围有演讲标记的情况下是否会起作用。我认为上面的例子只会导致在查询中使用文字字符串'%@name%‘,这就是为什么你可能得不到任何结果的原因。

SQL参数通常是这样使用的:

代码语言:javascript
复制
SELECT Birthday, CreatedAt, ID, Name, Surname 
FROM Users 
WHERE (Name LIKE @name) OR (Surname LIKE @name)

..。但当然,您将丢失'%‘通配符。在将它们传递给查询之前,您可以将它们直接添加到参数字符串中。如果这是不可能的,也许可以尝试这个版本:

代码语言:javascript
复制
SELECT Birthday, CreatedAt, ID, Name, Surname 
FROM Users 
WHERE (Name LIKE '%' + @name + '%') OR (Surname LIKE '%' + @name + '%')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1443434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档