如果我没记错的话,我认为Jeff在Stack Overflow播客中提到了SQL预处理语句中可能存在的弱点.我想知道他所指的是哪种弱点?它可能只是关于它的不当使用,还是更险恶的东西?
在我记忆中,播客没有更深入地探讨这个主题,它只是一句话.
我正在使用此处指定的格式解析RSS提要:http://www.feedparser.org/docs/date-parsing.html
日期元组(2009,3,23,13,6,34,0,82,0)
我有点难以理解如何将其转换为MySQL日期时间格式(Ymd H:M:S)?
在我们的应用程序中,一个实体必须由枚举表示:例如类型,类别,状态等等.
通常,代码中存在使用值来决定一个动作或另一个动作的条件或流程,因此必须以某种方式为应用程序"知道"值(即它必须能够引用特定实例)决定而不是引用整体的类).这就是我们使用枚举而不仅仅是常规类的原因.
问题是这些实体还需要作为其他实体的字段存储(或至少引用)在数据库中.我们通常为每个实体创建一个表,能够在这些列中进行参考完整性检查,并且数据在数据库中只具有"含义",而无需参考枚举来找出每个id的含义.
理想情况下,应该从枚举中的数据填充这些实体的数据,但是现在我们在db初始化脚本中重复了这些值.
当使用像Hibernate这样的ORM时,它会变得有点复杂.
我想知道其他人是如何处理这种情况的.
我对枚举和数据库表之间有重复的想法不太满意,但我还没有找到更好的解决方案.
我目前正在使用H2数据库启动一个新的Java应用程序,但是我对创建表的基本SQL使用感到困惑.如何使用唯一的,自动递增的,非空的整数主键创建条目表(字符串)?这是最基本的事情之一,但我不确定用H2做正确的方法是什么.
我责备这些因为我的困惑(指定了不同数据库之间做同样事情的不止一种方式;但是无法想出H2的正确方法):http: //www.w3schools.com/Sql/sql_primarykey.asp http ://www.w3schools.com/Sql/sql_autoincrement.asp
在Oracle 10i中,我运行以下命令:
ALTER TABLE jnrvwchnglst ADD
( jnrvwchnglst_userid NUMBER(10) NOT NULL DEFAULT 1 )
Run Code Online (Sandbox Code Playgroud)
是jnrvwchnglst现有表,jnrvwchnglst_userid不是现有列.
Oracle错误消息是:
ORA-00907: missing right parenthesis
Run Code Online (Sandbox Code Playgroud)
这个查询有什么问题,为什么Oracle认为我错过了一个括号?
我的SQL服务器数据库中有很长的SP(存储过程)和函数列表.我可以通过右键单击并将XXX脚本改为Alter To来逐个保存它们.有没有办法在TSQL中查询所有SP和函数将它们保存到xxx.sql文件?
例如,对于sp_mySP1,我想将其保存到sp_mySP1.sql,这是一个文本文件.数据库太大了,我想只保存SP和函数作为源代码的备份.
我有一个与数据库无关的Java程序,我需要知道,在插入时,如果由于重复键而抛出了SQLException.
如果我使用单个数据库驱动程序,我只会使用ErrorCode,但由于我可以使用非常不同的引擎,因此ErrorCode不一样.
有没有人这样做过?有任何想法吗?
很多TIA!
编辑:我有一个配置文件,我存储驱动程序类(即:org.apache.derby.jdbc.ClientDriver)和一些其他所需的信息(即:用户名,密码,网址...).连接总是作为"java.SQL.Connection"传递,所以我真的不关心使用什么驱动程序.
所以我有一个旧的数据库,我正在迁移到一个新的数据库.新的架构略有不同但大部分兼容.另外,我想从零重新编号所有表.
目前我一直在使用我编写的工具,手动检索旧记录,将其插入新数据库,并更新旧数据库中的v2 ID字段,以在新数据库中显示其对应的ID位置.
例如,我从MV5.Posts中选择并插入MV6.Posts.插入后,我在MV6.Posts中检索新行的ID,并在旧的MV5.Posts.MV6ID字段中更新它.
有没有办法通过INSERT INTO SELECT FROM执行此UPDATE所以我不必手动处理每个记录?我正在使用SQL Server 2005,dev版.
我们使用SQL Server 2005来跟踪相当数量的不断传入的数据(每秒5-15次更新).我们注意到它已经生产了几个月后,其中一个表开始花费大量的时间来查询.
该表有3列:
id - 自动编号(群集)typeUUID - 插入发生之前生成的GUID; 用于将类型组合在一起typeName - 类型名称(duh ......)我们运行的查询之一是该typeName领域的一个独特的:
SELECT DISTINCT [typeName] FROM [types] WITH (nolock);
Run Code Online (Sandbox Code Playgroud)
该typeName字段上有一个非clusted,非唯一的升序索引.该表目前包含大约200M条记录.当我们运行此查询时,查询需要5米58秒才能返回!或许我们不理解的指标是如何工作的.但我不认为我们错误地理解它们是多少.
为了进一步测试,我们运行了以下查询:
SELECT DISTINCT [typeName] FROM (SELECT TOP 1000000 [typeName] FROM [types] WITH (nolock)) AS [subtbl]
Run Code Online (Sandbox Code Playgroud)
这个查询在大约10秒内返回,正如我所料,它正在扫描表格.
我们在这里缺少什么?为什么第一个查询需要这么长时间?
编辑:啊,我的道歉,第一个查询返回76条记录,谢谢你ninesided.
跟进:谢谢大家的回答,现在对我来说更有意义(我不知道为什么之前没有......).没有索引,它正在对200M行进行表扫描,带有索引,它正在对200M行进行索引扫描......
SQL Server确实更喜欢索引,它确实提供了一点性能提升,但没什么好兴奋的.重建索引确实将查询时间缩短到超过3米而不是6米,这是一项改进,但还不够.我只是向老板推荐我们规范表格结构.
再一次,谢谢大家的帮助!!