Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将简单引号添加到if语句中_C#_Sql_Entity Framework_Visual Studio_Null - Fatal编程技术网

C# 将简单引号添加到if语句中

C# 将简单引号添加到if语句中,c#,sql,entity-framework,visual-studio,null,C#,Sql,Entity Framework,Visual Studio,Null,我想将用户输入的用户名和密码与本地数据库进行比较 当我试图在我的数据库上请求时,我发现我必须在请求中加入简单的引号,例如 SELECT * FROM Administrator WHERE UserName = 'FSelva'; 问题是,当我检查数据库时,我是这样做的: if((username == admin.UserName) && (password == admin.Pass)) { this.Close();

我想将用户输入的用户名和密码与本地数据库进行比较

当我试图在我的数据库上请求时,我发现我必须在请求中加入简单的引号,例如

SELECT * FROM Administrator
WHERE UserName = 'FSelva';
问题是,当我检查数据库时,我是这样做的:

if((username == admin.UserName) && (password == admin.Pass))
        {
            this.Close();
            MainPage retourpageprincipale = new MainPage();
            retourpageprincipale.Show();
        }
        else
        {
Admin.***是数据库变量,username和password是捕获用户输入内容的变量

当我一步一步地执行时,admin.UserName为Null,例如admin.Pass

我认为添加简单的引号,如:

if((username == "'" && admin.UserName && "'") && (password == "'" && admin.Pass && "'"))
可以解决我的问题。但我不能这样做

有人知道语法是什么吗

编辑:

这是全部代码:

namespace WpfApplication3
{
    public partial class Window1 : Window
    {
        private Database1Entities1 conn = new Database1Entities1();
        public Window1()
        {
            InitializeComponent();
        }
        private void ConnectionClick(object sender, RoutedEventArgs e)
        {
            var username = UserNameBox.Text;
            var password = PasswordBox.Text;
            con.Database.Connection.Open();

            Administrator admin = new Administrator();

            if((username == admin.UserName) && (password == admin.Pass))
            {
                this.Close();
                MainPage retourpageprincipale = new MainPage();
                retourpageprincipale.Show();
            }
            else
            {
                MessageBox.Show("Combo Admin/Password non valide!
            }
其中Administrator是我的管理表:

public partial class Administrator
{
    public int Id { get; set; }
    public string UserName { get; set; }
    public string Pass { get; set; }
    public bool IsSuperAdmin { get; set; }
}
当我一步一步地编写此代码时,在第行:

if((username == admin.UserName) && (password == admin.Pass))
用户名值是RSans(我在IHM中写入的内容) 密码值为1234abcd(我在IHM中写入的内容) admin.UserName值为空 admin.Pass为空

而且, 管理员值为WpfApplication3.Administrator conn值为WPFAApplication3.Database1实体1

如果你需要其他信息,我会再次编辑我的帖子

编辑2:

这是我的数据库1实体1完整代码:

namespace WpfApplication3
{
    using System;
    using System.Data.Entity;
    using System.Data.Entity.Infrastructure;
public partial class Database1Entities1 : DbContext
{
    public Database1Entities1()
        : base("name=Database1Entities1")
        {
        }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        throw new UnintentionalCodeFirstException();
    }
    public DBSet<Administrator> Administrator { get; set; }
}
命名空间WpfApplication3
{
使用制度;
使用System.Data.Entity;
使用System.Data.Entity.Infrastructure;
公共部分类数据库1实体1:DbContext
{
公共数据库1实体1()
:base(“名称=数据库1实体1”)
{
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
抛出新代码FirstException();
}
公共数据库集管理员{get;set;}
}

代码中的问题在于从数据库中读取信息。如果两个admin.*属性都为null,则表示它们在数据库中为null,或者您没有正确设置它们。 此外,您不需要简单的引号。它们在SQL中用于显示单元格的类型为字符串。在C#中读取对象的信息后,您将看到引号消失了。调试代码和逐行查看错误是最简单的

更新 由于您使用的是实体框架,以下是如何从数据库检索信息:

您的
Database1Entities1
就是所谓的DbContext。您可以使用它来查询数据库。它应该有一个属性
Administrators
。如果没有,您可以将以下部分添加到
Database1Entities1
类中:

public DbSet<Administrator> Administrators { get; set; }
由于您已经在查询数据库,您可以在一个步骤中添加整个检查(包括密码):

var admin = conn.Administrators.SingleOrDefault(a => a.UserName == "FSelva" && a.Password == "...");
// if there is no match, the admin object will be NULL here
更新2 您不需要手动打开连接。Entity Framework将为您执行此操作。因此您可以删除该行:

con.Database.Connection.Open();

您能显示创建admin对象的代码和进行数据库调用的代码吗?语法应该是a+,而不是&&,但这不应该解决这个问题。您想实现什么?此时
admin.UserName
是否应该为空?后期编辑,我想我已经回答了您的问题。@JohnSaunders:当我尝试不这样做时o Acrease是一个简单的管理员登录本地数据库。用户在基本IHM中输入用户名和密码,我检查用户名/密码是否存在于数据库中,如果存在,则登录。通常,这种比较将在数据库中进行,而不是在您的代码中。我理解您的意思,但是..当我打开服务器资源管理器并o“显示表格数据”在我的管理员表中,我看到了我之前输入的信息:用户名:FSelva Pass:abcd1234 issuepadmin:False和用户名:RSans Pass:1234abo issuepadmin:True我的表管理员不是空的。我理解简单的引号。所以我的问题不同:为什么我没有成功检查管理员的值。当我将它们与用户提示进行比较。您正在通过“Administrator admin=new Administrator();”创建管理员类的新实例。您需要做的不是此行,而是从数据库中读取信息。仅打开连接是不够的。如果您告诉我您使用的是哪种数据库技术(例如,实体框架),我可以为您提供一个小片段。非常感谢。我使用实体框架技术。我创建了一个名为Database1.mdf的基于服务的数据库,然后如果您需要任何其他信息,我创建了一个名为Model1.edmx的ADO.NET实体数据模型。Visual Studio告诉我:“找不到类型或命名空间名称'DbSet'。是否需要添加任何引用?请发布Database1Entities1类的完整代码。
con.Database.Connection.Open();