需要帮助;C# 从对象返回 System.dataTable

本文关键字:对象 返回 System dataTable 帮助 | 更新日期: 2023-09-27 18:32:32

>我正在尝试创建一个可以通过解析器方法调用的类。本质上,我需要从SQL数据列中检索值;我的查询只抓取一列,然后将该值作为 System.DataTable 中的一行返回,供我的 CSV 粉碎机使用。这就是我到目前为止所拥有的,但我不断收到此错误"shredderAction.Transporter.MsgDataTable()":并非所有代码路径都返回值";我错过了什么?

public class Transporter
{
    public static DataTable MsgDataTable()
    {
        DataTable table1 = new DataTable("Persons");
        DataRow tableRow;
        tableRow = table1.NewRow();
        SqlConnection sqlConnection1 = new SqlConnection("Sanitised for security");
        SqlCommand cmd = new SqlCommand();
        cmd.CommandText = "SELECT TOP 1 CAST(cast(msgdata as varbinary(max)) as varchar(MAX)) FROM [Sanitised].[dbo].[MSGQUEUE]";
        cmd.CommandType = CommandType.Text;
        cmd.Connection = sqlConnection1;
        object value = cmd.ExecuteScalar();
        sqlConnection1.Open();
        table1.Rows.Add(value);
        sqlConnection1.Close();
    }
}

需要帮助;C# 从对象返回 System.dataTable

你的方法需要一个返回,看看它的签名:

public static DataTable MsgDataTable() //DataTable is a return type

因此,您必须返回DataTable类型以使其语法正确。

在最后一行中,返回已创建的DataTable

sqlConnection1.Open();
table1.Rows.Add(value);
sqlConnection1.Close();
return table1; // add this

错误应该消失了。

仅当函数具有返回void的签名时,您才能在其块中没有return

private void thisMethodRequiresNoReturn(){ //void requires no return
    //do something without return
}

否则,如果它有一个返回,那么在方法块中,你必须返回在所有可能的路径中与该签名匹配的类型

private int thisMethodRequiresIntReturn(){ //void requires int return
    //do something without return - error
}
private int thisMethodRequiresIntReturn(){ //void requires int return
    int val = 0;
    return val; //this is ok
}
private int thisMethodRequiresIntReturn(){ //void requires int return
    int val = 0; 
    if (val > 0)
        return val; //this is not ok, not all path returning int
}
private int thisMethodRequiresIntReturn(){ //void requires int return
    int val = 0; 
    if (val > 0)
        return val; 
    return -1; //this is ok, all paths returning int
}