Tag: sql

“EEE MMM dd HH:mm:ss ZZZ yyyy”日期格式为java.sql.Date

我正在尝试将EEE MMM dd HH:mm:ss ZZZ yyyy为YYYY-MM-DD格式,因此我可以将其插入MySQL数据库。 我没有收到任何错误,但插入我的数据库的日期是错误的,每行都是一样的… String date = Sat Mar 04 09:54:20 EET 2017; SimpleDateFormat formatnow = new SimpleDateFormat(“EEE MMM dd HH:mm:ss ZZZ yyyy”); SimpleDateFormat formatneeded=new SimpleDateFormat(“YYYY-MM-DD”); java.util.Date date1 = (java.util.Date)formatnow.parse(date); String date2 = formatneeded.format(date1); java.util.Date date3= (java.util.Date)formatneeded.parse(date2); java.sql.Date sqlDate = new java.sql.Date( date3.getTime() ); pst.setDate(1, sqlDate);

查询返回多个结果集

我有一个MSSQL数据库,并运行以下查询: select * from projects; select * from user 上面的查询一次返回两个结果集,我无法单独触发两个查询。 如何在Java类中同时处理结果集?

使用查询字符串在Android SQLiteDatabase中执行插入/更新/删除的正确方法是什么?

我一直在查看官方文档( http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html )以及与StackOverflowpost和实际观察到的行为的交叉引用,文档似乎是在几个方面误导并可能是错误的。 我正在尝试执行参数化查询以插入/更新/删除,就像使用rawQuery(String sql, String[] arguments). 我需要通过查询而不是在SQLiteDatabase类上使用insert / update / delete方法来执行此操作,因为在许多情况下,查询跨越多个表,并且在任何情况下我们都编写了一组我们用于此app的查询在我们所有的平台上(也为SQLite编写),最好按原样使用它。 这是我发现令人困惑/误导的内容: doc对rawQuery说,语句不能用分号终止,但它实际上似乎没有任何区别。 这对我很重要,因为我们有一个巨大的XML文档,里面填充了我在我的应用程序中跨多个平台使用的查询,如果可能的话,我更愿意保持相同。 rawQuery似乎不适用于插入(是的,我尝试过使用和不使用分号)。 该文件没有说明这一点。 我确实看到它返回一个Cursor,我想这可能是一个倾斜提示,它只适用于select,但不一定 – 它可以简单地返回零长度或null Cursor,当它们没有结果集时。 execSQL(String sql, Object[] bindArgs)明确表示它不适用于插入,但事实上确实如此! 此外,尽管execSQL(String, Object[])明确告诉您不要尝试CRUD操作,但它的无参数版本不包含此类警告,并且也可以正常工作(缺点是不允许SQL参数)。 所有这一切的结果是我能够找到成功执行带参数化参数的插入的唯一方法是使用文档明确指示您不要用于此目的的一种工作方法。 此外,对于插入/更新/删除而言,rawQuery不起作用真是一个让人失望,因为我们有一个通用的数据层,如果我们可以使用单个统一的API调用来运行我们所有的CRUD查询,它会更优雅。数据库。 那么这里发生了什么? 这份文件是否已经过时了? 是否可以使用execSql进行插入,更新等? 有没有人成功使用rawQuery进行插入? 附录: 针对OS运行:Android 4.3。 示例查询(什么工作,什么不工作) // Works db.execSql(“INSERT into MyTable (Col1, Col2) VALUES (?, ?)”, new String[] { “Foo”, “Bar” }); db.execSql(“INSERT into […]

如何使用Hibernate调用自定义数据库函数?

如果我要在数据库中定义一些函数(可能是Postgres,或任何其他数据库): create or replace function isValidCookie(ckie); 我会从SQL中将其称为: select * from cookietable c where isValidCookie(c.cookie); 如何从Hibernate调用这样的自定义函数?

MyBatis批量插入/更新Oracle

我最近开始学习使用myBatis。我现在面临这样的情况,我需要不断通过WebService获取一个新的Objects列表,然后对于这个列表,我需要通过oracle DB表插入/更新每个对象MyBatis的。 棘手的部分是,我不能简单地每次都进行批量插入,因为某些对象可能已经存在于DB中,对于这些记录,我需要更新它们的字段而不是新的插入。 我当前的解决方案可能非常愚蠢,使用Java,从webservice构建Object列表,循环遍历每个,执行myBatis选择,如果它不是null(已经存在于db中),则执行myBatis更新; 否则,为这个新对象执行myBatis插入。 function实现。 但我的技术负责人表示它效率非常低,因为使用Java进行for循环并逐个插入/更新将消耗大量系统资源。 他建议我通过传递一个对象列表来使用myBatis进行批量插入。 然而,myBatis中的批量插入很简单,因为我不是纯粹插入(对于我需要更新的现有记录),我不认为批量插入在这里是合适的。 我已经google了一段时间,并意识到我可能需要使用“merge”而不是“insert”(对于Oracle)。 我在myBatis中搜索合并的示例仅适用于一个对象,而不是批处理。 因此,我想知道专家是否可以提供一些关于如何在MyBatis中进行批量合并的例子(编写Mapper的正确方法)?

JDBC中缺少dll

我目前正在使用Java中的SQL。 最近我收到了这个错误: com.microsoft.sqlserver.jdbc.AuthenticationJNI WARNING: Failed to load the sqljdbc_auth.dll cause : no sqljdbc_auth in java.library.path 当我添加参数integratedSecurity=true;时会发生这种情况integratedSecurity=true; 在连接字符串中。 错误消息清楚地表明缺少sqljdbc_auth.dll,所以我尝试将dll放在与保留sqljdbc4.jar相同的路径中。 但是,这不起作用,所以我想知道我实际上如何将这个dll添加到我的构建路径? 有没有特殊的方法呢?

如何在Java中查询对象集合(Criteria / SQL-like)?

假设您拥有几百个内存中对象的集合,并且您需要查询此List以返回与某些SQL或条件匹配的对象(如查询)。 例如,您可能有一个汽车列表对象,并且您希望返回在20世纪60年代制造的所有汽车,其中车牌以AZ开头,按车型名称排序。 我知道JoSQL ,有没有人使用过它,或者有其他/本土解决方案的经验?

获取exceptionORA-00942:表或视图不存在 – 插入现有表时

在尝试将一批行插入现有表时,我遇到exception ORA-00942:表或视图不存在 我可以确认该表存在于db中,我可以使用oracle sql developer将数据插入该表。 但是当我尝试在java中使用preparedstatement插入行时,其抛出表不存在错误。 请在下面找到错误的堆栈跟踪 java.sql.SQLException: ORA-00942: table or view does not exist at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134) at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289) at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:573) at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1889) at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:1093) at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2047) at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1940) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout>>(OracleStatement.java:2709) at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:589) at quotecopy.DbConnection.insertIntoDestinationDb(DbConnection.java:591) at quotecopy.QuoteCopier.main(QuoteCopier.java:72) 任何人都可以提出这个错误的原因吗? 更新:问题已解决 我的数据库连接属性或我的表或视图名称没有问题。 问题的解决方案非常奇怪。 我尝试插入的其中一列是Clob类型。 因为我之前在oracle db中处理clob数据时遇到了很多麻烦,尝试用一个临时字符串setter替换clob setter并执行相同的代码,没有任何问题,所有行都被正确插入!!! 即。 peparedstatement.setClob(columnIndex,clob) 被替换为 peparedstatement.setString(columnIndex,“String”) 为什么错误表或视图确实存在错误导致插入clob数据时出错。 你能解释一下吗? 非常感谢您的回答和评论。

防止Java程序中的SQL注入攻击

我必须在我的java程序中添加一个语句来更新数据库表: String insert = “INSERT INTO customer(name,address,email) VALUES(‘” + name + “‘,'” + addre + “‘,'” + email + “‘);”; 我听说这可以通过SQL注入来利用,如: DROP TABLE customer; 我的程序有一个Java GUI,所有的名称,地址和电子邮件值都是从Jtextfields中检索的。 我想知道以下代码( DROP TABLE customer; )如何被黑客添加到我的插入语句中以及如何防止这种情况。