Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.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# 静态类方法不';t返回值_C#_Asp.net_Arrays - Fatal编程技术网

C# 静态类方法不';t返回值

C# 静态类方法不';t返回值,c#,asp.net,arrays,C#,Asp.net,Arrays,我有以下代码(这只是为了演示,我不会粘贴所有行) 然后我在代码隐藏文件(*aspx.cs)中使用它 受保护的无效搜索\u单击(对象发送者,事件参数e) { string[]information=SearchAndEdit.SearchAndDisplay(searchBox.Text); for(int i=0;i。在搜索和显示中设置一个断点并进入它。可能会告诉你发生了什么。要重新表述/测试@Ernest指出的内容:你能用上面显示的代码重现问题吗?我想你也漏掉了if/while(info.Re

我有以下代码(这只是为了演示,我不会粘贴所有行)

然后我在代码隐藏文件(*aspx.cs)中使用它

受保护的无效搜索\u单击(对象发送者,事件参数e)
{
string[]information=SearchAndEdit.SearchAndDisplay(searchBox.Text);
for(int i=0;i
但是,代码不返回任何内容(labelname为空),甚至不会引发异常。知道陷阱在哪里吗?谢谢

试试这个

if(string.IsNullOrEmpty(code))
{
    field[0] = "Empty box";
}
你换了职位。你应该吃这个

string SQLconnection = WebConfigurationManager.ConnectionStrings["DatabaseConnectionString"].ConnectionString;
    string[] field;
    field = new string[6];
    field[0] = "Nothing to search"; // add here in case string is null
    if (!string.IsNullOrEmpty(code))
    {
        string SQLSelect = "SELECT user_name, user_surname, user_code, user_group, user_password FROM Users WHERE user_code=@user_code";
        SqlConnection connect = new SqlConnection(SQLconnection);
        SqlCommand search = new SqlCommand(SQLSelect, connect);
        search.Parameters.Clear();
        search.Parameters.AddWithValue("@user_code", code);
        try
        {                    
            connect.Open();
            SqlDataReader info = search.ExecuteReader();
            if (info.HasRows)
            {
                field[0] = "Data loaded";
            }

        }
        catch
        { 
            // error handle here problem with connection
        }
        finally 
        {
            connect.Close();
        }
    }
    return field;

现在,您已经向我们展示了更多代码:如果SQL查询返回0行,那么返回的数组将是空的,正如您所观察到的。因此,您为
user\u code
传递的值似乎不在数据库中,或者可能是错误的数据类型。

您应该尝试使用调试器逐步完成此操作。在这种情况下,
字段
数组将返回一个包含六个空字符串元素的数组:如果
code
不是空字符串,将执行
else
子句,如果SQL查询不返回任何行,则
字段
将永远不会收到任何字符串值。我猜这就是正在发生的事情。如果由于某种原因无法使用调试器(?),则始终可以修改代码:

if (info.HasRows) {
  field[0] = "Data loaded";
} else {
  field[0] = "No data found";
}

说“这只是为了演示,我不会粘贴所有行”的问题在于,您总是忽略导致问题的部分。这里没有任何错误,所以不管你错在哪里,你应该考虑使用<代码> String。ISNulLoWeleSePeCe()/<代码>而不是<代码> = =“”/COD>。在搜索和显示中设置一个断点并进入它。可能会告诉你发生了什么。要重新表述/测试@Ernest指出的内容:你能用上面显示的代码重现问题吗?我想你也漏掉了if/while(info.Read())部分吧?如果sql数据读取器有行,则代码将始终填充返回数组。因此,您可能没有以某种方式正确地读取它,或者您的查询实际上没有返回任何行(更有可能是因为HasRows if语句)。
string SQLconnection = WebConfigurationManager.ConnectionStrings["DatabaseConnectionString"].ConnectionString;
    string[] field;
    field = new string[6];
    field[0] = "Nothing to search"; // add here in case string is null
    if (!string.IsNullOrEmpty(code))
    {
        string SQLSelect = "SELECT user_name, user_surname, user_code, user_group, user_password FROM Users WHERE user_code=@user_code";
        SqlConnection connect = new SqlConnection(SQLconnection);
        SqlCommand search = new SqlCommand(SQLSelect, connect);
        search.Parameters.Clear();
        search.Parameters.AddWithValue("@user_code", code);
        try
        {                    
            connect.Open();
            SqlDataReader info = search.ExecuteReader();
            if (info.HasRows)
            {
                field[0] = "Data loaded";
            }

        }
        catch
        { 
            // error handle here problem with connection
        }
        finally 
        {
            connect.Close();
        }
    }
    return field;
if (info.HasRows) {
  field[0] = "Data loaded";
} else {
  field[0] = "No data found";
}