2014-05-06 159 views
3

我開發的Windows CE 5.0設備,我試圖連接到遠程SQL Server。但是,如果使用命令與參數,我得到異常:.Net緊湊框架SqlClient異常

{System.Data.SqlClient.SqlException: SqlException 
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, TdsParserState state) 
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, TdsParserState state) 
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() 
at System.Data.SqlClient.TdsParser.Run(RunBehavior run, SqlCommand cmdHandler, SqlDataReader dataStream) 
at System.Data.SqlClient.SqlDataReader.ConsumeMetaData() 
at System.Data.SqlClient.SqlDataReader.get_MetaData() 
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream) 
at System.Data.SqlClient.SqlCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) 
at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) 
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) 
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet) 
at Test.MainForm.TestConnection() 
... 
} 

代碼:

SqlConnection conn = new SqlConnection(connectionString); 
conn.Open(); 
SqlCommand cmd = conn.CreateCommand(); 
cmd.CommandText = "select * from table_name where id = @id"; 
cmd.CommandType = CommandType.Text; 
cmd.Parameters.Add(new SqlParameter("id", 1)); 
SqlDataAdapter da = new SqlDataAdapter(cmd); 
DataSet ds = new DataSet(); 
da.Fill(ds); 
DataTable dt = ds.Tables[0]; 

而且沒有添加參數指揮它工作正常。請告訴我可能是什麼原因? (我使用VS2008,.NET精簡框架3.5)

+2

什麼是異常消息正好過嗎?看起來你忘了在添加參數行中使用''''和'@',例如'cmd.Parameters.Add(new SqlParameter(「@ id」,1));'或者可能是一種類型的過程.. –

+0

@SonerGönül,是的,對不起,錯過支架只是一個錯字,但不是'@'。沒有'@'的相同代碼可以在.Net Framework 3.5項目中使用(不是Compact),所以我很困惑。非常感謝) – skm

+0

順便說一下,它是完全異常消息:消息=「SqlException」和堆棧跟蹤。 – skm

回答

6

把 '@' 參數名稱,如

cmd.Parameters.Add(new SqlCeParameter("@id", 1));