使用以下代码,我得到一个不太有用的错误消息(我在异常对话框的截断标题栏中看到的错误消息是“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 ”
现在我至少要对“行/列没有数据”错误信息。
答案 0 :(得分: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 ,并阅读Row[0]
中的2个项目。