代码如下:using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.OleDb;//自己加入的代码
public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        string sss;
        sss = "小科";
        //生成连接字符串
        OleDbConnection LzhCon1 = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=|DataDirectory|db_wygl.mdb;");
        LzhCon1.Open();
        //生成命令对象
        OleDbCommand LzhCmd1 = new OleDbCommand("select * from tb_qianfei where name = ' " + sss + " ' ", LzhCon1);
        //生成Reader对象获取数据,注意OleDbDataReader对象不能用New来实例化
        OleDbDataReader LzhReader1 = LzhCmd1.ExecuteReader();
        bool iii;
        iii = LzhReader1.Read();
    }
}已经核实:
1.本工程的App_Data目录中有 db_wygl.mdb 的数据库
2.db_wygl.mdb 数据库中有 tb_qianfei 表
3.tb_qianfei 表中有 name 字段
4.name 字段中第一个记录就是 “小科”
问题:
运行了多次,单步调试了多次 iii 总是为 false 请问这是为什么啊?明明有的记录怎么找不到啊?
尝试:
如果我把
"select * from tb_qianfei where name = ' " + sss + " ' ", LzhCon1);
换成
"select * from tb_qianfei", LzhCon1);
那么iii变量就可以为true了。请教大家这是什么原因啊????

解决方案 »

  1.   

    数据库  的 name 字段是什么类型?
      

  2.   

    我估计是你数据库的字段问题。  字符串后面被截取多了空格。  所以导致你查询where条件name值没有匹配上。
      

  3.   

    楼主可以用调试一下,在sql语句处设置断点。。把运行到断点时的sql语句复制到数据库中运行看看,是不是sql语句的错误
      

  4.   


    OleDbCommand LzhCmd1 = new OleDbCommand("select * from tb_qianfei where [name] = ' " + sss + " ' ", LzhCon1); 
    name 在 Access 中为关键字,需要用 "[]" 括起来。