我正在尝试搜索我的本地数据库表,只显示它的所有列。
我开始发送
SearchID("1234");
到目前为止我的代码:
private static void SearchID(string CostumerID)
{
string conStr = @"Data Source = C:\Users\secwp_000\documents\visual studio 2012\Projects\Module5\Module5\Orderdatabase.sdf";
DataSet ds = new DataSet();
SqlCeConnection con = new SqlCeConnection(conStr);
SqlCeCommand cmd = new SqlCeCommand("SELECT * FROM [Order]", con);
SqlCeDataReader dr = cmd.ExecuteReader();
SqlCeDataAdapter adapt = new SqlCeDataAdapter(cmd);
adapt.Fill(ds, "Order");
while (dr.Read())
{
string str = (string)dr[1];
if (str == CostumerID)
{
Console.WriteLine(str);
}
}
}
我在哪里想错了?
停止
SqlCeDataReader dr = cmd.ExecuteReader();
说我没有联系。但只是听起来很奇怪,因为我刚刚连接..
答案 0 :(得分:0)
您有连接但尚未打开它:
con.Open();
adapt.Fill(ds, "Order");
con.Close();
此外,您应该对using
和SqlConnection
等一次性对象使用SqlCommand
语句,以确保它们得到妥善处理:
using(SqlCeConnection con = new SqlCeConnection(conStr))
using(SqlCeCommand cmd = new SqlCeCommand("SELECT * FROM [Order]", con))
{
}
答案 1 :(得分:0)
您必须使用
打开连接If(con.state.toString()=="closed")
con.open();
我在你的查询中发现了一个错误,为什么你在从数据库中获取后比较你的结果。你可以直接在SQL查询中过滤
Select * from order where table.customer_Id = customerId
答案 2 :(得分:0)
按照给我的指示,此代码没有任何问题,它可以显示带有costumerID 1234的订单。