如何确定数据集中是否有任何表,而不获得“找不到表0”;err味精
本文关键字:找不到 找不到表 味精 err 集中 数据集 数据 何确定 是否 任何表 | 更新日期: 2023-09-27 18:05:57
我有这样的代码:
DataSet QtyDS = null;
. . .
QtyDS = GetAllUPCDSDRecords(txtUPC.Text);
…这就是"cannot find table 0"
为了防止这种情况发生,我尝试了以下方法,但都无济于事;当我试图访问Dataset中的第一个表时,我仍然得到错误消息:
1)
if (null != QtyDS)
2)
string table0 = QtyDS.Tables[0].ToString();
if (!table0.Equals(string.Empty))
3)
if (null != QtyDS.Tables[0])
如何安全地确定查询是否返回数据集,以避免错误消息?
更新public DataSet getAllUPCDSDRecords(string upc)
{
string query = string.Format(
"SELECT tyger_id as tyger, upc_source as UPC, description as Descrip, unit_qty as Qty, "+
"department as Dept, vendor_id as Ven, upc_pack_size as UPCPK, pack_size as PKSize, "+
"unit_cost as Cst, unit_list as Lst "+
"FROM {0} WHERE upc_source = {1}", tablename, upc);
return dbconn.getDataSet(query);
}
public DataSet getDataSet( string dynSQL )
{
checkConnection();
SqlCeDataAdapter oDA = new SqlCeDataAdapter( dynSQL, objCon );
DataSet oDS = new DataSet( "Command" );
try
{
oDA.Fill( oDS );
}
catch
{
//SSCS.ExceptionHandler(ex, "DBConnection.getDataSet");
}
return( oDS );
} // getDataSet
看起来您正在吞咽并忽略您的错误,这会使您认为您的代码运行良好,但实际上并非如此。
删除注释
public DataSet getDataSet( string dynSQL )
{
checkConnection();
SqlCeDataAdapter oDA = new SqlCeDataAdapter( dynSQL, objCon );
DataSet oDS = new DataSet( "Command" );
try
{
oDA.Fill( oDS );
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
return( oDS );
}
在Console.WriteLine
上放一个断点来读取错误是什么。一旦这是固定的,你应该只是删除整个try...catch
例程,这样,如果某些东西失败了,它不会对你隐藏。
更进一步,更改签名并在checkConnection
方法上添加检查:
public DataSet getDataSet( string dynSQL )
{
var oDS = new DataSet("Command");
try
{
if (!checkConnection()) {
throw new Exception("No connection to database.");
}
using (var oDA = new SqlCeDataAdapter(dynSQL, objCon)) {
oDA.Fill(oDS);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
return( oDS );
}
在没有看到其余代码的情况下,我假设您的查询没有返回任何内容。尝试在return( oDS );
上放置一个断点,看看oDS
有什么要说的。如果它里面没有任何东西,那么你的查询就不能正常工作。
您可能需要检查您的查询语法或连接字符串。
同样,您可以通过检查QtyDS.Tables.Count
来查找表计数。