我试图创建一个可以通过Parser方法调用的类。基本上我需要从SQL数据列中检索值;我的查询只抓取一列,然后将该值作为System.DataTable中的一行返回,供我的CSVshredder使用。这是我到目前为止所得到的但是我一直得到这个错误" shredderAction.Transporter.MsgDataTable()&#39 ;:并非所有代码路径都返回一个值" ;我错过了什么?
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();
}
}
答案 0 :(得分:2)
您的方法需要返回,请查看其签名:
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
}