C# 从数据库中检索多个值并存储它们
我试图做的是检索用户名对应于用户的全名值,这确实有效,问题是当有多个值时,我不知道如何存储这些值,我尝试使用数组,但当有两个值时,检索时,C# 从数据库中检索多个值并存储它们,c#,sql-server,C#,Sql Server,我试图做的是检索用户名对应于用户的全名值,这确实有效,问题是当有多个值时,我不知道如何存储这些值,我尝试使用数组,但当有两个值时,检索时,characterReader[0]将为空,characterReader[1]将仅具有第一个检索到的值,但是如果只有一个值要检索,characterReader[0]将不再为空并显示正确的值 这是我的代码,我不确定这是否正确: SqlCommand displayCharactersCMD = new SqlCommand(String.Format("SE
characterReader[0]
将为空,characterReader[1]
将仅具有第一个检索到的值,但是如果只有一个值要检索,characterReader[0]
将不再为空并显示正确的值
这是我的代码,我不确定这是否正确:
SqlCommand displayCharactersCMD = new SqlCommand(String.Format("SELECT FullName FROM [Characters] WHERE Username='{0}'", username), con);
displayCharactersCMD.Parameters.AddWithValue("@checkPlayerName", username);
using (SqlDataReader reader = displayCharactersCMD.ExecuteReader())
{
int counter = 0;
while (reader.Read())
{
if (counter != countCharsToVar)
{
characterReader = new string[countCharsToVar];
characterReader[counter] = reader[0].ToString();
counter++;
}
else
break;
}
}
要检索两个值时的示例:
API.consoleOutput("CHAR 1: " + characterReader[0]); - This will become null.
API.consoleOutput("CHAR 2: " + characterReader[1]); - This will contain the first value.
我打算如何工作:
API.consoleOutput("CHAR 1: " + characterReader[0]); - This will display first value.
API.consoleOutput("CHAR 2: " + characterReader[1]); - This will display second value.
您可以利用列表,而不是将值存储在数组中。这可能会帮助您:
SqlCommand displayCharactersCMD = new SqlCommand("SELECT FullName FROM [Characters] WHERE Username=@checkPlayerName");
displayCharactersCMD.Parameters.AddWithValue("@checkPlayerName", username);
var characterReader = new List<string>();
using (SqlDataReader reader = displayCharactersCMD.ExecuteReader())
{
while (reader.Read())
{
characterReader.Add(reader[0].ToString());
}
}
SqlCommand displayCharactersCMD=newsqlcommand(“从[Characters]中选择全名,其中Username=@checkPlayerName”);
displayCharactersCMD.Parameters.AddWithValue(“@checkPlayerName”,用户名);
var characterReader=新列表();
使用(SqlDataReader=displayCharactersCMD.ExecuteReader())
{
while(reader.Read())
{
characterReader.Add(读取器[0].ToString());
}
}
您可以利用列表,而不是将值存储在数组中。这可能会帮助您:
SqlCommand displayCharactersCMD = new SqlCommand("SELECT FullName FROM [Characters] WHERE Username=@checkPlayerName");
displayCharactersCMD.Parameters.AddWithValue("@checkPlayerName", username);
var characterReader = new List<string>();
using (SqlDataReader reader = displayCharactersCMD.ExecuteReader())
{
while (reader.Read())
{
characterReader.Add(reader[0].ToString());
}
}
SqlCommand displayCharactersCMD=newsqlcommand(“从[Characters]中选择全名,其中Username=@checkPlayerName”);
displayCharactersCMD.Parameters.AddWithValue(“@checkPlayerName”,用户名);
var characterReader=新列表();
使用(SqlDataReader=displayCharactersCMD.ExecuteReader())
{
while(reader.Read())
{
characterReader.Add(读取器[0].ToString());
}
}
您需要对每个值迭代SqlDataReader
,调用reader.Read()使读取器指向下一行,当它到达末尾并且结果集中没有更多行时,它返回false
当“读取”完成时,读取器被移动到指向下一行,这样您就可以通过这种方式访问所有列。读卡器[0]将是第一列,读卡器[1]将是第二列,依此类推,在您的示例中,您只有一列全名
您可以通过以下方式将所有结果添加到列表中:
var values = new List<string>();
using (SqlDataReader reader = displayCharactersCMD.ExecuteReader())
{
while (reader.Read())
{
values.Add(reader[0]);
}
}
您需要为每个值迭代
SqlDataReader
,调用reader.Read()使读取器指向下一行,当它到达末尾并且结果集中没有更多行时,它返回false
当“读取”完成时,读取器被移动到指向下一行,这样您就可以通过这种方式访问所有列。读卡器[0]将是第一列,读卡器[1]将是第二列,依此类推,在您的示例中,您只有一列全名
您可以通过以下方式将所有结果添加到列表中:
var values = new List<string>();
using (SqlDataReader reader = displayCharactersCMD.ExecuteReader())
{
while (reader.Read())
{
values.Add(reader[0]);
}
}
这里有一个来自Microsoft的非常好的链接: 使用GetString(columnNumber)方法从行中获取整个值。那对你来说应该很容易
希望这有帮助。这里有一个来自Microsoft的非常好的链接: 使用GetString(columnNumber)方法从行中获取整个值。那对你来说应该很容易
希望这有帮助。参数不是这样工作的。您仍在创建字符串连接的sql命令。参数不能以这种方式工作。您仍在创建一个字符串连接sql命令。使用列表为我做到了这一点,非常感谢。使用列表为我做到了这一点,非常感谢。