0

使用以下代码,我得到一个不太有用的错误消息(我在异常对话框的截断标题栏中看到的所有错误消息都是“System.Data.SQLServer ...”)

string query = "SELECT * FROM EVERYTHING";
SqlCeCommand cmd = new SqlCeCommand(query);
SqlCeConnection conn = new SqlCeConnection(myConnStr); 
conn.Open();
cmd.Connection = conn;
SqlCeDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection); // <-- Blows up bigger than an Augustus Gloop pinata

更新

我添加了这个:

MessageBox.Show(string.Format("query is {0}", query));

...对失败的查询进行全面检查,最终发现头发簇现在散落在我的工作区域。我有这个来提供查询:

string vendorId = txtVendor.ToString().Trim();

...而不是这个:

string vendorId = txtVendor.Text.ToString().Trim();

...因此查询是“ SELECT BLA FROM BLA WHERE BLA = System.Windows.Forms.Label

现在我至少要“行/列不存在数据”错误消息。

4

1 回答 1

1

我不确定 CF 是否支持该CommandBehavior.CloseConnection选项。

你可以这样写吗?

string query = "SELECT * FROM EVERYTHING";
var table = new DataTable();
using (var cmd = new SqlCeCommand(query, new SqlCeConnection(myConnStr)); {
  try {
    cmd.Connection.Open();
    table.Load(cmd.ExecuteReader());
  } catch (SqlException err) {
    Console.WriteLine(err.Message); // <= Put a Break Point here.
  } finally {
    cmd.Connection.Close();
  } 
}
object col1 = null;
string strCol2 = null;
if (0 < table.Rows.Count) {
  col1 = table.Rows[0][0];
  object obj = table.Rows[0][1];
  if ((obj != null) && (obj != DBNull.Value)) {
    strCol2 = obj.ToString();
  }
}

编辑:添加DataTable并从中读取 2 个项目Row[0]

于 2013-03-22T13:02:18.297 回答