2014-11-07 2 views
0

У меня есть пробник, отображающий то, что находится в моей таблице базы данных. Я следил за инструкциями по классу, но я застрял в течение 2 дней без успеха!Дисплей Локальная база данных C#

Вот что я сделал до сих пор;

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. Который я действительно не понимаю.

EDIT: My DataConnections - это;

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

Добавление выход для решения Никс:

 
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: Вот картина того, что она выглядит как атм. http://oi61.tinypic.com/9pq70l.jpg

+0

Добро пожаловать в переполнение стека. Что такое stacktrace точно? Пожалуйста, прочитайте [FAQ], [ask] и [help] как начало .. –

+0

Спасибо! Извините, я никогда не встречал это слово. Поэтому я не знаю. – Oscar

+0

Попробуйте поставить заявление об улове try вокруг вашего файла adapt.fill. В своем заявлении о выводе введите e в поле сообщения, и оно предоставит вам больше информации о вашей ошибке. Также как глупая мелочь: вы уверены, что ваш Столовый заказ с большой буквы в вашей базе данных? Глупая ошибка, но я сделал это много раз. –

ответ

0

Вы должны заключить имя таблицы в скобках, так как это зарезервированное слово:

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

d с помощью SELECT * никогда не бывает хорошей идеей

0

Прежде всего 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); 
     } 

И если это удастся, то перейти к Execute, используя Еогеасп для доступа всех строк и столбцов используя SELECT * FROM ORDER

+0

Я получаю «ExecuteScalar требует открытого и доступного соединения. Текущее состояние соединения закрыто». Я предполагаю, что база данных не связана каким-то образом? : S – Oscar

+2

с использованием (con) {con.Open(); string orderID = cmd.executeScaler(). ToString(); } –

+0

@NickOtten С этим coderow я получаю сообщение об ошибке «... string orderID = cmd.ExecuteScalar(). ToString(); ..« говорящий »Необработанное исключение типа« System.Data.SqlServerCe.SqlCeException »произошло в System.Data.SqlServerCe.dll " – Oscar

Смежные вопросы