我的插入存储过程:
ALTER procedure proj_ins_all
(
@proj_number INT,
@usr_id INT,
@download DATETIME,
@status INT
)
as
INSERT INTO project
(proj_number, usr_id, date_download, status_id)
VALUES
(@proj_number, @usr_id, @download, @status)
select SCOPE_IDENTITY()
Run Code Online (Sandbox Code Playgroud)
...手动调用时运行正常,如下所示:
exec proj_ins_all 9001210, 2, '2009-09-03', 2
Run Code Online (Sandbox Code Playgroud)
...但是从代码调用时:
_id = data.ExecuteIntScalar("proj_ins_all", arrParams);
Run Code Online (Sandbox Code Playgroud)
......插入不会发生.现在,标识列确实增加了,并且_id 确实设置为它的值.但该行本身从未出现在表格中.
我能想到的最好的猜测是一个插入触发器,它删除了新插入的行,但是表上没有触发器(为什么它会在手动完成时工作呢?).我的其他尝试是围绕猜测存储过程以某种方式回滚插入,因此将开始和结束并且将分号和分号放入存储过程以正确分离"插入"和"身份选择"位.没有修复.
有任何想法吗?
更新:
谢谢所有迄今为止帮助过的人.关于Preet的建议(第一个答案)我学会了如何使用SQL Server Profiler(我简直不敢相信我之前从未了解过它 - 我认为它只对性能调优有用,没有意识到我可以确切地看到查询的内容带它的DB).
它揭示了SqlCommand.ExecuteScalar()方法发送的SQL与我手动运行的SQL略有不同.它发送:
exec proj_ins_all @proj_number=9001810,@usr_id=2,@download='2009-09-03 16:20:11.7130000',@status=2
Run Code Online (Sandbox Code Playgroud)
我手动跑了,瞧!实际的SQL服务器错误(!):
将数据类型varchar转换为datetime时出错.
由于我是手动测试的,我只是将日期时间从'2009-09-03 16:20:11.7130000'缩短为'2009-09-03 16:20:11',这就解决了错误; 现在插入的行很好.
但这引出了一个问题:为什么Microsoft的SQL Server在该datetime参数中不能处理超过23个字符?这是Microsoft的SqlCommand.ExecuteScalar()方法,它构建了这样的查询,而不是我.这是一个问题,因为我的代码仍然不起作用.
一旦我手动工作,我就会看到如何在代码中为日期设置SqlParameter,这样它就会发送一个有效的值.我尝试将数据类型从SqlDbType.DateTime …
谁能告诉我两者之间的区别是什么:
Display *disp = new Display();
Run Code Online (Sandbox Code Playgroud)
和
Display *disp;
disp = new Display();
Run Code Online (Sandbox Code Playgroud)
和
Display* disp = new Display();
Run Code Online (Sandbox Code Playgroud)
和
Display* disp(new Display());
Run Code Online (Sandbox Code Playgroud) 区分Abstract类和接口类是否重要?
抽象类只是一个接口类,有一些具体的方法.
如果抽象类与Interface类共享相同的前缀"I",我们可以通过引入新的逻辑等轻松地将我们的接口类升级为抽象类.
UPDATE
我问这个的原因是,当项目增长时,界面会产生一些限制.例如,
如果一个接口已经由千个类"实现",并且在某些时候我们需要在基类中引入一些新方法,我们将必须修复所有子类.
抽象类在功能扩展方面提供了灵活性,因为它可以提供默认实现而不会影响子类.
这就是为什么我能够交换使用接口和抽象类的想法.
ICar car = new Merz(); // ICar can be interface or abstract class
Run Code Online (Sandbox Code Playgroud)
但是,当我再次考虑它时,我们仍然需要更改所有子类,因为类声明迫使我们在一开始就使用"扩展"或"实现".
所以我认为没有选择在abstract/interface类上进行多态.
我有一个
<p style="display: block;" class="title fieldChoices">Choices:
<input value="option1" maxlength="150" id="Choice1"/>
<input value="option2" maxlength="150" id="Choice2"/>
</p>
Run Code Online (Sandbox Code Playgroud)
我正在尝试fieldChoices使用JQUery 计算其中有多少输入框.请建议一种方法如何做到这一点.
Date.TryParse的方法签名是:
Public Shared Function TryParseExact ( _
s As String, _
format As String, _
provider As IFormatProvider, _
style As DateTimeStyles, _
<OutAttribute> ByRef result As DateTime _
) As Boolean
Run Code Online (Sandbox Code Playgroud)
我理解什么格式,但是什么是提供者参数?我知道您传入了CultureInfo实例,但我不确定它的用途是什么.
有谁能请赐教?
我有一个XSL样式表,我需要使用xsl:function添加一些自定义字符串操作.但是我在尝试找出将函数放在文档中的位置时遇到了麻烦.
我的XSL简化看起来像这样,
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:my="myFunctions" xmlns:d7p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="Master.xslt"/>
<xsl:template match="/">
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<!-- starts actual layout -->
<fo:page-sequence master-reference="first">
<fo:flow flow-name="xsl-region-body">
<!-- this defines a title level 1-->
<fo:block xsl:use-attribute-sets="heading">
HelloWorld
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
我想提出一个简单的功能,比方说,
<xsl:function name="my:helloWorld">
<xsl:text>Hello World!</xsl:text>
</xsl:function>
Run Code Online (Sandbox Code Playgroud)
但是我无法确定放置函数的位置,当我把它放在节点下时我得到一个错误,说' xsl:function'不能是'xsl:stylesheet'元素的子元素.,如果我把它放在节点下,我会收到类似的错误.
我应该把功能放在哪里?理想我想将我的函数放在外部文件中并将它们导入我的xsl文件中.
这是我的C程序:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <ctype.h>
#define FALSE 0
#define TRUE 1
typedef struct _Frag
{
struct _Frag *next;
char *seq;
int x1;
int length;
} Frag;
typedef struct _Fragment
{
int type;
Frag *frag_list;
} Fragment;
static void
free_frags (Fragment * frags, int len)
{
int i;
for (i = 0; i < len; i++)
{
Fragment *fragment = &frags[i];
Frag *current = fragment->frag_list;
while (current != NULL)
{
free (current->seq);
fragment->frag_list = current->next; …Run Code Online (Sandbox Code Playgroud) 我们如何访问结构的变量?我有一个结构:
typedef struct {
unsigned short a;
unsigned shout b;
} Display;
Run Code Online (Sandbox Code Playgroud)
而在我的其他课程中,我有一个方法:
int NewMethod(Display **display)
{
Display *disp=new Display();
*display = disp;
disp->a=11;
}
Run Code Online (Sandbox Code Playgroud)
**显示是什么意思?要访问我使用->过的struct变量,还有其他方法吗?
.net ×2
c++ ×2
ado.net ×1
asp.net ×1
biginteger ×1
bignum ×1
c ×1
elisp ×1
finance ×1
free ×1
indirection ×1
java ×1
jquery ×1
parsing ×1
pointers ×1
polymorphism ×1
sql ×1
sql-server ×1
xsl-fo ×1
xslt ×1