SQL Server 2008 데이터베이스가 있고 백엔드에서 작업 중입니다. asp.net/C#에서 일하고 있습니다.
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
//how do I read strings here????
}
독자에게는 가치가 있다는 것을 알고 있습니다. 내 SQL 명령은 테이블에서 하나의 열만 선택하는 것입니다. 열에는 문자열 만 포함됩니다. 독자의 문자열 (행)을 하나씩 읽고 싶습니다. 어떻게해야합니까?
답변
using(SqlDataReader rdr = cmd.ExecuteReader())
{
while (rdr.Read())
{
var myString = rdr.GetString(0); //The 0 stands for "the 0'th column", so the first column of the result.
// Do somthing with this rows string, for example to put them in to a list
listDeclaredElsewhere.Add(myString);
}
}
답변
string col1Value = rdr["ColumnOneName"].ToString();
또는
string col1Value = rdr[0].ToString();
이것들은 object
이므로 캐스트하거나 캐스트해야합니다 .ToString()
.
답변
데이터베이스에서 리턴 된 열 이름을 어디에 두십시오 "ColumnName"
. 문자열이면을 사용할 수 있습니다 .ToString()
. 다른 유형 인 경우을 사용하여 변환해야합니다 System.Convert
.
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
string column = rdr["ColumnName"].ToString();
int columnValue = Convert.ToInt32(rdr["ColumnName"]);
}
답변
while(rdr.Read())
{
string col=rdr["colName"].ToString();
}
그것은 일할 것이다
답변
단일 결과 :
if (reader.Read())
{
Response.Write(reader[0].ToString());
Response.Write(reader[1].ToString());
}
여러 결과의 경우 :
while (reader.Read())
{
Response.Write(reader[0].ToString());
Response.Write(reader[1].ToString());
}
답변
그것을 사용할 수있는 사람들을 위해 도우미 방법을 공유한다고 생각했습니다.
public static class Sql
{
public static T Read<T>(DbDataReader DataReader, string FieldName)
{
int FieldIndex;
try { FieldIndex = DataReader.GetOrdinal(FieldName); }
catch { return default(T); }
if (DataReader.IsDBNull(FieldIndex))
{
return default(T);
}
else
{
object readData = DataReader.GetValue(FieldIndex);
if (readData is T)
{
return (T)readData;
}
else
{
try
{
return (T)Convert.ChangeType(readData, typeof(T));
}
catch (InvalidCastException)
{
return default(T);
}
}
}
}
}
용법:
cmd.CommandText = @"SELECT DISTINCT [SoftwareCode00], [MachineID]
FROM [CM_S01].[dbo].[INSTALLED_SOFTWARE_DATA]";
using (SqlDataReader data = cmd.ExecuteReader())
{
while (data.Read())
{
usedBy.Add(
Sql.Read<String>(data, "SoftwareCode00"),
Sql.Read<Int32>(data, "MachineID"));
}
}
도우미 메소드는 원하는 값으로 캐스트합니다. 캐스트 할 수 없거나 데이터베이스 값이 NULL이면 결과는 널입니다.
답변
실제로, 나는 이것을 할 수 있다고 스스로 알아 냈습니다.
while (rdr.read())
{
string str = rdr.GetValue().ToString().Trim();
}