我在几年内没有真正完成大量的数据库工作,并且已经不熟悉可用的工具.回到几年前,我正在使用oracle数据库,并且主要使用带有一点MS Access的TOAD作为我选择的工具来原型化我在我的应用程序中使用的查询.我真的很喜欢TOAD,因为它非常直观,而且非常易于使用,我希望能找到类似于MS SQL Server的东西.开源或免费的东西是可取的,因为我怀疑我的客户会想要支付任何费用,但我愿意听到如果他们是最好的一流工具可以花钱的建议.
我有一个java程序,它对sql server数据库运行一堆查询.第一个是对视图进行查询,返回大约750k条记录.我可以通过sql server management studio运行查询,并在大约30秒内得到结果.但是,我昨晚启动了该计划.当我今天早上检查它时,这个查询仍然没有将结果返回到java程序,大约15个小时后.
我可以访问数据库来执行我想要的任何操作,但我真的不确定如何开始调试它.应该怎么做才能找出造成这种情况的原因?我不是一个dba,并且我对sql server工具集并不熟悉,所以你可以给我更多关于如何做你可能建议的细节,我将不胜感激.
继承人的代码
stmt = connection.createStatement();
clientFeedRS = stmt.executeQuery(StringBuffer.toString());
Run Code Online (Sandbox Code Playgroud)
EDIT1:
好吧已经有一段时间了,而且这种情况有所不同,但这个问题又回来了.我考虑从jdbc驱动程序v 1.2升级到2.0,但是我们仍然坚持使用jdk 1.4,而v 2.0需要jdk 1.5,所以这是一个非首发.现在我正在查看我的连接字符串属性.我看到2可能有用.
SelectMethod=cursor|direct
responseBuffering=adaptive|full
Run Code Online (Sandbox Code Playgroud)
目前,由于延迟问题,我使用cursor作为selectMethod运行,并且responseBuffering的默认值已满.改变这些属性可能会有所帮助吗?如果是这样,那么理想的设置是什么?我在想,根据我在网上找到的内容,使用直接选择方法和自适应响应缓冲可能会解决我的问题.有什么想法吗?
EDIT2:
我是否结束了这两个连接字符串参数的更改,使用默认的select方法(直接)并将responseBuffering指定为自适应.这最终对我来说是最好的,并减轻了我看到的延迟问题.感谢所有的帮助.
考虑以下2个查询:
select tblA.a,tblA.b,tblA.c,tblA.d
from tblA
where tblA.a not in (select tblB.a from tblB)
select tblA.a,tblA.b,tblA.c,tblA.d
from tblA left outer join tblB
on tblA.a = tblB.a where tblB.a is null
Run Code Online (Sandbox Code Playgroud)
哪个会表现更好?我的假设是,一般情况下,连接会更好,除非子选择返回非常小的结果集.
我一直在尝试实现单元测试,目前有一些代码可以执行以下操作:
我的单元测试策略是这样的:
我有一个测试数据库,我可以随意操作.
显然,我将数据集加载到源数据库设置中,这样我就知道应该添加,删除,更新某些记录等.
看起来这有点麻烦,应该有一个更简单的方法吗?有什么建议?
在C#中,如果你想要字面意思地使用String,即忽略转义字符,你可以使用:
string myString = @"sadasd/asdaljsdl";
Run Code Online (Sandbox Code Playgroud)
但是Java中没有相应的东西.有没有什么理由Java没有包含类似的东西?
编辑:
在回顾了一些答案并思考之后,我真正要问的是:
是否有任何令人信服的论据反对在Java中添加这种语法?一些消极的,我只是没有看到?
我是一个python newb,并且无法解决嵌套列表推导问题.我正在尝试编写一些代码来读取文件,并为每一行的每个字符构建一个列表.
所以如果文件包含
xxxcd
cdcdjkhjasld
asdasdxasda
Run Code Online (Sandbox Code Playgroud)
结果列表将是:
[
['x','x','x','c','d']
['c','d','c','d','j','k','h' ,'j','a','s','l','d']
['a','s','d','a','s','d','x', 'a','s','d','a']
]
我已经编写了以下代码,并且它可以工作,但我有一种唠叨的感觉,我应该能够用更少的代码行编写嵌套列表理解.任何建议,将不胜感激.
data = []
f = open(file,'r')
for line in f:
line = line.strip().upper()
list = []
for c in line:
list.append(c)
data.append(list)
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种方法来重新解释byte []类型的数组作为一个不同的类型,比如short [].在C++中,这可以通过简单的转换实现,但在C#中,我没有找到实现这一目的的方法,而不需要复制整个缓冲区.
有任何想法吗?
我有一种感觉,我在这里做错了,但我不太确定我是否错过了一步,或者只是遇到了编码问题.这是我的代码:
URL url = new URL("http://api.stackoverflow.com/0.8/questions/2886661");
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
// Question q = new Gson().fromJson(in, Question.class);
String line;
StringBuffer content = new StringBuffer();
while ((line = in.readLine()) != null)
{
content.append(line);
}
Run Code Online (Sandbox Code Playgroud)
当我打印内容时,我得到了一大堆的翅膀和特殊的角色,基本上是乱七八糟的.我会在这里复制并通过它,但这不起作用.我究竟做错了什么?
我需要能够通过程序循环我的linksys路由器,我想这样做的原因很复杂,所以让我们假设没有更好的选择.
反正有没有这样做?我认为是因为当我通过管理控制台向路由器安装固件更新时,它会循环路由器.
目前我有jdbc代码与以下基本结构:
得到连接
(多次执行接下来的4行,从不关闭语句)
get语句
获取结果集
处理结果集
关闭结果集
密切联系
写完这段代码之后,我想要关闭语句.
1不关闭声明会产生什么影响.
2将以下工作,这个si会关闭语句阻止我处理结果集正常吗?
得到连接
(多次执行接下来的5行)
get语句
get result set
close语句
处理结果集
close结果集
密切联系