问题列表 - 第6987页

没有"身份"的最佳方式获取下一个ID号码

我必须在遗留数据库的表中插入一些记录,并且由于它被其他古代系统使用,因此更改表不是解决方案.

问题是目标表有一个int主键但没有标识规范.所以我必须找到下一个可用的ID并使用它:

select @id=ISNULL(max(recid)+1,1) from subscriber
Run Code Online (Sandbox Code Playgroud)

但是,我想阻止其他应用程序在我执行此操作时插入到表中,以便我们没有任何问题.我试过这个:

begin transaction
    declare @id as int
    select @id=ISNULL(max(recid)+1,1) from subscriber WITH (HOLDLOCK, TABLOCK)
    select @id
    WAITFOR DELAY '00:00:01'
    insert into subscriber (recid) values (@id)
commit transaction
select * from subscriber
Run Code Online (Sandbox Code Playgroud)

在SQL Management Studio中的两个不同的窗口中,一个事务总是作为死锁牺牲品被杀死.

我也先尝试过SET TRANSACTION ISOLATION LEVEL SERIALIZABLE相同的结果......

有什么好的建议,我怎么能确保我得到下一个id并使用它而不用担心其他人(或我!)被冲洗?

很抱歉没有提到这个,但这是一个SQL 2000服务器所以我不能使用像FOR UPDATE和OUTPUT这样的东西

更新:这是适合我的解决方案:

BEGIN TRANSACTION
    DECLARE @id int

    SELECT  @id=recid
    FROM    identities WITH (UPDLOCK, ROWLOCK)
    WHERE table_name = 'subscriber'

    waitfor delay '00:00:06'

    INSERT INTO subscriber (recid) values (@id)

    UPDATE identities …
Run Code Online (Sandbox Code Playgroud)

sql sql-server deadlock locking transactions

8
推荐指数
1
解决办法
2万
查看次数

如何检查LINQ to SQL连接错误

如何检查Linq.DataContext对象是否填充了数据并且没有出现连接错误?

谢谢.

.net connection error-handling linq-to-sql

9
推荐指数
1
解决办法
8033
查看次数

不能隐式地将类型'X'转换为'string' - 何时以及如何判断它"不能"?

现在我用Guids了.

我当然记得,在某些地方的代码中,这种隐式转换是有效的,而在其他地方却没有.直到现在我都没有看到这种模式.

编译器如何决定它何时不能?我的意思是,类型方法Guid.ToString()存在,不需要在需要这种转换时调用它吗?

有人可以告诉我在什么情况下这种转换是自动完成的,当我必须myInstance.ToString()明确调用时?

c# tostring type-conversion

16
推荐指数
1
解决办法
1万
查看次数

Delphi:在Variants数组中传递TObject

我有一个程序,需要一个TObject类型的参数,如下所示:

MyProcedure (const AValue : TObject);
Run Code Online (Sandbox Code Playgroud)

我有一个Variant数组,我正在循环调用该过程,如下所示:

  for i:=0 to High(myArray) do
    MyProcedure (myArray[i]);
Run Code Online (Sandbox Code Playgroud)

编译器给出错误说:"不兼容的类型:TObject和Variant".

我该怎么做才能解决这个问题?

更多信息:到目前为止,我一直在变量数组中传递简单类型(字符串,数字,日期)(数组通常是不同类型的混合 - 我最终将它们作为参数传递给数据库存储过程).现在我还需要(在某些情况下)传递一个TObject.

传递值的最合适的数据类型/结构是什么,它可以包含简单类型和对象?我想我可以创建自己的TParam类型,它有两个字段,但我不确定确切的语法.有人有这方面的例子吗?

delphi variant tobject

3
推荐指数
1
解决办法
5754
查看次数

Delphi Win32:加速动态创建的控件(父属性)

我们有几个框架的GUI,可动态构建其内容.每个框架都会创建面板,标签,编辑,组合框等,以用作输入字段.这非常有效,我们还计划让每个框架在不同的线程中构建其内容.

但是有一个大问题:它很慢!创建控件不需要花时间,但设置Parent属性似乎非常耗时.

我已经尝试了几种方法来加快这个过程,但没有运气.我尝试过Enabled = False,Visible = False,DisableAlign,LockWindowUpdate,WM_SETREDRAW ......但似乎没有任何事情影响设置控件的Parent的耗时过程.

即使我们使用线程,这也需要时间,因为必须在Synchronize中调用VCL函数.

有没有其他方法可以加快控件的创建和显示速度?

亲切的问候,马格努斯

编辑:没有数据感知组件或GUI中触发的任何事件.我只是创建控件并显示它们.使用计时器我已经确定控件父(AControl.Parent:= AOwner)的分配是耗时的部分.

编辑2:如下面的答案所示,速度问题不是设置父级而是绘制控件.当我测试时间时,容器是可见的并且设置父级导致立即绘制控件.

编辑3:动态GUI的另一个耗时部分是将项目分配给组合框.ComboBox.Items.Assign(DataItems),其中DataItems不超过三到六个项目.

谢谢大家抽出时间帮助我!

delphi user-interface dynamic

6
推荐指数
1
解决办法
4933
查看次数

如何使用NAMED内容创建WPF UserControl

我有一组带有附加命令和逻辑的控件,它们以相同的方式不断重用.我决定创建一个包含所有常用控件和逻辑的用户控件.

但是我还需要控件才能保存可以命名的内容.我尝试了以下方法:

<UserControl.ContentTemplate>
    <DataTemplate>
        <Button>a reused button</Button>
        <ContentPresenter Content="{TemplateBinding Content}"/>
        <Button>a reused button</Button>
    </DataTemplate>
</UserControl.ContentTemplate>
Run Code Online (Sandbox Code Playgroud)

但是,似乎无法命名放置在用户控件内的任何内容.例如,如果我以下列方式使用控件:

<lib:UserControl1>
     <Button Name="buttonName">content</Button>
</lib:UserControl1>
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

无法在元素"Button"上设置Name属性值"buttonName".'Button'属于元素'UserControl1'的范围,在另一个范围内定义时,已经注册了一个名称.

如果我删除buttonName,然后编译,但我需要能够命名内容.我怎样才能做到这一点?

c# wpf xaml user-controls controls

90
推荐指数
2
解决办法
4万
查看次数

有选择地为CakePHP中的某些操作启用SSL

我正在尝试为基于CakePHP的网站上的某些操作启用SSL.我正在使用requireSecure()并在相应的blackHoleCallback()中重定向到https:// url.

为了减少服务器负载,我想在用户完成需要SSL的操作后重定向回http:// whatever_url.

我该怎么做呢?

ssl https cakephp

6
推荐指数
1
解决办法
4137
查看次数

为什么这个pyd文件不能在某些计算机上导入?

我的python项目有一个C++组件,它在Python egg中作为.pyd文件进行编译和分发.我注意到它似乎与我们的一些全新的64位Windows服务器不兼容.我们有4台(据称)相同配置的机器 - 每台机器运行Windows 2003服务器64位版本,但其中2台机器不允许我调用鸡蛋中的功能.

经过一些实验,我能够找到一个产生可重现错误的配方.当Python尝试导入pyd文件时,似乎会出现此问题.

我将pyd复制到临时文件夹并从该位置运行Python.exe,顺便说一句,我们仍在使用32位版本的Python 2.4.4,因为我们的库都没有移植到64位架构.接下来我尝试导入我的模块(称为pyccalyon).我第一次尝试这个时收到一条错误消息:

"ImportError: DLL load failed: The specified module could not be found"
Run Code Online (Sandbox Code Playgroud)

下次我尝试这个时,python解释器崩溃了:没有堆栈跟踪!

当然你怀疑我的PYD - 关于这一点的奇怪之处在于它已经在数千台PC和10台其他服务器上使用,其中许多是相同规格的64位机器.该项目在开发和发布后都会不断进行测试,所以如果这个东西非常不稳定,我们很久以前就会知道它.这个组件被认为是稳定的代码,所以令人惊讶的是,它的突破性非常强大.

有什么建议我可以做什么来调试这个麻烦的库?在这一点上,疯狂的想法很受欢迎,因为我们已经用尽了所有明智的想法.

谢谢!

更新0:好的使用进程监视器我能够将一个失败的64位服务器与另一个运行良好的服务器进行比较.我发现破损似乎是由于缺少DLL,SysWOW64/mscoreee.dll而发生的 - 任何想法这个组件是什么以及我可以在哪里得到它?我可以将这个问题反馈给我们可以安装东西的IT配置人员.

python windows

10
推荐指数
1
解决办法
1万
查看次数

从Tomcat切换到Glassfish

为了响应错误传递页面的错误,我们正在考虑从Apache + Tomcat切换到Glassfish.这不是受到功能的启发,而是受到一种不会消失的故障的挫败感.

问题是:

  • 我们应该使用Glassfish与Apache合作,还是完全取代Apache?Apache和Tomcat之间的接口显然与我们看到的错误有关,我们最不需要的是再次出现同样的问题.另一方面,我们需要PHP,Apache已经设置好处理.

  • 我们应该使用Glassfish 2还是3?版本3似乎是一个完全重写,这里和其他地方的评论表明很多人都坚持2.

  • Apache和Glassfish在同一台服务器上的合作能力如何?例如,Apache可以简单地将ProxyPass所有域的所有请求转移到Glassfish(而不是现在正在执行的更具体的Tomcat代理).

  • 有没有更简单的方法?我讨厌无所事事地完成所有这些工作.

  • 这个问题是否属于serverfault.com?

apache tomcat glassfish

4
推荐指数
1
解决办法
3124
查看次数

您可以在log4net中过滤Logger级别吗?

我想过滤掉包含指定字符串的消息.我用过,log4net.Filter.StringMatchFilter但仅适用于appender.

我想在Logger级别上过滤该消息.这些方面的东西:

<logger name="MyLogger.WebServices">
    <level value="Debug" />
    <filter type="log4net.Filter.StringMatchFilter">
        <stringToMatch value="do not log me" />
        <acceptOnMatch value="false" />
    </filter>
    <appender-ref ref="file" />
    <appender-ref ref="debug" />
</logger>
Run Code Online (Sandbox Code Playgroud)

它真的有可能吗?或者有不同的方法来处理这种情况.

logging log4net filter

4
推荐指数
1
解决办法
2692
查看次数