我有这个SQL表:
TABLE: Info
COLUMNS:| Name | Value
--------|----------|------------------
ROW: | Server | 255.255.255.255
ROW: | Host | 212.212.212.212
ROW: | User | Admin
我正在选择这样的表:SELECT * FROM Info
现在我得到了这张表。
我想获取值Where Name = 'Server'
并将其放入Server
变量。
在C#中执行此操作的最佳方法是什么?
数据集? DataReader的?我怎么能做到这一点?
如果你不明白我需要什么,那么对Tim来说是另一个好的解释:
我正在尝试根据同一行中另一列中的值获取指定列的值
答案 0 :(得分:1)
根据您的最新评论,您似乎想要获取表中的所有行,然后能够根据“名称”列选择给定的行。
如果您的程序需要在不同时间访问不同的行,那么DataTable最好 - 只要DataTable在内存中/缓存中,您就可以随时提取任何名称的值。
如果你只需要做一次,SqlDataReader可能会更快,但它只是前向。
DataTable示例:
假设您已经填充了DataTable(示例中的名称信息),您可以使用Select方法:
DataRow[] selectedRows = info.Select("Name = 'Server'");
string serverIP = selectedRows[0]["Value"].ToString();
DateReader示例:
根据@Kobe的代码,只需在每次前进到下一条记录时检查名称,然后拉出值:
bool valueFound = false;
while (reader.Read() && !valueFound)
{
if (reader["Name"].ToString() == "Server")
{
serverIP = reader["Value"].ToString();
valueFound = true;
}
}
有一些需要注意的注意事项。首先,DataTable的Select方法返回DataRow数组,因此如果Name列中有多个记录包含“Server”,您将获得多个结果。如果这是设计的,那很好 - 只需循环遍历DataRows数组。
其次,如果表格中有很多行,或者潜在的可能性,读者可能会更慢,具体取决于感兴趣的记录在表格中的位置。如果您正在处理符合Name条件的表中多个记录的可能性,那么只需坚持使用DataTable就可能更容易了。
答案 1 :(得分:0)
这是你在寻找什么,如果是这样,请告诉我,我将使用USING关键字改进代码并删除内联的sql并尽快给你发一个答案
google的另一个例子,
// instantiate and open connection
conn = new
SqlConnection("Server=(local);DataBase=Northwind;Integrated Security=SSPI");
conn.Open();
// don't ever do this!
// SqlCommand cmd = new SqlCommand(
// "select * from Customers where city = '" + inputCity + "'";
// 1. declare command object with parameter
SqlCommand cmd = new SqlCommand(
"select * from Customers where city = @City", conn);
// 2. define parameters used in command object
SqlParameter param = new SqlParameter();
param.ParameterName = "@City";
param.Value = inputCity;
// 3. add new parameter to command object
cmd.Parameters.Add(param);
// get data stream
reader = cmd.ExecuteReader();
// write each record
while(reader.Read())
{
Console.WriteLine("{0}, {1}",
reader["CompanyName"],
reader["ContactName"]);
}
}
finally
{
// close reader
if (reader != null)
{
reader.Close();
}
// close connection
if (conn != null)
{
conn.Close();
}
}
其他例子......
SqlCommand sqlComm = new SqlCommand("SELECT * FROM Info where name='+server+'", sqlConn);
SqlDataReader r = sqlComm.ExecuteReader();
while ( r.Read() ) {
string name = (string)r["Name"];
Debug.WriteLine(username + "(" + userID + ")");
}
r.Close();