(C#+ACCESS)我用下面代码进行姓名模糊查询,不能进行,如nam1字段值有:张东、张赵丁、张越,当我在TextBox1中输入"张*"(输入时不带引号哈),可就是不能同时查出这几条姓张的记录,而分别输入“张东、张赵丁、张越”时却能查询出对应的这条记录,这就成精确查询了,请问这里的Like为何没有达到想要的目的,请指教,谢谢!
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("~/data/xsgl.mdb");
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
String sql = "select fiel1,clas1,numbe1,nam1 from ACDF where nam1 Like '" + TextBox1.Text.Trim() + "'";
OleDbCommand cmd = new OleDbCommand(sql, conn);
OleDbDataReader reader = cmd.ExecuteReader();
GridView1.DataSource = reader;
GridView1.DataBind();
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("~/data/xsgl.mdb");
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
String sql = "select fiel1,clas1,numbe1,nam1 from ACDF where nam1 Like '" + TextBox1.Text.Trim() + "'";
OleDbCommand cmd = new OleDbCommand(sql, conn);
OleDbDataReader reader = cmd.ExecuteReader();
GridView1.DataSource = reader;
GridView1.DataBind();
解决方案 »
- 怎样将数据库的字段内容和另外一个表相关联
- 怎么利用MSBuild在编译的时候,自动在某段程序代码加上一些其他的代码。
- VS C#的工程可否与Ant 集成?
- 这段代码里面的问题?(至少三个)
- 如何在TextBox编辑时,按下回车就运行一个按钮单击事件.
- c#怎样从DataTable里面读数据?
- 请问在Repeater控件里的ItemTemplate里使用DataList控件为什么出错~!
- 运行时遇到了错误。此错误的地址为 0x791f7e06,在线程 0xe24 上。错误代码为 0xc0000005
- 我该怎么样才能用C#合并EXCEL对象中的单元格呢?
- 数据库,有源代码.请高手指教!!
- C# WebService下载大文件问题
- 有谁知道用VS2005做网站时新建文件(如.aspx,.cs)默认用utf-8
直接用张。。
nam1 Like '%" + TextBox1.Text.Trim() + "%'"; 反正最后的sql语句应该是select fiel1,clas1,numbe1,nam1 from ACDF where nam1 Like ‘%张东%’
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) http://feiyun0112.cnblogs.com/
如果那个百分号内是TextBox1.Text.Trim()取出来的内容就是张三这个确切的名字了,不对,想办法只取出那个姓就行了
Like '张%'
张X
Like '张_'包括 '_大_'、'_大%'、'%大%'、'%大'等等……“_”:至少一个
“%”:0或多个
http://www.1-100.org/asp/2006/9422.htm
自己看把
String sql = "select fiel1,clas1,numbe1,nam1 from ACDF where nam1 Like '" + strTxt + "'";
如果 你要对输入的 % 和 _ 保持原意进行查询,Sql里还得用escape定义转义字符
SELECT * FROM [user] WHERE u_name LIKE '%三%' AND u_name LIKE '%猫%'若使用 SELECT * FROM [user] WHERE u_name LIKE '%三%猫%'
虽然能搜索出“三脚猫”,但不能搜索出符合条件的“张猫三”。2,_: 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句:比如 SELECT * FROM [user] WHERE u_name LIKE '_三_'
只找出“唐三藏”这样u_name为三个字且中间一个字是“三”的;再比如 SELECT * FROM [user] WHERE u_name LIKE '三__';
只找出“三脚猫”这样name为三个字且第一个字是“三”的;
3,[ ]:表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。比如 SELECT * FROM [user] WHERE u_name LIKE '[张李王]三'
将找出“张三”、“李三”、“王三”(而不是“张李王三”);如 [ ] 内有一系列字符(01234、abcde之类的)则可略写为“0-4”、“a-e”
SELECT * FROM [user] WHERE u_name LIKE '老[1-9]'
将找出“老1”、“老2”、……、“老9”;4,[^ ] :表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。比如 SELECT * FROM [user] WHERE u_name LIKE '[^张李王]三'
将找出不姓“张”、“李”、“王”的“赵三”、“孙三”等;SELECT * FROM [user] WHERE u_name LIKE '老[^1-4]';
将排除“老1”到“老4”,寻找“老5”、“老6”、……
而你这个是c#在access里进行数据库操作,因此可以用下面语句:
String sql = "select fiel1,clas1,numbe1,nam1 from ACDF where nam1 Like '" + TextBox1.Text.Trim() + "*'";
access里模糊查询基本句型: select * from tablename where columname like '张*'