Abl*_*ias 2 c# asp.net odbc mdac
在使用C#在ASP.NET中执行以下代码时,我收到的异常如"行/列没有数据".
OdbcConnection DbConnection = new OdbcConnection(ConfigurationManager.AppSettings["ConnectionStr"]);
DbConnection.Close();
string cmdText = "SELECT Team_ID FROM team_details WHERE Team_Code=?";
OdbcCommand cmd = new OdbcCommand(cmdText, DbConnection);
cmd.Parameters.Add("?Code", OdbcType.VarChar).Value = tbCode.Text;
DbConnection.Open();
OdbcDataReader DR = cmd.ExecuteReader();
DR.Read();
if (DR.GetValue(0) != DBNull.Value)
{
args.IsValid = false;
}
else
{
args.IsValid = true;
}
DbConnection.Close();
Run Code Online (Sandbox Code Playgroud)
我正在使用Visual Studio 2008和MySQL.我正在使用MySql ODBC连接器5.1和MDAC2.8.
请指导我如何解决这个问题.
Read方法返回一个布尔值,指示是否返回任何行,因此您应该始终在访问读者的结果之前测试此值.
OdbcDataReader DR = cmd.ExecuteReader();
if (DR.Read() && DR.GetValue(0) != DBNull.Value)
{
args.IsValid = false;
}
else
{
args.IsValid = true;
}
DbConnection.Close();
Run Code Online (Sandbox Code Playgroud)
编辑----您还应该考虑using连接,因为即使在using语句中发生异常,这也将确保关闭(处置).
你也可以摆脱这种if说法,但那是一种品味问题.
最后,标准的.NET习惯用法是将连接字符串保存在web.config的ConnectionStrings部分中.这未在下面显示.
using(OdbcConnection DbConnection = new OdbcConnection(ConfigurationManager.AppSettings["ConnectionStr"]))
{
string cmdText = "SELECT Team_ID FROM team_details WHERE Team_Code=?";
OdbcCommand cmd = new OdbcCommand(cmdText, DbConnection);
cmd.Parameters.Add("?Code", OdbcType.VarChar).Value = tbCode.Text;
DbConnection.Open();
OdbcDataReader DR = cmd.ExecuteReader();
args.IsValid = DR.Read() && DR.GetValue(0) != DBNull.Value;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17236 次 |
| 最近记录: |