简体   繁体   English

显示本地数据库C#

[英]Display Local database c#

I have a probnlem displaying what's in my Database table. 我有一个问题显示数据库表中的内容。 I've followed my class instructions but I've been stuck for 2 days without success! 我已按照课堂指示上课,但被困了2天却没有成功!

Here is what I've done so far; 到目前为止,这是我所做的;

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]);
       }
    }
}

When i run the code i get a error on adapt.Fill(ds, "Order"); 当我运行代码时,我在adapt.Fill(ds, "Order");adapt.Fill(ds, "Order"); saying An unhandled exception of type 'System.Data.SqlServerCe.SqlCeException' occurred in System.Data.SqlServerCe.dll . An unhandled exception of type 'System.Data.SqlServerCe.SqlCeException' occurred in System.Data.SqlServerCe.dll Which I don't really understand. 我不太了解。

EDIT: My DataConnections is; 编辑:我的DataConnections是;

Data Connections
    Orderdatabase.sdf
        Tables
            Order
                Columns
                    OrderID
                    etc..

Adding output for Nicks solution: 为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

EDIT: Here is a picture of what it looks like atm. 编辑:这是一张看起来像atm的图片。 http://oi61.tinypic.com/9pq70l.jpg http://oi61.tinypic.com/9pq70l.jpg

First of all SELECT * from Order is a huge collection of data, I suggest you try this: 首先,来自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);
        }

And if this is successful then go on to execute using foreach to access all rows and columns using SELECT * FROM ORDER 如果成功,则继续使用foreach执行,以使用SELECT * FROM ORDER访问所有行和列

You need to enclose the table name in brackets, as this is a reserved Word: 您需要将表名括在方括号中,因为这是保留字:

SqlCeCommand cmd = new SqlCeCommand("SELECT * FROM [Order]", con);

And using SELECT * is never a good idea 使用SELECT *从来都不是一个好主意

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM