显示本地数据库c#

时间:2014-11-07 12:04:55

标签: c# database visual-studio-2012 sql-server-ce adapter

我有一个问题,显示我的数据库表中的内容。我已经按照课堂指示进行了操作,但我已经被困了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

2 个答案:

答案 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 *永远不是一个好主意