Ligh7ninG
Ligh7ninG
2017-05-17 04:47
采纳率: 100%
浏览 1.2k

C#连接Access 语句里用WHERE就会出错

刚接触C# Access WPF这些东西,想写个小的图书馆借阅系统
然后在用户登录这块,想的是获取用户输入(username和password),然后从数据库中取得已保存的对应username的password,和用户输入的进行比对,但是写查询语句这块,如果用到where,程序就会报错,为了方便我先在控制台程序里测试,下面是详细代码。

 OleDbConnection _conn = new OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = "+@"userdb.mdb");
            OleDbDataAdapter _Ada = new OleDbDataAdapter("SELECT password FROM Admin", _conn);
            DataSet dataSet = new DataSet();
            _Ada.Fill(dataSet);
            foreach (DataRow mDr in dataSet.Tables[0].Rows)
                foreach (DataColumn mDc in dataSet.Tables[0].Columns)
                    Console.WriteLine(mDr[mDc].ToString());

如果按上面那样写,运行很正常,最后可以显示获取到的全部密码

但是如果把语句改成SELECT password FROM Admin WHERE username = Admin
程序就会报错

图片说明

求问各路大神如何解决?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • showbo
    已采纳

    参数值要用引号括起

     SELECT password FROM Admin WHERE username =' Admin'
    
    点赞 评论
  • Intangible_moon
    Intangible_moon 2017-05-17 05:13

    Admin 是表名还是具体的列明 如果想要返回用户名和密码相同的用户 是否应该是username = password呢

    点赞 评论
  • cc111cc111cc
    HeRo_OO7 2017-05-17 12:50

    sql语句中,where后面的条件一般得看表中的字段具体是什么数据类型,
    若是字符串(vachar,nvarchar 等),则要带上 'XXX' 引号(datetime类型也是如此);
    若是int、bit、decimal 等类型,则不需要带引号。
    理论上所有系统中用户名这个字段都是 字符类型。

    点赞 评论
  • liuccsucn
    liuccsucn 2017-05-18 01:27

    字符类型要加上单引号

    点赞 评论

相关推荐