我正在使用JDBC和HSQLDB 2.2.9.将新行插入数据库并随后保留其id(PK设置为自动增量)值的最有效和准确的方法是什么?我需要这样做的原因可能非常明显,但我将举例说明:
假设有一个Customer表有一个PersonIdFK约束的字段引用Person表中的一行.我想创建一个新的Customer,但要做到这一点,我需要先创建一个新的Person并使用新Person.id值来设置Customer.PersonId.
我已经看到了四种方法:
插入Person设置id字段的行null.HSQLDB id自动生成下一个值.然后对Person表执行查询以获取id刚刚创建的值并使用它来创建新Customer行.
这对于检索单个整数值来说似乎很昂贵.
获取表中的下一个id值Person并在INSERT语句中使用它来Person.id手动设置值.使用相同的id值进行设置Customer.PersonId.不需要随后从DB读取.
如果id获得了值,则可能会出现不一致,但INSERT在INSERT INTO Person...执行语句之前,另一个连接会在表中执行.
执行INSERT语句,如上面的选项1所示,设置id=null为允许自动生成.然后使用该getGeneratedKeys方法检索在最后一个语句中生成的密钥.
我认为这听起来像个不错的选择,但我无法让它发挥作用.这是我的代码片段:
// PreparedStatement prepared previously...
preparedStatement.executeUpdate();
ResultSet genKeys = preparedStatement.getGeneratedKeys();
int id;
if (genKeys.next()) { …Run Code Online (Sandbox Code Playgroud)我是PHP,DOM和PHP DOM实现的新手.我正在试图做的是保存的根元素DOMDocument的$_SESSION变量,这样我可以访问它,修改它在随后的页面加载.
但是当我$_SESSION用来保存DOMElement的状态时,我在PHP中遇到错误:
警告:DOMNode :: appendChild()[domnode.appendchild]:无法获取DOMElement
我已经读过PHP DOMDocument对象无法原生保存$_SESSION.但是,可以通过保存DOMDocument的序列化来保存它(例如$_SESSION['dom'] = $dom->saveXML()).
我不知道是否同样适用DOMElement于将$_SESSION变量保存到变量,但这就是我所尝试的.我想要这样做的原因是使用带有一个附加属性的扩展类DOMElement.我希望通过在$ _SESSION中保存根DOMElement,我可以在以后检索元素并修改这个附加属性并执行测试,如果(additionalProperty === false){做某事; }.我还读到通过保存DOMDocument并稍后检索它,所有元素都作为来自本机DOM类的对象返回.也就是说,即使我使用扩展类来创建元素,我随后需要的属性也是不可访问的,因为保存对扩展类对象的引用的变量已超出范围 - 这就是为什么我'我正在尝试这件事.我首先尝试使用扩展类(不包括在下面),但是出现了错误......所以我恢复使用DOMElement对象来查看是否存在问题,但我仍然遇到相同的错误.这是代码:
<?php
session_start();
$rootTag = 'root';
$doc = new DOMDocument;
if (!isset($_SESSION[$rootTag])) {
$_SESSION[$rootTag] = new DOMElement($rootTag);
}
$root = $doc->appendChild($_SESSION[$rootTag]);
//$root = $doc->appendChild($doc->importNode($_SESSION[$rootTag], true));
$child = new DOMElement('child_element');
$n = $root->appendChild($child);
$ct = 0;
foreach ($root->childNodes as $ch) echo '<br/>'.$ch->tagName.' '.++$ct;
$_SESSION[$rootTag] = $doc->documentElement;
?>
Run Code Online (Sandbox Code Playgroud)
此代码提供以下错误(取决于我是直接使用appendChild还是使用importNode使用注释的代码行):
Warning: DOMNode::appendChild() [domnode.appendchild]: …
我正在关注Pluralsight ASP.NET MVC 3 教程,模块7 - 安全性(顺便说一下,这是一个很棒的教程).在授权部分,在6:24标记处,它显示了如何将项目属性设置SSL Enabled为true.我的问题是,当我进入项目属性时,我没有那个选项.我只看到Always Start When Debugging,Project File和Project Folder.有谁知道为什么我没有选项SSL Enabled,我怎么能让它出现,或者以不同的方式我可以达到相同的结果?我正在使用Visual Studio 2010 SP1Rel.
在其他阅读中,我requireSSL="true"在authentication标签下看到了Web.config文件中的设置.这与SSL Enabled = true项目属性下的设置是否相同?如果没有,任何人都可以简单解释一下这个差异,还是指出一篇好文章?谢谢.
当我遇到这个问题/答案时,我正在考虑在我的网络应用程序中使用显式页面导航规则,摘录如下:
...由于新的"隐式导航"功能,导航规则已经过时,因为JSF 2.0.
但是,我已经浏览了大部分的CoreServlets JSF 2.0教程,并且它有一个专门用于显式页面导航的部分,并且它对它有利.要么这违背了上述建议,要么我误解了一些东西.
我不想以过时的方式创建新的Web应用程序.谁能摆脱任何光明?
我有一个简单的表单,发布到一个HttpPost动作方法,返回其相应的视图.我的问题是我收到了404 Not Found错误.奇怪的是,如果我将action方法和action方法的属性更改为a GET,那么它就可以工作并显示TestMethod视图.
似乎我错过了使用的东西POST,但我在其他控制器中的帖子工作正常(例如帐户登录和注册).请注意,该AllowAnonymous属性是一个自定义属性,可以指定允许匿名访问的控制器或操作,而不是指定(通过Authorizeattr)需要授权的控制器或操作.我想没有什么是不可能的,但我认为这与我的问题没有任何关系.什么错误的想法?
形成:
@using (Html.BeginForm("TestMethod", "Test", FormMethod.Post, new { @id = "testForm" })) {
<fieldset>
<legend>Test Form</legend>
<input type="submit" value="Submit" />
</fieldset>
}
Run Code Online (Sandbox Code Playgroud)
控制器行动:
[AllowAnonymous]
[HttpPost]
public ActionResult TestMethod() {
return View();
}
Run Code Online (Sandbox Code Playgroud)
视图:
<h2>TestMethod</h2>
<p>HttpPost method was successful.</p>
Run Code Online (Sandbox Code Playgroud)
从Global.asax.cs注册路由方法:
public static void RegisterRoutes(RouteCollection routes) {
routes.IgnoreRoute("favicon.ico");
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
// About
routes.MapRoute(
"About", // Route name
"about", // URL with parameters
new { controller = "Home", action …Run Code Online (Sandbox Code Playgroud) 我正在JSF 2中编写验证器方法.ui:repeat我的页面中有一个元素,用于呈现项目列表.每个项目都有一个日期属性,我需要确保日期按特定顺序相互对应,例如列表中最后一个项目的日期不在第一个项目的日期之前.我试图获取ui中的所有子元素:重复并迭代它们进行比较,但我真的不知道从哪里开始.我已经看过如何通过ID获取特定元素:
UIInput input = (UIInput) context.getViewRoot().findComponent(elementId);
Run Code Online (Sandbox Code Playgroud)
但是,在ui:repeatJSF中ID值是唯一的,所以我不知道它们在编译时是什么.此外,在编译时我不知道列表中将有多少项.
我已经看过Javadoc for UIViewRoot和其他相关的类,并且已经尝试了几件事,但是我遇到了错误,事情没有用,而且我真的不知道我是否已经接近任何地方了.我将离开这篇文章的代码留下来,因为他们可能是个笑话.
在SO中有一些与"OutOfMemoryError:Java Heap"错误相关的问题,但是阅读它们,大多数人似乎都在讨论如何增加堆大小或分析应用程序以及检测内存泄漏.
我正在研究一个项目,它可以分析分支和绑定算法的成本.对于输入小输入大小,搜索的潜在解决方案数量在O(n!)处增长.在某个输入大小n时,我遇到了"OutOfMemoryError",因为parial解决方案保留在优先级队列中直到准备好被处理,并且队列中的大量部分解决方案填满了内存.所以,我知道我没有内存泄漏,我不一定想增加堆大小.
我想做的只是检测内存几乎已满,然后给用户一条消息,告诉他们发生了什么以及程序退出的原因(此时程序没有必要继续运行).有没有办法做到这一点?我看过这个java.lang.management包,但它对我来说没有多大意义,而且我很难找到合适的示例代码.任何解释或示例代码表示赞赏.
我试图ON DELETE CASCADE在MS Access 2007中使用FK约束,但我在表定义上遇到错误:
SQL错误:CONSTRAINT子句中的语法错误.
这是创建表的代码:
CREATE TABLE Area (
Id AUTOINCREMENT PRIMARY KEY,
AreaType__Id int NOT NULL,
Tbl1 text(31) NOT NULL,
Tbl2__Id int NOT NULL,
CONSTRAINT UK_Area_1 UNIQUE (Tbl1, Container__Id),
CONSTRAINT FK_Area_1 FOREIGN KEY (AreaType__Id) REFERENCES AreaType (Id),
CONSTRAINT FK_Area_2 FOREIGN KEY (Tbl2__Id) REFERENCES Tbl2 (Id) ON UPDATE CASCADE ON DELETE CASCADE
);
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我查看了Access帮助,我的语法似乎正确.我已经尝试删除该ON UPDATE CASCADE部分,但得到了同样的错误.我也尝试使用默认的PK字段作为引用的表(REFERENCES Container而不是REFERENCES Container (Id)),但同样出现了相同的错误.我也搜索了SO,但没有找到有用的信息我的情况.它必须是简单的东西,但我现在还没有看到它.
编辑
值得一提的是,表定义完全正常,除非没有该ON UPDATE CASCADE ON DELETE CASCADE部分.只有在添加CASCADE部件后才会出现错误. …
假设我有一个对象数组:
$a = @(
@{ Name = "A"; Value = "2016-01-02" },
@{ Name = "B"; Value = "2016-01-03" },
@{ Name = "C"; Value = "2016-01-04" }
)
Run Code Online (Sandbox Code Playgroud)
该Value物业目前为String. 我想将Value每个对象的属性转换为DateTime. 我可以用一个for循环来完成这个,但我想知道是否有更直接的方法来做到这一点。
在 Excel 2007 中,我有一个带有水平线(数据系列)的图表,类似于本页显示的内容。但是,正如您所注意到的,该线在数据点的中间开始和结束。因此,如果同一图表上有多个柱,水平线将不会延伸以覆盖整个第一个和最后一个柱。如何延长水平线以接触图表左侧和右侧的边缘?
我尝试在具有零值(对于条形图)的数据系列的开头和结尾处放入“虚拟”点。这看起来不错,但 x 轴编号从 0 开始,到比我最后一个实际数据点多 1 结束,这在我的情况下是不可接受的。
哦,我正在 VBA 中创建图表,所以我需要一个 VBA 解决方案(可能与手动解决方案相同,只是编码)。谢谢。
这是我的代码(下面的问题):
视图
// This function is called by another function when radioButtonGroup.change().
var requestValues = function (form) {
var option = form.find("input:radio:checked").attr("value");
// This seemingly shows the correct url for the action method desired.
alert("Form Action: " + form[0].action + "\nForm Method: " + form[0].method);
if (form.valid()) {
$.ajax({
url: form[0].action,
type: form[0].method,
data: option,
success: function (result) {
alert("Had success.");
$('#createForm').replaceWith(result);
},
error: function (xhr) {
alert("An error occurred: " + xhr.status + " " + xhr.statusText);
}
}); …Run Code Online (Sandbox Code Playgroud) asp.net-mvc jquery asp.net-ajax http-status-code-404 asp.net-mvc-3
asp.net-mvc ×2
java ×2
asp.net-ajax ×1
charts ×1
constraints ×1
dom ×1
excel ×1
heap-memory ×1
hsqldb ×1
jdbc ×1
jquery ×1
jsf ×1
jsf-2 ×1
ms-access ×1
php ×1
post ×1
powershell ×1
razor ×1
security ×1
session ×1
ssl ×1
uirepeat ×1
validation ×1
vba ×1