System.Data.SqlServerCe.SqlCeCommand Has A Bug Related To SqlCeParameter Order That Causes Exceptions.
Jan 11, 2008
I came across a frustrating bug last week. Basically, whenever I tried to execute almost any sql query with unnamed parameters (i.e. using "?" instead of "@param_name" in the SQL text), an exception would be thrown.
After trying lots and lots of things and navigating my way through the internals of System.Data.SqlServerCe.dll, I discovered that the method System.Data.SqlServerCe.SqlCeCommand.CreateParameterAccessor(...) has a bug.
The bug is that the private arrays "parameters" and "metadata" are ordered differently, yet at one point in CreateParameterAccessor(...) they are compared using the same index. Here are the two lines:
p = this.parameters[ i ];
and
MetaData info = metadata[ i ]
and then the column data types of "info" & "p" are incorrectly compared in a later method, ValidateDataConversion(...).
So take a step back... how are they ordered differently? From observation, I concluded the following:
The "parameters" array is ordered exactly in the order that the DbParameter's were added to the DbCommand object.
The "metadata" array is ordered according to the column order of the table in the database.
So what causes the exception? Well, CreateParameterAccessor(...) passes data types from two different columns (one type taken from parameters[ i ] and the other from metadata[ i ]) on to SqlCeType.ValidateDataConversion(...). And, of course, if they differ (e.g. one column is of type DateTime and the other is a SmallInt), an exception is thrown.
I've found two workarounds, and both seem to work well.
The first is to name the SqlCeParameters (e.g. "SELECT ... WHERE id=@id"). This causes the buggy branch of code to be completely bypassed.
The second is to add the SqlCeParameters in the exact same order as the columns exist in the table you are accessing. Note, I do *not* mean the order that you select the columns (e.g. "SELECT column1, column2, ..."). I mean the actual order of the columns in the database.
I've included my setup and a stack trace below to help if it can.
My setup is:
.Net CF 3.5
SqlServer CE 3.5
Visual Studio 2008
Deployed to Pocket PC 2003
Here is the stack trace (note the variables passed to ValidateDataConversion):
I am developing a Application using SQLCE Database & VS 2005 for Intermec CN3 PDA It is having Windows Mobile 5.0 OS and ARM920T PXA27x Processor.
I have already installed Microsoft .NET CF 2.0, Microsoft SQL Client 2.0 ( using %Program Files%Microsoft SQL Server Compact Editionv3.1SDKinwce500armv4isqlce30.wce5.armv4i.CAB file) in PDA
I could able to run the application in the development environment which is having Windows XP OS. Microsoft .NET Compact framework 2.0, SQL Server 2005 Compact edition
But when I deploy the application in the PDA thro' cab file and try to run the application I am getting the below error at run time.
Could not load type 'System.Data.Sqlserverce.sqlcecommand' from assembly System.Data.Sqlserverce, version=9.0.242.0,culture=neutral,PublickeyToken=8984...'
I have added the SQLCE.dll from the below location
%Program Files%Microsoft SQL Server Compact Editionv3.1System.Data.SqlServerCe.dll
I have an app running Windows CE 5.0 and SqlServerCE 3.0. Occasionally, one of the production units will throw an exception with the following stack trace but no exception message:
Exception Msg:
Stack Trace: at System.Data.SqlServerCe.SqlCeCommand.ProcessResults() at System.Data.SqlServerCe.SqlCeCommand.CompileQueryPlan() at System.Data.SqlServerCe.SqlCeCommand.ExecuteCommand() at System.Data.SqlServerCe.SqlCeCommand.ExecuteReader() at System.Data.SqlServerCe.SqlCeCommand.ExecuteReader() at XX.MobileApp.frmXXX.LoadData()
This is not something that I have been able to reproduce in our shop. I even take their database and run it here in our shop with out such errors. Does anyone know some possible causes for this error?
Sorry, I don't have more info to give becuase this is all I have to work with since I cannot reproduce in our shop. If the exception object exposes a property for the HResult, I would be able to provide that.
I am trying to make a mobile application work, but I get the following error. The operating system on Pocket PC is Microsoft® Windows Mobile„¢ 2003 Second Edition. Any ideas? Thanks in advance.
The followings are the error and my codes:
System.TypeLoadException was unhandled Message="Could not load type 'System.Data.SqlServerCe.SqlCeDataAdapter' from assembly 'System.Data.SqlServerCe, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91'." StackTrace: at SQLMobile.Form1.Form1_Load() at System.Windows.Forms.Form.OnLoad() at System.Windows.Forms.Form._SetVisibleNotify() at System.Windows.Forms.Control.set_Visible() at System.Windows.Forms.Application.Run() at SQLMobile.Form1.Main()
Codes:
Private Sub FillGrid()
Dim filename As New String _
("Program FilesSQLMobilesqlmobile.sdf")
Dim conn As New SqlCeConnection("Data Source=" + filename)
Dim selectCmd As SqlCeCommand = conn.CreateCommand()
selectCmd.CommandText = "select Destination from flightdata"
Sorry being a little vague but if you can point me in the right direction. I have just created a new VB €“ Windows Mobile 5.0 pocket PC €“ Device Application. (which will be connected to a PDA)
Do i have to use System.Data.SqlServerCe or System.Data.SqlClient to connect to my db.
I believe I've encountered a compatability problems with Visual Studion CF 2, specifically with the System.Data.SQLServerCE reference when trying to run (in debug mode - Pocket PC 2003 emulation). The environment is configured as follows:
Visual Studio 2005 - Compact Framework 2.0.50727
Microsoft SQL Server 2005 Mobile Edition
The (VB) project includes the following references:
System.Data.dll V2.0.000 from Program FilesMicrosoft Visual Studio 8Smart DevicesSDKCompact Framework2.0V2.0WindowsCE
System.Data.SqlServerCE.dll V3.0.5214.0 from Program FilesMicrosoft SQL Server Mobile EditionDeviceMobileV3.0
The IDE does not sense any problems with the following code until I try to run it in debug mode using the Pocket PC 2003 emulator. The code :
Imports System
Imports System.IO
Imports System.text
Imports System.Data
Imports System.Data.SqlServerCe
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
MsgBox("Will Test SQL")
Call testSQL()
End Sub
Private Sub testSQL()
Dim strConn As String = "Data Source = Test.sdf; Password = <password>"
In the debugger, the program terminates at Dim CEEngine As New SqlCeEngine(strConn). The message displayed is
Can't find PInvode DLL 'sqlceme30.dll'
I've tried referencing a different version of System.Data.SqlServerCE.dll (from Program FilesMicrosoft SQL Server90ToolsBinnVSShellCommon7IDE but the program will not even deploy to the emulator with this reference.
I encounter a Deployment/and or registration failed wit error : 0x8973190e - There is not enough space on the disk.
I've inherited a .NET CF 2.0 application at work that uses SQL CE, and as I'm digging into the build process, I'm getting confused about which version of SQL CE that is being used.
The project references System.Data.SqlServerCe (no hint path, just from wherever VS 2005 has it). When I look at the assembly in my project, the version shows up as 3.0.3600.0, but when I browse to the DLL's location on my hard drive (C:Program Files (x86)Microsoft Visual Studio 8SmartDevicesSDK\SQL ServerMobilev3.0System.Data.SqlServerCe.dll), right click the DLL and check the properties, the version shows up as 3.0.3600.0.
In our installation package, we install three SQL CE Cabs: sqlce30.dev.ENU.ppc.wce5.armv4i.CAB sqlce30.ppc.wce5.armv4i.CAB sqlce30.repl.ppc.wce5.armv4i.CAB
When installed on the device, the Remove Programs dialog shows as "Microsoft SQL Mobile 2005..." is installed. We keep the cabs in a seperate location so they are not just pulled from anywhere on the hard drive.
However, when I install the same CAB files located at: C:Program Files (x86)Microsoft Visual Studio 8SmartDevicesSDKSQL ServerMobilev3.0wce500armv4i, the device shows "Microsoft SQL Mobile 2005 Compa...." is installed.
In my Add References dialog, System.Data.SqlServerCe has version 3.0.3600.0, runtime v2.0.50727
Some questions: 1. Is the version 3.0.3600.0 the same between 3.0 and 3.1? 2. Given a System.Data.SqlServerCe DLL, how can I tell if it is the 3.0 or 3.1 version? 3. When upgrading my project to use 3.1, is it enough simply to upgrade my build environment? Or should I need to change the references in my project? (It appears that the 3.1 DLLs have been placed into the default locations where VS 2005 is pulling them from). I'm using VS 2005 SP1 on Vista x64.
I am attempting to create a program that will run on the PocketPC 2003 environment. I have upgraded Visual Studio to SP1, I have installed SQL Server Compact Edition on my development machine and I have installed SQL Server Compact Edition Tools For Visual Studio on the development machine.
I have created a new project Visual Basic - Smart Device - Pocket PC 2003. I have created a form for user input. I build and deploy the form to the Symbol Pocket PC to test - no connection to data and it works.
I then add a reference to System.Data.SqlServerCE.dll and rebuild and redeploy the application to the handheld. When I attempt to open the form I receive the following error:
at System.Resources.ResourceReader.LoadObjectV2() at System.Resources.ResourceReader.LoadObject() at System.Resources.RuntimeResourceSet.GetObject() at System.Resources.ResourceManager.GetObject() at System.Resources.ResourceManager.GetObject() at pmsPocket.frmSetSOPType.InitializeComponent() at psmPocket.frmSetSOPType..ctor() at System.Reflection.RuntimeContructorInfo.InternalInvoke() at System.Reflection.RuntimeContructorInfo.InternalInvoke() at System.Reflection.ContrcutorInfo.Invoke() at System.Activator.CreateInstance() at MyForms.Create__Instance__() at MyForms.get_frmSetSOPType() at psmPocket.SetSOPType.Main()
Now the confusing part is that I haven't changed any of the forms or the code behind the forms, I have simply added the reference to the project.
Any idea why adding the reference to System.Data.SqlServerCE.dll would cause the system to start generating these errors?
I've checked, the install process has loaded the .NET 2 framework to the handheld. And as indicated at the beginning of this message, the application showed the form prior to my adding the reference.
I'm using SQL Server Compact Edition, but in the future I would like to be able to switch to another SQL Server Edition or even a different database. To achieve this, Microsoft recommends using DB Provider Factories (see: Writing Provider Independent Code in ADO.NET, http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=674426&SiteID=1).I enumerated the available data providers on my PC with:
The important entry is:"SQL Server CE Data Provider"".NET Framework Data Provider for Microsoft SQL Server 2005 Mobile Edition""Microsoft.SqlServerCe.Client""Microsoft.SqlServerCe.Client.SqlCeClientFactory, Microsoft.SqlServerCe.Client, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"When executing:
I got at first this error run time message: Failed to find or load the registered .Net Framework Data Provider.I added a reference to "Microsoft.SqlServerCe.Client" at C:ProgrammeMicrosoft Visual Studio 8Common7IDEMicrosoft.SqlServerCe.Client.dll and the program runs.Of course, it uses "Microsoft.SqlServerCe.Client" instead of "System.Data.SqlServerCe". Laxmi Narsimha Rao ORUGANTI from Microsoft writes in the post "SSev and Enterprise Library" that "Microsoft.SqlServerCe.Client" is not meant to be used and that we should add the following entry to the machine.config file:
Code Snippet<add name="SQL Server Everywhere Edition Data Provider" invariant="System.Data.SqlServerCe" description=".NET Framework Data Provider for Microsoft SQL Server Everywhere Edition" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
I get the same error message as before, even after adding a reference to "System.Data.SqlServerCe" at C:ProgrammeMicrosoft Visual Studio 8Common7IDESystem.Data.SqlServerCe.dll.Any suggestion what I should do ? Just use "Microsoft.SqlServerCe.Client" ? Anyway, I don€™t like the idea that I have to change the machine.config file, since I want to use click once deployment.
We are facing a problem with compact framework 1.0 and SQL CE on windows mobile 5.0 smart phone (Motorola Q).
The application was build for Windows Mobile 5.0. When we use €œSystem.Data.SQLServerCE.dll€? from €œC:Program FilesMicrosoft Visual Studio 8SmartDevicesSDKSQL ServerMobilev3.0€? in compact framework 2.0 it works fine.
Since Motorola Q has .Net Compact Framework 1.0 we need to port same application to compact framework 1.0. There is similar DLL in "C:Program FilesMicrosoft Visual Studio 8SmartDevicesSDKSQL ServerMobilev2.0" but it is not working, it gives runtime error missing method at very first line of code SqlCeEngine _eng = new SqlCeEngine().
Hi! I am having a problem getting the inserted id from a table.
Here is the table:
/*********************** Companies **********************************/ CREATE TABLE Companies( CompanyId int IDENTITY(1,1) PRIMARY KEY, Description nvarchar(30) NOT NULL ) GO
When I type SELECT @@IDENTITY in SQL Management Studio after a successful insert, it works fine. However, in code (System.Data.SqlServerCe), I get an error using this code:
SqlCeCommand cmd = conn.CreateCommand();
cmd.CommandText = sql;
cmd.CommandType = System.Data.CommandType.Text;
ret = (int)cmd.ExecuteScalar();
I saw a thread with this solution, but do I really have to go to this trouble?
DECLARE @MyTable table ( MyIdentity int ) INSERT INTO Employees ( FirstName, LastName ) OUTPUT inserted.EmployeeID INTO @MyTable VALUES ( 'Bill', 'Smith' ) SELECT MyIdentity FROM @MyTable
scope_identity does not seem to work either. Am I missing something?
I have referrenced System.Data.SqlServerCE.dll to my web project in order to create a .sdf file. I haven't wrote any code,just referenced it. When I build the project I get this error:
Error 2 'System.Data.SqlServerCe, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' cannot be loaded.
Why System.Data.SqlserverCe.Dll doesn't appear in VS2005. In VS2003 System.Data.SqlserverCe.Dll appear to write winCE application. But it won't appear in VS2005 while am selecting PocketPc application. any body gimme the solution.
Hello All ...I am attempting to create a program that will run on the PocketPC 2003 environment. I have upgraded Visual Studio to SP1, I have installed SQL Server Compact Edition on my development machine and I have installed SQL Server Compact Edition Tools For Visual Studio on the development machine.I have created a new project Visual Basic - Smart Device - Pocket PC 2003. I have created a form for user input. I build and deploy the form to the Symbol Pocket PC to test - no connection to data and it works.I then add a reference to System.Data.SqlServerCE.dll and rebuild and redeploy the application to the handheld. When I attempt to open the form I receive the following error:psmPocket.exeNotSupportedExceptionSystem.Drawing.Bitmapat System.Resources.ResourceReader.LoadObjectV2() at System.Resources.ResourceReader.LoadObject() at System.Resources.RuntimeResourceSet.GetObject() at System.Resources.ResourceManager.GetObject() at System.Resources.ResourceManager.GetObject() at pmsPocket.frmSetSOPType.InitializeComponent() at psmPocket.frmSetSOPType..ctor() at System.Reflection.RuntimeContructorInfo.InternalInvoke() at System.Reflection.RuntimeContructorInfo.InternalInvoke() at System.Reflection.ContrcutorInfo.Invoke() at System.Activator.CreateInstance() at MyForms.Create__Instance__() at MyForms.get_frmSetSOPType() at psmPocket.SetSOPType.Main()Now the confusing part is that I haven't changed any of the forms or the code behind the forms, I have simply added the reference to the project.Any idea why adding the reference to System.Data.SqlServerCE.dll would cause the system to start generating these errors?I've checked, the install process has loaded the .NET 2 framework to the handheld. And as indicated at the beginning of this message, the application showed the form prior to my adding the reference.Thoughts?Thanks ...
I am trying to use SQL Mobile 2005 with Visual Studio 2005. I have a simple sql mobile db i created and am trying to test connectivity to the DB in a simple app. I added the reference to the SqlServerCE and the verison # that is shown in properties is 3.0.3600.0, but when i look at the physical DLL in explorer (found at C:Program FilesMicrosoft Visual Studio 8SmartDevicesSDKSQL ServerMobilev3.0) the version # is 3.0.5206.0, so when i compile and run the test, I get :
How can I tell if the System.Data.SqlServerCe assembly I am referencing is meant for Desktop use as opposed to Compact development? We are using NUnit as our testing framework and I get the following error when I attempt to execute nunit-console on my test fixture referencing SqlServerCe:
System.IO.FileLoadException : Could not load file or assembly 'System.Data.SqlServerCe, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) ---->
System.IO.FileLoadException : Could not load file or assembly 'System.Data.SqlServerCe, Version=3.0.3600.0, Culture=neutral, PublicKeyToken=3be235df1c8d2ad3, Retargetable=Yes' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
The unit tests run fine from inside of Visual Studio using the Resharper Unit Test Runner...
Hi, I am working on a .dll which need to access .sdf ( sql server mobile db). In my project, I added a reference "System.Data.SqlServerCe.dll". The dll is located in C:Program FilesMicrosoft Visual Studio 8Common7IDE. I am able to compile the project. Then I created a Unit project for this dll file. In Unit project, I added the same reference. Now the magic things happen. The compiling was failed. I got "Error 1 The type 'System.Data.Common.DbConnection' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. C:VS2005MobileDBUnitMobileDBProjectUnitMobileDB.cs 50 13 UnitMobileDBProject".
I don't understand how come the same .dll could pass in a dll project but failed in unit test project. And I never saw the System.Data.SqlServerCe display in ".Net" Section of Add reference. But in my office, I installed same version of VS2005 for software tester. I could see the System.Data.SqlServerCe display in the ".Net" section of Add Reference.
We have a Compact Framework 1.1 application that uses Sql Server CE 2.0. In VS2003, a reference to System.Data.SqlServerCe causes the Sql Server CE dlls and Query Analyzer to install to the Emulator or PDA.
I am currently converting the application to Compact Framework 2.0, but we are not upgrading to Sql Server Mobile (yet). However, the reference to System.Data.SqlServerCe, in VS 2005, no longer causes Sql Server CE to install to the PDA/Emulator.
There is a difference in the build outputs between VS2003 & VS2005. In 2003, System_SR_enu.cab, sqlce.wce4.x86.cab & sqlce.dev.wce4.x86.cab are copied & lanuched. In 2005, only System_SR_enu.cab is copied... no launch.
We just upgraded our applications from VS 2005 to VS 2008 and discovered we had to convert our SQL Server CE databases. So I did that. I then included the sqlce...35.dlls in the application directory on my test computer as well as the System.Data.SqlServerCe.dll version 3.5.
When I run the app and it tries to load the System.Data.SqlServerCe.dll I get the following error: System.IO.FileLoadException: Could not load file or assembly 'System.Data.SqlServerCe, Version 3.5.0.0...or one of its dependencies. The located assembly's manifest definition does not match the assembly reference.
We have the application targeting the .NET Framework 2.0 and need to keep it that way for awhile.
This is my first time posting here, I hope this questions has not been asked before. I tried to search for it but I came not with nothing.
Recreating the error :
I am using VS2005. I created a Pocket PC 2003 project. I have downloaded the SQL Server Compact Edition and installed it. I get the System.Data.SqlServerCe.dll file from the installation directory. I reference to that DLL using Add Reference in VS2005.
Build it. In the Bin folder, a long list of files suddenly appears.
System.data.dll System.data.oracleClient.dll system.web.dll system.enterpriseservices.dll system.enterpriseservices.wrapper.dll system.transactions.dll and the rest of your original files in Bin
The worst of it all, all of these files are deployed into the Emulator! Causing it to run out of memory and unable to deploy.
Something is not right here, I just cannot figure it out! If this happens, each mobile devices can hold one applications. Thats not the way it should be, right?
If you have solved this before, do help. I am at my wits end at the moment.
I have built a small application in vs2005 (vb) using system.data.slqserverce building
in the mobile sql engine into my app. I intend to run this on desktop. The app
works fine on my development laptop machine, when i publish it (to a hard disk folder) and run it on another laptop, i get:
'unable to install or run the application. The application requires that assembly system.data.sqlserverce version 9.0.242.0 be installed in the Global Assembly Cache (GAC) first.'
This is my first app in .net so not sure what this means.
I thought all i had to do was reference the file (which i have done in the project) and
VS would take care of stuff like this? Framework 2.0 is installed on the target machine.
Hope im in the right forum for this! if not i apologise
Using RAISERROR from within a stored prcedure will result in a SQLException being thrown at the client side of a JDBC connection. I am trying to provide a meaningfull error message to be shown to the end user. However, all exceptions thrown will inevitably start with : "[Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]". The following questions then arise :
- Is there a way of configuring SQL Server not to display this header ?
alternatively,
- Is there another way of conveying error messages to the client through JDBC ?
I have created a windows library control that accesses a local sql database
I tried the following strings for connecting
Dim connectionString As String = "Data Source=localhostSQLEXPRESS;Initial Catalog=TimeSheet;Trusted_Connection = true"
Dim connectionString As String = "Data Source=localhostSQLEXPRESS;Initial Catalog=TimeSheet;Integrated Security=SSPI"
I am not running the webpage in a virtual directory but in
C:Inetpubwwwrootusercontrol
and I have a simple index.html that tries to read from an sql db but throws
the error
System.Security.SecurityException: Request for the permission of type 'System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed. at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet) at System.Security.PermissionSet.Demand() at System.Data.Common.DbConnectionOptions.DemandPermission() at System.Data.SqlClient.SqlConnection.PermissionDemand() at System.Data.SqlClient.SqlConnectionFactory.PermissionDemand(DbConnection outerConnection) at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection,
etc etc
The action that failed was: Demand The type of the first permission that failed was: System.Data.SqlClient.SqlClientPermission The Zone of the assembly that failed was: Trusted
I looked into the .net config utility but it says unrestricted and I tried adding it to the trusted internet zones in ie options security
I think that a windows form connecting to a sql database running in a webpage should be simple
What is the "correct" way of dealing with exceptions in a data flow script component. i.e. am I supposed to catch all exceptions and then set some failure flag? The reason I ask is I've got a script in a dataflow which is occasionally throwing exceptions when trying to convert an empty string to a decimal. Problem was the package locked up and had to be terminated when the exception was thrown (and not caught in the script)?
The only thing which differentiates this package from others I've created is the data flow has a conditional split which creates 2 seperate paths loading 2 seperate SQL tables - the exception is being thrown in a script on one branch which seems to hand the entire flow
PS I have fixed the script so this doesn't happen, i.e. test if the input string is String.Empty and if so set the _IsNull property.
conn.Open(); . Everything works fine when I run it from my computer. When I try to run it from a network share I get the following error,
Request for the permission of type 'System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
I am using Visual Studio 2005 and .Net framwork v2.0.50727.
I have a report that uses some embedded custom code. The embedded custom code is a function that execute some sql query on a sql server database.Everything works fine in Visual studio. The report gets deployed on the server successfully, however when running the report from report manager i get the following error message :
The Hidden expression for the table €˜table1€™ contains an error: Request for the permission of type 'System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
Public function get_field() as string Dim myConnection As System.Data.SqlClient.SqlConnection Dim myCommand As System.Data.SqlClient.SqlCommand Dim data_reader As System.Data.SqlClient.SqlDataReader Dim field(100) as string Dim i as integer Dim j as integer Dim sql_field as string Dim nbr_field as integer Dim rtn_string as string
i = 0 sql_field ="Select field from mytable" myConnection = New System.Data.SqlClient.SqlConnection("Datasource=xxx.xxx.xxx.xxmydatabase;Initial Catalog=mydatabase;User Id=user1;Password=password1;") myConnection.Open() myCommand = New System.Data.SqlClient.SqlCommand(sql_field, myConnection) data_reader = myCommand.ExecuteReader() While data_reader.Read() if data_reader.HasRows then field(i)= data_reader(0).ToString() end if nbr_field = nbr_field + 1 i= i+1 End While data_reader.Close() myConnection.Close()
for j = 0 to nbr_field -1 rtn_string = rtn_string + field(j) + "," Next j
rtn_string = left(rtn_string,rtn_string.length-1) return rtn_string 'return sql_cmd 'return yes_no 'return lkupfield end function
Hi, I've written this code multiple times now. But for the first time i get an error at the line underlined. My procedure runs perfectly when i execute it through Sql Query analyzer. plzz help.. Its urgent and am unable to find the reason for this error "A first chance exception of type 'System.Data.SqlClient.SqlException' occurred in system.data.dll" Thanks !SqlConnection conn = new SqlConnection(DbConnectionString); conn.Open(); SqlCommand cmd = conn.CreateCommand(); cmd.CommandText = "dbo.rqryTradesPRR"; cmd.Parameters.Add("@COBDate",SqlDbType.DateTime).Value = "2002-10-31 00:00:00.000" ; SqlDataReader reader = cmd.ExecuteReader(); while(reader.Read()) { // have written something here
I made a merge replication and sucessfully connected with mobile device. Everything works fine. Because I wanna try asynchronous synchronization (which won't stop my application executing when subscribing) I read How to example from MSDN : http://msdn2.microsoft.com/en-us/library/ms172391.aspx But there is a problem with creating SyncStatus class object. I can't get into it and I can't create. maybe some reference will help? (I use reference to SQLServerCE). This error stoped my work for now, so I am waiting for some answers.
And if it's simple resolution for this problem - sorry. I just started programming applications for Mobile Devices.
we just migrated to SqlServerMobile 3.5. My first experience is that Version 3.5 is much slower than 3.1. I upgraded and compacted an existing Database. Is it recommended to create a new database, instead?
Has anybody else the feeling that Version 3.5 is slower? Are there any settings to speed up the database.
I have a function thats inserts data to a table with a SqlCeCommand with 42 Parameters. It had always worked perfectly with WMobile 2003 and WMobile 5 devices until now.
Recently I got 2 new pdas (both Phone Edition) which crash in that function with de following error: Exception An SqlCeParameter with ParameterName '@totallinesamountwithlinediscounts' is not contained by this SqlCeParameterCollection.
I tried putting a shorter name on the param and it worked (well, it failed because another long name param). To make sure it was a length problem it changed the long name with a dummy long name (@a234567890b234567890c234567890d23) and amazingly it worked.
After some tries I got that the failing parameters were: @TotalLinesAmountWithLineDiscounts @TotalLinesAmountWithAllDiscounts @TotalLinesAmountIncludingTax
I thought it could be caused because the parameters have similar names but when I replaced the params with: @a234567890b234567890c234567890d @a234567890b234567890c234567890d23 @a234567890b234567890c234567890d2345 It worked properly, and they have similar name also.
I've tried the same binaries and database on other devices and their work properly with the correct names.
I can make it work with this weird names but I would like to know the source of the problem to avoid future errors.
Does anyone have an idea of what may be the problem? Is there any known issue about problems with SqlCeParameters and different versions of Windows Mobile?