Querying SQL Server from C#
本文关键字:from Server SQL Querying | 更新日期: 2023-09-27 18:27:52
我正试图从SQL Server中的数据库表中获取一个人的帐户余额。
我创建了一个SQL命令,它使用一个人的卡ID来查找他们的帐户ID,然后在另一个表中检查余额。
我想我遗漏了什么-Class1.cardNumber是你登录时选择的卡号。
好的,完整的细节是有两种形式第一种形式是一个完美工作的atm的登录,然后我放入一个类变量来捕获第一种形式中使用的卡号(class1.cardnumber),然后我创建了一个有点像的命令
SELECT CARDTDetails,CustomerDetails(名称不同)则是使用CustomerNumber的2之间的链接WHERE(balance=@balance)AND(cardNumber=@cardNumber)AND(CustomerNumber=@CustomerNumber)
这是工作表中唯一对更新缓慢感到抱歉的代码。
sqlCommandBalance.Connection.Open();
sqlCommandBalance.Parameters["@accountID"].Value = Class1.cardNumber;
SqlDataReader readdata = sqlCommandBalance.ExecuteReader();
string balanceDB = "";
while (readdata.Read())
{
balanceDB = readdata["@balance"].ToString();
}
sqlCommandBalance.Connection.Close();
sqlCommandBalance.Connection.Dispose();
textBalance.Text += " " + balanceDB.ToString();
您可能指的是readdata["balance"].ToString()
,而不是"@balance"。
由于没有足够的信息,还不能直接回答您的问题。
但这正是你想要用来安全地实现你正在做的事情的模式。
var resultValues = new List<string>();
using (var dbConn = new SqlConnection("server=myserver;database=mydb;integrated security=sspi;"))
using (SqlCommand dbCmd = dbConn.CreateCommand())
{
dbConn.Open();
dbCmd.CommandText = "SELECT myfield FROM mytable WHERE anotherField LIKE @p1";
dbCmd.Parameters.AddWithValue("@p1", "somevalue");
using (SqlDataReader reader = dbCmd.ExecuteReader())
{
while (reader.Read())
{
resultValues.Add(reader["myField"] == DBNull.Value ? null : (string)reader["myField"]);
}
}
}
或者如果您的查询只返回一行,
double result;
using (var dbConn = new SqlConnection("server=myserver;database=mydb;integrated security=sspi;"))
using (SqlCommand dbCmd = dbConn.CreateCommand())
{
dbConn.Open();
dbCmd.CommandText = "SELECT myfield FROM mytable WHERE anotherField LIKE @p1";
dbCmd.Parameters.AddWithValue("@p1", "somevalue");
using (SqlDataReader reader = dbCmd.ExecuteReader())
{
if (reader.Read())
{
result = reader["myField"] == DBNull.Value ? -1 : Convert.ToDouble(reader["myField"]);
}
}
}
当你回来提供更多信息时,我们可能会帮助你完成这项工作。
如果您没有得到"balanceDB"的答案,则意味着
while (readdata.Read())
没有触发。所以这意味着你没有得到任何结果。检查您是否运行了正确的SQL函数,并传递了正确的参数。代码本身对我来说还可以(不过有点乱)。
你能追踪一下情况吗?
补充:此外,您可能最终应该关闭您的连接。如果你在那里抛出一个异常,你会保持连接打开。