错误消息:用户代码未处理SqlCeException
数据转换失败。 [ OLE DB status value (if known) = 2 ]
代码如下:
public static List<Emp_Salary> Emp_Salary_Select(string SalaryName, int State)
{
List<Emp_Salary> list = new List<Emp_Salary>();
using (SqlCeConnection con = new SqlCeConnection(Data_Share.LocalConStr))
{
con.Open();
SqlCeCommand com = con.CreateCommand();
com.CommandType = CommandType.Text;
com.Connection = con;
string SQL = @"SELECT [ESID]
,[ESName]
,[ESValue]
,[ESunitPrice]
,[ESDesc]
,[ESetUser]
,[ESetTime]
,[ESState]
,[EEndUser]
,[EEndTIme]
FROM [TBL_EmployeeSalary]
WHERE 1=1";
if (!string.IsNullOrEmpty(SalaryName))
{
SQL += " and [ESName] like ('%'+@ESName+'%')";
com.Parameters.Add("@ESName", DbType.String);
com.Parameters["@ESName"].Value = SalaryName;
}
if (State >= 0)
{
SQL += " and [ESState]=@ESState";
com.Parameters.Add("@ESState", DbType.Boolean);
com.Parameters["@ESState"].Value = State == 1;
}
com.CommandText = SQL;
using (IDataReader ireader = com.ExecuteReader())
{
Guid gd_tp = default(Guid);
double db_tp = 0D;
DateTime dt_tp = default(DateTime);
bool bl_tp = false;
while (ireader.Read())
{
Emp_Salary salary = new Emp_Salary();
salary.ESID = Guid.TryParse(ireader["ESID"].ToString(),out gd_tp) ? gd_tp : default(Guid);
salary.ESName = ireader["ESName"].ToString();
salary.ESValue = double.TryParse(ireader["ESValue"].ToString(), out db_tp) ? db_tp : 0D;
salary.ESUnitPrice = ireader["ESunitPrice"].ToString();
salary.ESDesc = ireader["ESDesc"].ToString();
salary.ESetUser = Data_SysUser.Sys_User_SelectSingle(Guid.TryParse(ireader["ESetUser"].ToString(), out gd_tp) ? gd_tp : default(Guid));
salary.ESetTime = DateTime.TryParse(ireader["ESetTime"].ToString(), out dt_tp) ? dt_tp : default(DateTime);
salary.ESState = bool.TryParse(ireader["ESState"].ToString(), out bl_tp) ? bl_tp : false;
salary.EEndUser = Data_SysUser.Sys_User_SelectSingle(Guid.TryParse(ireader["EEndUser"].ToString(), out gd_tp) ? gd_tp : default(Guid));
salary.EEndTime = DateTime.TryParse(ireader["EEndTIme"].ToString(), out dt_tp) ? dt_tp : default(DateTime);
list.Add(salary);
}
ireader.Close();
}
con.Close();
}
return list;
}
SQL脚本
--USE [Sync_ProjectManagementDB]
--GO
/****** 对象: Table [dbo].[TBL_EmployeeSalary] 脚本日期: 05/19/2012 17:00:35 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
--newsequentialid() SQL 2005 sp2中才有该函数
CREATE TABLE [dbo].[TBL_EmployeeSalary](
[ESID] [uniqueidentifier] NOT NULL DEFAULT (newsequentialid()),
[ESName] [varchar](50) NULL,
[ESValue] [money] NULL,
[ESunitPrice] [varchar](20) NULL,
[ESDesc] [varchar](200) NULL,
[ESetUser] [uniqueidentifier] NULL,
[ESetTime] [datetime] NULL,
[ESState] [bit] NULL,
[EEndUser] [uniqueidentifier] NULL,
[EEndTIme] [datetime] NULL,
[LastEditDate] [datetime] NULL CONSTRAINT [DF_TBL_EmployeeSalary_LastEditDate] DEFAULT (getutcdate()),
[CreationDate] [datetime] NULL CONSTRAINT [DF_TBL_EmployeeSalary_CreationDate] DEFAULT (getutcdate()),
PRIMARY KEY CLUSTERED
(
[ESID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
--SET ANSI_PADDING OFF
--GO
--ALTER TABLE [dbo].[TBL_EmployeeSalary] WITH CHECK ADD CONSTRAINT [FK_TBL_EmployeeSalary_TBL_SysUser_EEndUSer] FOREIGN KEY([EEndUser])
--REFERENCES [dbo].[TBL_SysUser] ([UNID])
--GO
--ALTER TABLE [dbo].[TBL_EmployeeSalary] CHECK CONSTRAINT [FK_TBL_EmployeeSalary_TBL_SysUser_EEndUSer]
--GO
--ALTER TABLE [dbo].[TBL_EmployeeSalary] WITH CHECK ADD CONSTRAINT [FK_TBL_EmployeeSalary_TBL_SysUser_ESetUser] FOREIGN KEY([ESetUser])
--REFERENCES [dbo].[TBL_SysUser] ([UNID])
--GO
--ALTER TABLE [dbo].[TBL_EmployeeSalary] CHECK CONSTRAINT [FK_TBL_EmployeeSalary_TBL_SysUser_ESetUser]
在CE中出问题的脚本:
SELECT [ESID]
,[ESName]
,[ESValue]
,[ESunitPrice]
,[ESDesc]
,[ESetUser]
,[ESetTime]
,[ESState]
,[EEndUser]
,[EEndTIme]
FROM [TBL_EmployeeSalary]
WHERE 1=1 and [ESName] like ('%'+@ESName+'%')
- 2 回答
- 0 关注
- 570 浏览
添加回答
举报
0/150
提交
取消