我有一个问题,显示我的数据库表中的内容。我已经按照课堂指示进行了操作,但我已经被困了2天没有成功!
这是我到目前为止所做的事情;
string conStr = @"Data Source=C:\Users\secwp_000\documents\visual studio 2012\Projects\Module5\Module5\Orderdatabase.sdf";
SqlCeConnection con = new SqlCeConnection(conStr);
SqlCeCommand cmd = new SqlCeCommand("SELECT * FROM Order", con);
SqlCeDataAdapter adapt = new SqlCeDataAdapter(cmd);
DataSet ds = new DataSet();
adapt.Fill(ds, "Order");
foreach (DataTable dt in ds.Tables)
{
foreach (DataRow row in dt.Rows)
{
foreach (DataColumn column in dt.Columns)
{
Console.WriteLine(row[column]);
}
}
}
当我运行代码时,我在adapt.Fill(ds, "Order");
上发出错误An unhandled exception of type 'System.Data.SqlServerCe.SqlCeException' occurred in System.Data.SqlServerCe.dll
。我真的不明白。
编辑:我的DataConnections是;
Data Connections Orderdatabase.sdf Tables Order Columns OrderID etc..
为Nicks解决方案添加输出:
System.Data.SqlServerCe.SqlCeException (0x80004005): There was an error parsing the query. [ Token line number = 1,Token line offset = 21,Token in error = Order ] vid System.Data.SqlServerCe.SqlCeCommand.ProcessResults(Int32 hr) vid System.Data.SqlServerCe.SqlCeCommand.CompileQueryPlan() vid System.Data.SqlServerCe.SqlCeCommand.ExecuteCommand(CommandBehavior behavior, String method, ResultSetOptions options) vid System.Data.SqlServerCe.SqlCeCommand.ExecuteDbDataReader(CommandBehavior behavior) vid System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(Command Behavior behavior) vid System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable [] datatables, Int32 startRecord, Int32 maxRecords, String, srcTable, IDbCommand command, CommandBehavior behavior) vid System.Data.Common.DbDataAdapter.Fill(Dataset dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) vid System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable) vid Module5.Program.Main(String[] args) i c:\Users\secwp_000\Documents\Visual Studio 2012\Projects\Module5\Module5\Program.cs:rad 54编辑:这是一幅看起来像atm的照片。 http://oi61.tinypic.com/9pq70l.jpg
答案 0 :(得分:0)
首先来自Order的SELECT *是一个庞大的数据集合,我建议你试试这个:
SqlConnection con = new SqlCeConnection(conStr);
using(con)
{
SqlCommand cmd = new SqlCeCommand("SELECT OrderID FROM Order", con);
string OrderID = cmd.ExecuteScalar().ToString();
Console.WriteLine(OrderID);
}
如果成功,则继续使用foreach执行以使用SELECT * FROM ORDER
答案 1 :(得分:0)
您需要将表名括在括号中,因为这是一个保留字:
SqlCeCommand cmd = new SqlCeCommand("SELECT * FROM [Order]", con);
使用SELECT *永远不是一个好主意