Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.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# Dapper:必须在Select命令中声明标量变量_C#_Sql_Dapper - Fatal编程技术网

C# Dapper:必须在Select命令中声明标量变量

C# Dapper:必须在Select命令中声明标量变量,c#,sql,dapper,C#,Sql,Dapper,下面的查询 Connection.Query<User>("select * from User where Login=@login and Passwd=@passwd", new { login = _login, passwd=_passwd}) 更新: 我的问题来自SQL连接 我的连接字符串是 new OleDbConnection(@"Provider=sqloledb;Data Source=MYPC\SQLEXPRESS;Initial Catalog=MYDB;U

下面的查询

Connection.Query<User>("select * from User where Login=@login and Passwd=@passwd", new { login = _login, passwd=_passwd})
更新:

我的问题来自SQL连接

我的连接字符串是

new OleDbConnection(@"Provider=sqloledb;Data Source=MYPC\SQLEXPRESS;Initial Catalog=MYDB;User Id=sa;Password=****;");
我把它改成了

new SqlConnection(@"Data Source=MYPC\SQLEXPRESS;Initial Catalog=MYDB;User Id=sa;Password=****;");

经过SQL Server测试,似乎工作正常:

[Test]
public void simple_select_test()
{
    using (var conn = new SqlConnection(@"Data Source=.\sqlexpress; Integrated Security=true; Initial Catalog=test"))
    {
        var result = conn.Query<User>(
            "select * from (select Id = 420, Login = 'foo', Passwd = 'bar') a where Login=@login and Passwd=@passwd",
            new {login = "foo", passwd = "bar"}).First();

        Assert.That(result.Login, Is.EqualTo("foo"));
        Assert.That(result.Passwd, Is.EqualTo("bar"));
    }
}

经过SQL Server测试,似乎工作正常:

[Test]
public void simple_select_test()
{
    using (var conn = new SqlConnection(@"Data Source=.\sqlexpress; Integrated Security=true; Initial Catalog=test"))
    {
        var result = conn.Query<User>(
            "select * from (select Id = 420, Login = 'foo', Passwd = 'bar') a where Login=@login and Passwd=@passwd",
            new {login = "foo", passwd = "bar"}).First();

        Assert.That(result.Login, Is.EqualTo("foo"));
        Assert.That(result.Passwd, Is.EqualTo("bar"));
    }
}

通过PostgreSQL测试,一切正常:

class Program
{
    static void Main(string[] args)
    {
        var connectionString = "User ID=postgres;Password=pass;Host=localhost;Port=5432;Database=TestUser;";
        var connection = new NpgsqlConnection(connectionString);
        var _login = "someLogin";
        var _passwd = "somePass";

        connection.Open();
        var result = connection.Query<User>("select * from public.users where login=@login and password=@passwd", new { login = _login, passwd = _passwd });
        connection.Close();

        foreach (var item in result)
        {
            Console.WriteLine($"Id: {item.Id}. Login: {item.Login}");
        }
    }
}

public class User
{
    public int Id { get; set; }
    public string Login { get; set; }
    public string Password { get; set; }
}

像某些登录一样登录可以正常工作,并返回预期结果。

通过PostgreSQL测试,一切正常:

class Program
{
    static void Main(string[] args)
    {
        var connectionString = "User ID=postgres;Password=pass;Host=localhost;Port=5432;Database=TestUser;";
        var connection = new NpgsqlConnection(connectionString);
        var _login = "someLogin";
        var _passwd = "somePass";

        connection.Open();
        var result = connection.Query<User>("select * from public.users where login=@login and password=@passwd", new { login = _login, passwd = _passwd });
        connection.Close();

        foreach (var item in result)
        {
            Console.WriteLine($"Id: {item.Id}. Login: {item.Login}");
        }
    }
}

public class User
{
    public int Id { get; set; }
    public string Login { get; set; }
    public string Password { get; set; }
}

像某些登录一样登录可以正常工作,并返回预期结果。

您使用的是什么数据库?当您在断点处停止登录时,\u Login是否有值?@MarioGuadanhim这在任何sql数据库引擎中都是一个重大错误。永远不要连接字符串来构建sqlcommands@Steve我使用的是SQL Server您使用的是什么数据库?当您在断点处停止登录时,\ u login是否有值?@MarioGuadanhim这在任何SQL数据库引擎中都是一个大罪。永远不要连接字符串来构建sqlcommands@Steve我正在使用SQL Server