none
关于 Microsoft Jet 数据库引擎找不到输入表或查询 RRS feed

  • 问题

  • protected void btn_click(object sender, EventArgs e)
        {
            string strSQL;               
            Button btn =(Button)sender; 
            if (btn.ID == "Button2")
            {
           
                if (TextBox1.Text == "")
                {
                    Response.Write("<script language=javascript>alert('查询关键字不能为空');</script>");
                    return;
                }
                strSQL = "select * from employee where" + RadioButtonList1.SelectedItem.Text + "like'%" + TextBox1.Text + "%'";
            }
            else
            {
                TextBox1.Text = "";
                strSQL = "select * from employee";
            }
            OleDbConnection conn = new OleDbConnection();
            conn.ConnectionString = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + Server.MapPath(@"App_Data/employee.mdb");
            conn.Open();
            OleDbCommand com = new OleDbCommand(strSQL,conn);
            OleDbDataReader dr = com.ExecuteReader();   
            GridView1.DataSource = dr;
            if (GridView1.Rows.Count == 0)
            {
                Response.Write("<script language=javascript>alert('未找到符号条件的记录');</script>");
            }
            conn.Close();
        }
    }

    提示错误是,Microsoft Jet 数据库引擎找不到输入表或查询 'employee'。 确定它是否存在,以及它的名称的拼写是否正确。
    请问是我的conn对象的链接字符串属性错误吗?
    2009年11月12日 9:39

答案

  • 你好!

    这是提示你数据库中 employee 表不存在,并不是你的连接有问题。即然你的数据库放在 App_Data 下面连接可以采用下面的方式

    Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\myDatabase.mdb;User Id=admin;Password=;

    关于连接字符串更多的写法可以查看下面地址:


    知识改变命运,奋斗成就人生!
    • 已标记为答案 tdmagicjie 2009年11月17日 13:17
    2009年11月12日 9:45
    版主
  • 如两位版主所述 请先检查下表employee是否存在

    同时有一点要提醒下
    strSQL = "select * from employee where" + RadioButtonList1.SelectedItem.Text + "like'%" + TextBox1.Text + "%'";

    这个是不行的
    因为你在where 和like 之间都没有空格

    strSQL = "select * from employee where " + RadioButtonList1.SelectedItem.Text + " like'%" + TextBox1.Text + "%'";

    同时如果选择的Text中特殊字符 那么整个sql会无效 也会发生错误的
    所以建议采用参数化查询


    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!My blog~~~
    • 已标记为答案 tdmagicjie 2009年11月17日 13:06
    2009年11月13日 1:12
    版主

全部回复

  • 你好!

    这是提示你数据库中 employee 表不存在,并不是你的连接有问题。即然你的数据库放在 App_Data 下面连接可以采用下面的方式

    Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\myDatabase.mdb;User Id=admin;Password=;

    关于连接字符串更多的写法可以查看下面地址:


    知识改变命运,奋斗成就人生!
    • 已标记为答案 tdmagicjie 2009年11月17日 13:17
    2009年11月12日 9:45
    版主
  • 你好!
         检查一下你的数据库中是否存在employee表,注意大小写!
    周雪峰
    2009年11月12日 9:59
    版主
  • 如两位版主所述 请先检查下表employee是否存在

    同时有一点要提醒下
    strSQL = "select * from employee where" + RadioButtonList1.SelectedItem.Text + "like'%" + TextBox1.Text + "%'";

    这个是不行的
    因为你在where 和like 之间都没有空格

    strSQL = "select * from employee where " + RadioButtonList1.SelectedItem.Text + " like'%" + TextBox1.Text + "%'";

    同时如果选择的Text中特殊字符 那么整个sql会无效 也会发生错误的
    所以建议采用参数化查询


    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!My blog~~~
    • 已标记为答案 tdmagicjie 2009年11月17日 13:06
    2009年11月13日 1:12
    版主
  • Thanks
    2009年11月17日 13:06
  • 这不是System.Data.SqlClient用的吗?
    2009年11月17日 13:18
  • 是 ACCESS 的。
    知识改变命运,奋斗成就人生!
    2009年11月18日 1:31
    版主