Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.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# Count始终返回0_C#_Asp.net_Arrays_List - Fatal编程技术网

C# Count始终返回0

C# Count始终返回0,c#,asp.net,arrays,list,C#,Asp.net,Arrays,List,我正在创建一个变量的公共静态列表(从MySQL查询),但是列表的计数总是返回0!到目前为止,我什么都试过了,但没有成功。这是我的密码: public static List<string> GetHashedVars(string ID) { List<string> lst = new List<string>(); MySqlConnection conn; MySqlCommand cmd; MySqlDataReader

我正在创建一个变量的公共静态
列表
(从
MySQL
查询),但是
列表
计数总是返回
0
!到目前为止,我什么都试过了,但没有成功。这是我的密码:

public static List<string> GetHashedVars(string ID)
{
    List<string> lst = new List<string>();
    MySqlConnection conn;
    MySqlCommand cmd;
    MySqlDataReader reader;
    string connString, queryStr = "";
    connString = ConfigurationManager.ConnectionStrings["GameserverConnString"].ToString();
    using (conn = new MySqlConnection(connString))
    {
        //The query for execution
        queryStr = "SELECT * FROM account.account WHERE id_hashed=?hid LIMIT 1";
        //Open the connection to the database
        conn.Open();
        //execute command
        cmd = new MySqlCommand(queryStr, conn);
        cmd.Parameters.AddWithValue("?hid", ID);
        using (reader = cmd.ExecuteReader())
        {
            //Loop through results
            while (reader.Read())
            {
                lst.Add(reader.GetString(reader.GetOrdinal("id_hashed")));
                lst.Add(reader.GetString(reader.GetOrdinal("login_hashed")));
                lst.Add(reader.GetString(reader.GetOrdinal("webcode_hashed")));
                lst.Add(Encryption.CipherEncryption(reader.GetString(reader.GetOrdinal("status")).Trim()));
            }
        }
        reader.Close();
        conn.Close();
    }
    queryStr = "";
    reader = null;
    cmd = null;
    conn = null;
    connString = "";
    return lst;
}
公共静态列表GetHashedVars(字符串ID)
{
List lst=新列表();
mysqlconnectionconn;
MySqlCommand命令cmd;
MySqlDataReader;
字符串connString,queryStr=“”;
connString=ConfigurationManager.ConnectionString[“GameserverConnString”].ToString();
使用(conn=newmysqlconnection(connString))
{
//执行的查询
queryStr=“从account.account中选择*,其中id\u散列=?hid LIMIT 1”;
//打开与数据库的连接
conn.Open();
//执行命令
cmd=新的MySqlCommand(queryStr,conn);
cmd.Parameters.AddWithValue(“?hid”,ID);
使用(reader=cmd.ExecuteReader())
{
//循环浏览结果
while(reader.Read())
{
lst.Add(reader.GetString(reader.GetOrdinal(“id_散列”));
lst.Add(reader.GetString(reader.GetOrdinal(“login_hash”));
lst.Add(reader.GetString(reader.GetOrdinal(“webcode_hashed”));
lst.Add(Encryption.CipherEncryption(reader.GetString(reader.GetOrdinal(“status”)).Trim());
}
}
reader.Close();
康涅狄格州关闭();
}
queryStr=“”;
reader=null;
cmd=null;
conn=null;
connString=“”;
返回lst;
}

看起来您正在使用命名参数,但未正确设置参数

用于非命名参数,
@
用于命名参数。由于您使用的数据库连接器不支持
非命名参数
,因此您必须遵循惯例,在查询中使用
@
。这将按名称而不是索引设置参数

queryStr = "SELECT * FROM account.account WHERE id_hashed=@hid LIMIT 1";
...
cmd.Parameters.AddWithValue("@hid", ID);
他解释说

用于SQL Server的Microsoft.NET Framework数据提供程序不可用 支持问号(?)占位符,用于将参数传递给 SQL语句或由命令调用的存储过程 CommandType.Text。在这种情况下,必须使用命名参数


看起来您正在使用命名参数,但未正确设置参数

用于非命名参数,
@
用于命名参数。由于您使用的数据库连接器不支持
非命名参数
,因此您必须遵循惯例,在查询中使用
@
。这将按名称而不是索引设置参数

queryStr = "SELECT * FROM account.account WHERE id_hashed=@hid LIMIT 1";
...
cmd.Parameters.AddWithValue("@hid", ID);
他解释说

用于SQL Server的Microsoft.NET Framework数据提供程序不可用 支持问号(?)占位符,用于将参数传递给 SQL语句或由命令调用的存储过程 CommandType.Text。在这种情况下,必须使用命名参数


你先调试过吗?你正在连接到数据库吗?你调试过了吗?在您正在读取并添加到列表中的那一行,您可以看到它是否确实添加了任何内容吗?查询是否返回任何行集合断点并使用调试工具检查变量。您可以很容易地找到出错的地方。是的,我这样做了。连接到数据库是成功的,因为我有完全相同的功能(不同但相同的结构)两次!我甚至在
.ASPX
中得到了一个标签,显示项目的总数
计数
(为0)。我不知道还有什么可以尝试的它总是把我
索引超出范围
这个特殊的异常…你先调试过吗?你正在连接到数据库吗?你调试过了吗?在您正在读取并添加到列表中的那一行,您可以看到它是否确实添加了任何内容吗?查询是否返回任何行集合断点并使用调试工具检查变量。您可以很容易地找到出错的地方。是的,我这样做了。连接到数据库是成功的,因为我有完全相同的功能(不同但相同的结构)两次!我甚至在
.ASPX
中得到了一个标签,显示项目的总数
计数
(为0)。我不知道还有什么可以尝试它只是不断地把我的
索引超出范围
这个特殊的异常…
@
是SQL的,
是MySQL的,我想。不管怎样,我解决了它,我认为它在记录中是糟糕的散列格式。非常感谢你们的帮助。
@
代表SQL,
代表MySQL。不管怎样,我解决了它,我认为它在记录中是糟糕的散列格式。非常感谢你们的帮助。