List.Count总是返回0
问题描述:
我创建的变量公共静态List<>
(从MySQL
查询),但List
的Count
总是返回0
!我尝试了一切,但没有成功。这里是我的代码:List.Count总是返回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;
}
答
看起来你正在使用命名参数,但不正确设置参数。
?
用于非命名参数,@
用于命名参数。由于您使用的数据库连接器不支持non named parameters
,因此您必须在查询中使用@
遵守约定。这将按名称而不是按索引设置参数。
queryStr = "SELECT * FROM account.account WHERE [email protected] LIMIT 1";
...
cmd.Parameters.AddWithValue("@hid", ID);
从msdn的说明。
微软.NET Framework数据提供SQL Server不 支持问号(?)占位符传递参数给 SQL语句或 CommandType.Text的命令调用的存储过程。在这种情况下,必须使用命名参数。
+0
'@'是用于SQL的,'?'用于MySQL我认为。无论如何,我解决了它,我认为这是记录中的哈希格式。非常感谢你的帮助。 – Dev
你有没有先调试过它?你是否连接到数据库? –
你有调试吗?在你阅读并添加到列表中的行可以看到它是否实际添加了任何内容? – JonE
查询是否返回任何行 – Saurav