C# 从SQL数据库获取数据并以字符串形式返回
需要帮助获取第一行记录并在C# 从SQL数据库获取数据并以字符串形式返回,c#,string,tostring,sqlconnection,C#,String,Tostring,Sqlconnection,需要帮助获取第一行记录并在while()之后以字符串形式返回循环中的记录。 一行中有很多列,我在将其声明为字符串st时遇到了问题?像通常的string st=new string()请帮助更正它 谢谢 public string Get_aodIdeal(string SubmittedBy) { String errMsg = ""; Guid? rguid = null; int isOnContract = 0; int isFreeMM = 0;
while()之后以字符串形式返回
循环中的记录。
一行中有很多列,我在将其声明为字符串st时遇到了问题?像通常的string st=new string()
请帮助更正它
谢谢
public string Get_aodIdeal(string SubmittedBy)
{
String errMsg = "";
Guid? rguid = null;
int isOnContract = 0;
int isFreeMM = 0;
string _FileName;
DateTime InstallDateTime = DateTime.Now;
string FileDate = ToYYYYMMDD(DateTime.Now);
errMsg = "Unknown Error.";
SqlConnection conn = null; SqlCommand cmd = null;
string st = null;
conn = new SqlConnection(WebConfigurationManager.ConnectionStrings["iDeal"].ConnectionString);
cmd = new SqlCommand();
string SQL = "select TOP 1 * from table1 Order by SubmittedOn desc";
SqlDataAdapter sqd = new SqlDataAdapter(SQL, conn);
cmd.CommandTimeout = 1200;
conn.Open();
SqlDataReader sqr;
//sqd.SelectCommand.Parameters.Add("@Submitted", SqlDbType.Int).Value = PostID;
sqr = sqd.SelectCommand.ExecuteReader();
while (sqr.Read())
st = new string{
rguid = cmd.Parameters["@rguid"].Value as Guid?,
ridno = int.Parse(sqr["ridno"].ToString()),
SubmittedOn= DateTime.Parse(sqr["SubmittedOn"].ToString()),
SubmittingHost = sqr["SubmittingHost"].ToString(),
ServiceAgreementNo = sqr["ServiceAgreementNo"].ToString(),
DocumentID = sqr["DocumentID"].ToString(),
Source = sqr["Source"].ToString(),
FileName = sqr["FileName"].ToString(),
FileType = sqr["FileType"].ToString(),
FileDate = DateTime.Parse(sqr["FileDate"].ToString()),
InstallTime = DateTime.Parse(sqr["InstallTime"].ToString()),
CalenderCode = cmd.Parameters["CalenderCode"].Value as Guid,
isFreeMM = bool.Parse(sqr["isFreeMM"].ToString()),
isOnContract = bool.Parse(sqr["isOnContract"].ToString()),
isProcessed = bool.Parse(sqr["isProcessed"].ToString()),
ProcessedByFullName = sqr["ProcessedByFullName"].ToString(),
isDelete = bool.Parse(sqr["isDelete"].ToString()),
version = int.Parse(sqr["Version"].ToString()),
LastUpdatedBy = DateTime.Parse(sqr["LastUpdatedBy"].ToString()),
LastUpdatedOn = DateTime.Parse(sqr["LastUpdatedOn"].ToString()),
shopGuid = sqr["shopGuid"].ToString(),
MacID = sqr["MacID"].ToString(),
MSISDN = sqr["MSISDN"].ToString()
}
为此,您可以使用StringBuilder,如下所示:
StringBuilder strBuilder= new StringBuilder();
while (sqr.Read())
{
strBuilder.AppendFormat("PostID : {0}{1}",sqr["PostID"].ToString(),Environment.NewLine);
strBuilder.AppendFormat("dateposted : {0}{1}",sqr["dateposted"].ToString(),Environment.NewLine);
// And so on Build your string
}
最后,strBuilder.ToString()
将为您提供所需的字符串。但更聪明的方法是创建一个具有必要属性的类和一个重写的.ToString方法来显示输出
让AodIdeal
成为具有重写的ToString()
方法的类。让我这样定义它:
public class AodIdeal
{
public int PostID { get; set; }
public string dateposted { get; set; }
public string Source { get; set; }
// Rest of properties here
public override string ToString()
{
StringBuilder ObjectStringBuilder = new StringBuilder();
ObjectStringBuilder.AppendFormat("PostID : {0}{1}", PostID, Environment.NewLine);
ObjectStringBuilder.AppendFormat("dateposted : {0}{1}",dateposted, Environment.NewLine);
ObjectStringBuilder.AppendFormat("Source : {0}{1}", Source, Environment.NewLine);
// and so on
return ObjectStringBuilder.ToString();
}
}
然后可以创建类的对象(让它成为objAodIdeal),并将其属性用于局部变量。最后,objAodIdeal.ToString()
将为您提供所需的输出
示例用法
AodIdeal objAodIdeal= new AodIdeal();
while (sqr.Read())
{
objAodIdeal.PostID = int.Parse(sqr["PostID"].ToString());
objAodIdeal.dateposted= sqr["dateposted"].ToString();
// assign rest of properties
}
string requiredString= objAodIdeal.ToString();
为此,您可以使用StringBuilder,如下所示:
StringBuilder strBuilder= new StringBuilder();
while (sqr.Read())
{
strBuilder.AppendFormat("PostID : {0}{1}",sqr["PostID"].ToString(),Environment.NewLine);
strBuilder.AppendFormat("dateposted : {0}{1}",sqr["dateposted"].ToString(),Environment.NewLine);
// And so on Build your string
}
最后,strBuilder.ToString()
将为您提供所需的字符串。但更聪明的方法是创建一个具有必要属性的类和一个重写的.ToString方法来显示输出
让AodIdeal
成为具有重写的ToString()
方法的类。让我这样定义它:
public class AodIdeal
{
public int PostID { get; set; }
public string dateposted { get; set; }
public string Source { get; set; }
// Rest of properties here
public override string ToString()
{
StringBuilder ObjectStringBuilder = new StringBuilder();
ObjectStringBuilder.AppendFormat("PostID : {0}{1}", PostID, Environment.NewLine);
ObjectStringBuilder.AppendFormat("dateposted : {0}{1}",dateposted, Environment.NewLine);
ObjectStringBuilder.AppendFormat("Source : {0}{1}", Source, Environment.NewLine);
// and so on
return ObjectStringBuilder.ToString();
}
}
然后可以创建类的对象(让它成为objAodIdeal),并将其属性用于局部变量。最后,objAodIdeal.ToString()
将为您提供所需的输出
示例用法
AodIdeal objAodIdeal= new AodIdeal();
while (sqr.Read())
{
objAodIdeal.PostID = int.Parse(sqr["PostID"].ToString());
objAodIdeal.dateposted= sqr["dateposted"].ToString();
// assign rest of properties
}
string requiredString= objAodIdeal.ToString();
如果有很多列,您希望从该方法返回哪一列,为什么不使用
ExecuteScalar
而不是SqlDataReader
?@TimSchmelter我很容易混淆sql,还有很多方法,所以有什么建议吗?如何获取所有列并以字符串形式返回?如果使用dataadapter将数据填充到datatable中,我认为以字符串格式逐行获取数据非常容易。@xSea:创建一个具有许多属性的自定义类,如string ServiceAgreementNo
,bool isOnContract
或LastUpdatedOn
。然后在while
循环中初始化它(您也可以使用单个sqr.Read()
,因为您知道只有一个)。然后返回这个自定义类而不是字符串。如果有很多列,你想从该方法返回哪一列,为什么不使用ExecuteScalar
而不是SqlDataReader
?@TimSchmelter我很容易混淆sql,还有很多方法,所以有什么建议吗?如何获取所有列并以字符串形式返回?如果使用dataadapter将数据填充到datatable中,我认为以字符串格式逐行获取数据非常容易。@xSea:创建一个具有许多属性的自定义类,如string ServiceAgreementNo
,bool isOnContract
或LastUpdatedOn
。然后在while
循环中初始化它(您也可以使用单个sqr.Read()
,因为您知道只有一个)。然后返回这个自定义类而不是字符串。