Tag: jdbc

如何用Spring的JDBCTemplate有效地执行IN()SQL查询?

我想知道是否有一个更优雅的方式来使用Spring的JDBCTemplate进行IN()查询。 目前我做这样的事情: StringBuilder jobTypeInClauseBuilder = new StringBuilder(); for(int i = 0; i < jobTypes.length; i++) { Type jobType = jobTypes[i]; if(i != 0) { jobTypeInClauseBuilder.append(','); } jobTypeInClauseBuilder.append(jobType.convert()); } 这是非常痛苦的,因为如果我有九条线只是为IN()查询构build子句。 我想有像预先准备的语句的参数replace的东西

使用JDBC从存储过程中获取Oracle表types

我想了解使用JDBC从Oracle存储过程/函数获取表数据的不同方法。 六种方式是以下几种: 过程返回模式级别的表types作为OUT参数 过程返回一个包级表types作为OUT参数 过程返回一个包级光标types作为OUT参数 函数返回一个模式级别的表types 函数返回一个包级表types 函数返回一个包级光标types 这里是PL / SQL中的一些例子: — schema-level table type CREATE TYPE t_type AS OBJECT (val VARCHAR(4)); CREATE TYPE t_table AS TABLE OF t_type; CREATE OR REPLACE PACKAGE t_package AS — package level table type TYPE t_table IS TABLE OF some_table%rowtype; — package level cursor type TYPE t_cursor IS REF […]

什么是MySQL JDBC驱动程序连接string?

我是新来的JDBC,我想连接到一个MySQL数据库。 我正在使用连接器/ J驱动程序,但我不能find我的Class.forName()方法的JDBC连接string。

获取java.sql.SQLException:ResultSetclosures后不允许操作

当我执行下面的代码时,我得到一个exception。 我认为这是因为我正在准备与他相同的连接对象的新声明。 我应该如何重写这个,以便我可以创build一个准备好的声明,并得到使用rs2? 即使连接到同一个数据库,我是否也必须创build一个新的连接对象? try { //Get some stuff String name = ""; String sql = "SELECT `name` FROM `user` WHERE `id` = " + userId + " LIMIT 1;"; ResultSet rs = statement.executeQuery(sql); if(rs.next()) { name = rs.getString("name"); } String sql2 = "SELECT `id` FROM `profiles` WHERE `id` =" + profId + ";"; ResultSet […]

不能用executeQuery()发出数据操作语句

在MySQL中,我有两个表, tableA和tableB 。 我试图执行两个查询: executeQuery(query1) executeQuery(query2) 但是我得到以下错误: can not issue data manipulation statements with executeQuery(). 这是什么意思?

如何连接SQLite与Java?

我正在使用一个简单的代码从Java应用程序访问SQLite数据库。 我的代码是 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class ConnectSQLite { public static void main(String[] args) { Connection connection = null; ResultSet resultSet = null; Statement statement = null; try { Class.forName("org.sqlite.JDBC"); connection = DriverManager.getConnection("jdbc:sqlite:D:\\testdb.db"); statement = connection.createStatement(); resultSet = statement .executeQuery("SELECT EMPNAME FROM EMPLOYEEDETAILS"); while (resultSet.next()) { System.out.println("EMPLOYEE NAME:" + resultSet.getString("EMPNAME")); […]

使用JDBC从Android连接到MySQL

我使用下面的代码从Android连接localhost MySQL 。 它只显示catch部分给出的动作。 我不知道这是否是连接问题。 package com.test1; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class Test1Activity extends Activity { /** Called when the activity is first created. */ String str="new"; static ResultSet rs; static PreparedStatement st; static Connection con; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); […]

SQL Server JDBC驱动程序中的Statement.setFetchSize(nSize)方法实际上做了什么?

我有这样一张真正的大桌子,每天有数百万条logging,每天结束的时候我都会提取前一天的所有logging。 我这样做是这样的: String SQL = "select col1, col2, coln from mytable where timecol = yesterday"; Statement.executeQuery(SQL); 问题是这个程序需要2GB的内存,因为它将所有的结果存储在内存中,然后处理它。 我尝试设置Statement.setFetchSize(10)但它从操作系统采用完全相同的内存,它没有任何区别。 我正在使用Microsoft SQL Server 2005 JDBC驱动程序 。 有没有什么办法像Oracle数据库驱动程序那样在小块中读取结果,当查询被执行时只显示几行,当你向下滚动显示更多的结果?

我的无效字符(ORA-00911)在哪里?

我试图将CLOB插入到数据库中(请参阅相关问题 )。 我无法弄清楚什么是错的。 我有一个约85个clob我想插入表中的列表。 即使只插入第一个clob我得到ORA-00911: invalid character 。 我无法弄清楚如何在PreparedStatement之前将语句从执行前的语句中提取出来,所以我不能100%确定它是正确的,但是如果我把它正确的话,应该看起来像这样: insert all into domo_queries values ('select substr(to_char(max_data),1,4) as year, substr(to_char(max_data),5,6) as month, max_data from dss_fin_user.acq_dashboard_src_load_success where source = ''CHQ PeopleSoft FS''') select * from dual; 最终,这个insert all语句将有很多的,这就是为什么我只是不做一个定期的insert语句。 我在那里看不到一个无效的angular色,是吗? (哦,上面的代码运行良好,当我在我的sql开发工具中运行它 。)而我如果我删除PreparedStatement的分号,它会抛出一个ORA-00933: SQL command not properly ended错误。 在任何情况下,这里是我执行查询的代码(以及上面例子中variables的值)。 public ResultSet executeQuery(String connection, String query, QueryParameter… params) throws DataException, […]

ResultSetexception – 在结果集开始之前

我无法从ResultSet对象获取数据。 这是我的代码: String sql = "SELECT type FROM node WHERE nid = ?"; PreparedStatement prep = conn.prepareStatement(sql); int meetNID = Integer.parseInt(node.get(BoutField.field_meet_nid)); prep.setInt(1, meetNID); ResultSet result = prep.executeQuery(); result.beforeFirst(); String foundType = result.getString(1); if (! foundType.equals("meet")) { throw new IllegalArgumentException(String.format("Node %d must be of type 'meet', but was %s", meetNID, foundType)); } 错误跟踪: Exception in thread […]