c# - 从 SQL 表中获取数据到空变量
问题描述
我正在尝试在表(称为帐户)中搜索用户名,并且在第 4 列中名为 PhotoId 的该用户的行中,我需要获取字符串并将其添加到我之前创建的空字符串值中。这就是我尝试过的,我想通过 Query 来做,就像我的代码一样
string ecid = e.CallbackQuery.Message.Chat.Id.ToString();
using (SqlCommand sqlCommand = new SqlCommand("SELECT * from Accounts where Username like @username", con))
{
con.Open();
sqlCommand.Parameters.AddWithValue("@username", ecid);
string variable;
string userfound = (string)sqlCommand.ExecuteScalar();
con.Close();
if (userfound == ecid)
{
using (SqlCommand GotPhoto = new SqlCommand("SELECT PhotoId from Accounts where Username like @user", con))
{
con.Open();
GotPhoto.Parameters.AddWithValue("@user", ecid);
DataPid = GotPhoto.ExecuteScalarAsync().ToString();
con.Close();
// await bot.SendPhotoAsync("xxx", DataPid, capo, parseMode: ParseMode.Markdown, replyMarkup: zz);
await bot.SendTextMessageAsync(cid, "its been Poster", parseMode: ParseMode.Html);
}
}
else
{
MessageBox.Show("Not Working");
}
}
解决方案
您正在组合 a SELECT * ...
with ExecuteScalar()
,它“返回结果集第一行中第一列的值。其他行和列将被忽略。”(https://msdn.microsoft.com/en-us/library/system. data.sqlclient.sqlcommand.executescalar(v=vs.110).aspx )。可能用户名不是帐户表中的第一列,因此返回另一列的内容并且您的比较失败。
改为使用SELECT username from Accounts where Username like @username
。
编辑
根据您的数据模型,您还可以将两个查询合并为一个,因为您查询同一行两次。
con.Open();
using (var cmd = new SqlCommand("SELECT PhotoId from Accounts where Username like @user", con)) {
cmd.Parameters.AddWithValue("@user", ecid);
using (var reader = await cmd.ExecuteReaderAsync()) {
if (!reader.HasRows || ! reader.Read()) {
MessageBox.Show("User not found");
} else {
DataPid = cmd.GetYOURDATATYPE(0).ToString();
//....
}
}
}
con.Close();
推荐阅读
- javascript - 在使用 date-fns 格式化的 react-day-picker 输入上输入日期
- javascript - 如何更改 Webrtc rtcpMuxPolicy?
- javascript - 使用 Javascript 重定向到新页面会添加当前页面目录。我该如何摆脱它?
- python - 计算 Pandas 到期的先进先出库存
- excel - Applescript将图像从我桌面上的文件夹复制到excel列A
- markdown - 在 Colab 的 Markdown 中渲染内联图像
- java - 加载加密密钥
- javascript - 制作一个看起来像两个的 SVG 路径,而仍然是一个用于动画的路径
- arangodb-foxx - 有没有办法在 foxxservice 上获得与在 arangosh 上相同的输出?
- excel - Excel 堆栈排名多个现有排名