Tag: stored procedures

C#/ SQL – 程序中SqlDbType.Xml有什么问题?

我问过几个人为什么在存储过程中使用xml作为参数不起作用而且每个人都说,这就是它的样子。 我无法相信这一点。 command.Parameters.Add(“@xmldoc”, SqlDbType.Xml); 这就是编译器返回错误的地方,我不能使用NVarChar beacouse它只限于4k唱歌。 XML将是完美的,因为它可以是2gig大。 为什么其他SqlDbTypes运行良好,这个重新出错? * 错误:指定的参数超出了有效值的范围。 参数名称:@xmldoc:无效的SqlDbType枚举值:25。 *

在SqlParameter中使用DateTime存储过程,格式错误

我正在尝试使用DateTime作为SqlParameter的值从C#,.NET 2.0调用存储过程(在SQL 2005服务器上)。 存储过程中的SQL类型是“datetime”。 从SQL Management Studio执行sproc工作正常。 但每次我从C#调用它时都会收到有关日期格式的错误。 当我运行SQL事件探查器来监视调用时,我然后复制粘贴exec调用以查看正在发生的事情。 这些是我对我尝试过的观察和注释: 1)如果我直接将DateTime作为DateTime传递或转换为SqlDateTime ,则该字段由单引号的PAIR包围,例如 @Date_Of_Birth=N”1/8/2009 8:06:17 PM” 2)如果我将DateTime作为字符串传递,我只得到单引号 3)使用SqlDateTime.ToSqlString()不会产生UTC格式的日期时间字符串(即使转换为通用时间后) 4)使用DateTime.ToString()不会产生UTC格式的日期时间字符串。 5)手动将SqlParameter的DbType设置为DateTime不会更改上述观察结果。 那么,我的问题是,我究竟是如何让C#在SqlParameter传递正确格式化的时间? 当然这是一个常见的用例,为什么这么难以开始工作? 我似乎无法将DateTime转换为SQL兼容的字符串(例如’2009-01-08T08:22:45’) 编辑 RE:BFree,实际执行sproc的代码如下: using (SqlCommand sprocCommand = new SqlCommand(sprocName)) { sprocCommand.Connection = transaction.Connection; sprocCommand.Transaction = transaction; sprocCommand.CommandType = System.Data.CommandType.StoredProcedure; sprocCommand.Parameters.AddRange(parameters.ToArray()); sprocCommand.ExecuteNonQuery(); } 详细了解我尝试过的内容: parameters.Add(new SqlParameter(“@Date_Of_Birth”, DOB)); parameters.Add(new SqlParameter(“@Date_Of_Birth”, DOB.ToUniversalTime())); parameters.Add(new SqlParameter(“@Date_Of_Birth”, DOB.ToUniversalTime().ToString())); SqlParameter param […]