日期:2014-05-18  浏览次数:20897 次

有返回值的数据传参?
public bool sqltoArr(SqlConnection conn,string sql, out string[] reArr)
{
  DataSet ds = new DataSet();
  SqlDataAdapter da = new SqlDataAdapter(conn,sql);
  da.Fill(ds);
  if (ds.Tables[0].Rows.Count != 0){
reArr = new string[ds.Tables[0].Columns.Count];
for (int i = 0;i < ds.Tables[0].Columns.Count -1;i++)
{
reArr[i] = ds.Tables[0].Rows[0][i].ToString();
}
return true;
}
  else{
  reArr = new string[2]{"a","b"};
  return false;
}
}

调用:
bool istrue;
string[] reArr;
istrue = pc.sqltoArr(conn,sql,reArr);

为什么不成功 总说无法转换,请各位请点一下.

------解决方案--------------------
先改成试试
istrue = pc.sqltoArr(conn,sql,out reArr);
------解决方案--------------------
探讨
先改成试试
istrue = pc.sqltoArr(conn,sql,out reArr);

------解决方案--------------------
探讨
引用:
先改成试试
istrue = pc.sqltoArr(conn,sql,out reArr);

up

------解决方案--------------------
ref 也可以
------解决方案--------------------
传递istrue = pc.sqltoArr(conn,sql,out reArr);
------解决方案--------------------
应该这样,程序是能够通滴,但达到的功能是有问题滴!!
public bool sqltoArr(SqlConnection conn, string sql,out string[] reArr)
{
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(sql,conn);
da.Fill(ds);
reArr = new string[ds.Tables[0].Columns.Count];
if (ds.Tables[0].Rows.Count != 0)
{
//reArr = new string[ds.Tables[0].Columns.Count];
for (int i = 0; i < ds.Tables[0].Columns.Count - 1; i++)
{
reArr[i] = ds.Tables[0].Rows[0][i].ToString();
}
return true;
}
else
{
//reArr = new string[3] { "a", "b" };
for (int i = 0; i < ds.Tables[0].Columns.Count - 1; i++)
reArr[i] = i.ToString();
return false;
}
}

调用: 
bool istrue; 
string[] reArr; 
istrue = pc.sqltoArr(conn,sql,reArr); 
for (int i = 0; i < reArr.Length-1; i++)
Response.Write(reArr[i].ToString());
------解决方案--------------------
在调用上楼上少打out
应该这样,程序是能够通滴,但达到的功能是有问题滴!! 
public bool sqltoArr(SqlConnection conn, string sql,out string[] reArr) 

DataSet ds = new DataSet(); 
SqlDataAdapter da = new SqlDataAdapter(sql,conn); 
da.Fill(ds); 
reArr = new string[ds.Tables[0].Columns.Count]; 
if (ds.Tables[0].Rows.Count != 0) 

//reArr = new string[ds.Tables[0].Columns.Count]; 
for (int i = 0; i < ds.Tables[0].Columns.Count - 1; i++) 

reArr[i] = ds.Tables[0].Rows[0][i].ToString(); 

return true; 

else 

//reArr = new string[3] { "a", "b" }; 
for (int i = 0; i < ds.Tables[0].Columns.Count - 1; i++) 
reArr[i] = i.ToString(); 
return false;