- 浏览: 259936 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
no_studio:
期待实现SqlServer
发布异种数据库导入工具jmyetl-1.0.2 -
babydeed:
不错 再接再厉
发布异种数据库导入工具jmyetl-1.0.2 -
iihero:
niwtsew 写道贴个俺自己写的linux下的版本,其实没必 ...
命令行快速找出class文件所在的jar包 -
niwtsew:
说错,是strings不是string
命令行快速找出class文件所在的jar包 -
niwtsew:
贴个俺自己写的linux下的版本,其实没必要用7z,直接jar ...
命令行快速找出class文件所在的jar包
参数标记的概述
对于需要执行多次的 SQL 语句,通常准备 SQL 语句一次并通过在运行时期间使用参数标记来替换输入值以重复使用查询方案比较好。
在 DB2 Everyplace 中,参数标记由“?”字符表示并指示在 SQL 语句中的何处替换应用程序变量。参数标记将按编号引用,且它们是从左至右连续编号的(从 1 开始)。在执行 SQL 语句之前,应用程序必须将变量存储区绑定至在 SQL 语句中指定的每个参数标记。此外,绑定变量必须是有效的存储区且在对数据库执行准备语句时必须包含输入数据值。
以下示例演示包含两个参数标记的 SQL 语句。
SELECT * FROM customers WHERE custid = ? AND lastname = ?
参数标记使用的示例
DB2 Everyplace 提供一组丰富的标准接口(包括 CLI/ODBC、JDBC 和 ADO.NET)以有效地存取数据。以下示例代码片段显示将带有参数标记的准备语句用于每个数据存取 API 的情况。
考虑表 t1 的以下表模式,其中列 c1 是表 t1 的主键。
c1 | INTEGER | false |
c2 | SMALLINT | true |
c3 | CHAR(20) | true |
c4 | VARCHAR(20) | true |
c5 | DECIMAL(8,2) | true |
c6 | DATE | true |
c7 | TIME | true |
c8 | TIMESTAMP | true |
c9 | BLOB(30) | true |
以下示例演示如何使用准备语句将一行插入表 t1 中。
void parameterExample1(void) { SQLHENV henv; SQLHDBC hdbc; SQLHSTMT hstmt; SQLRETURN rc; TCHAR server[] = _T("C:\\mysample\\"); TCHAR uid[] = _T("db2e"); TCHAR pwd[] = _T("db2e"); long p1 = 10; short p2 = 100; TCHAR p3[100]; TCHAR p4[100]; TCHAR p5[100]; TCHAR p6[100]; TCHAR p7[100]; TCHAR p8[100]; char p9[100]; long len = 0; _tcscpy(p3, _T("data1")); _tcscpy(p4, _T("data2")); _tcscpy(p5, _T("10.12")); _tcscpy(p6, _T("2003-06-30")); _tcscpy(p7, _T("12:12:12")); _tcscpy(p8, _T("2003-06-30-17.54.27.710000")); memset(p9, 0, sizeof(p9)); p9[0] = 'X'; p9[1] = 'Y'; p9[2] = 'Z'; rc = SQLAllocEnv(&henv); // check return code ... rc = SQLAllocConnect(henv, &hdbc); // check return code ... rc = SQLConnect(hdbc, (SQLTCHAR*)server, SQL_NTS, (SQLTCHAR*)uid, SQL_NTS, (SQLTCHAR*)pwd, SQL_NTS); // check return code ... rc = SQLAllocStmt(hdbc, &hstmt); // check return code ... // prepare the statement rc = SQLPrepare(hstmt, _T("INSERT INTO t1 VALUES (?,?,?,?,?,?,?,?,?)"), SQL_NTS); // check return code ... // bind input parameters rc = SQLBindParameter(hstmt, (unsigned short)1, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 4, 0, &p1, sizeof(p1), &len); // check return code ... rc = SQLBindParameter(hstmt, (unsigned short)2, SQL_PARAM_INPUT, SQL_C_LONG, SQL_SMALLINT, 2, 0, &p2, sizeof(p2), &len); // check return code ... len = SQL_NTS; rc = SQLBindParameter(hstmt, (unsigned short)3, SQL_PARAM_INPUT, SQL_C_TCHAR, SQL_CHAR, 0, 0, &p3[0], 100, &len); // check return code ... rc = SQLBindParameter(hstmt, (unsigned short)4, SQL_PARAM_INPUT, SQL_C_TCHAR, SQL_VARCHAR, 0, 0, &p4[0], 100, &len); // check return code ... rc = SQLBindParameter(hstmt, (unsigned short)5, SQL_PARAM_INPUT, SQL_C_TCHAR, SQL_DECIMAL, 8, 2, &p5[0], 100, &len); // check return code ... rc = SQLBindParameter(hstmt, (unsigned short)6, SQL_PARAM_INPUT, SQL_C_TCHAR, SQL_TYPE_DATE, 0, 0, &p6[0], 100, &len); // check return code ... rc = SQLBindParameter(hstmt, (unsigned short)7, SQL_PARAM_INPUT, SQL_C_TCHAR, SQL_TYPE_TIME, 0, 0, &p7[0], 100, &len); // check return code ... rc = SQLBindParameter(hstmt, (unsigned short)8, SQL_PARAM_INPUT, SQL_C_TCHAR, SQL_TYPE_TIMESTAMP, 0, 0, &p8[0], 100, &len); // check return code ... len = 3; rc = SQLBindParameter(hstmt, (unsigned short)9, SQL_PARAM_INPUT, SQL_C_BINARY, SQL_BINARY, 0, 0, &p9[0], 100, &len); // check return code ... // execute the prepared statement rc = SQLExecute(hstmt); // check return code ... rc = SQLFreeStmt(hstmt, SQL_DROP); // check return code ... rc = SQLDisconnect(hdbc); // check return code ... rc = SQLFreeConnect(hdbc); // check return code ... rc = SQLFreeEnv(henv); // check return code ... }
public static void parameterExample1() { String driver = "com.ibm.db2e.jdbc.DB2eDriver"; String url = "jdbc:db2e:mysample"; Connection conn = null; PreparedStatement pstmt = null; try { Class.forName(driver); conn = DriverManager.getConnection(url); // prepare the statement pstmt = conn.prepareStatement("INSERT INTO t1 VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"); // bind the input parameters pstmt.setInt(1, 1); pstmt.setShort(2, (short)2); pstmt.setString(3, "data1"); pstmt.setString(4, "data2"); pstmt.setBigDecimal(5, new java.math.BigDecimal("12.34")); pstmt.setDate(6, new java.sql.Date(System.currentTimeMillis() ) ); pstmt.setTime(7, new java.sql.Time(System.currentTimeMillis() ) ); pstmt.setTimestamp (8, new java.sql.Timestamp(System.currentTimeMillis() ) ); pstmt.setBytes(9, new byte[] { (byte)'X', (byte)'Y', (byte)'Z' } ); // execute the statement pstmt.execute(); pstmt.close(); conn.close(); } catch (SQLException sqlEx) { while(sqlEx !=null) { System.out.println("SQLERROR:\n"+sqlEx.getErrorCode()+ ",SQLState:"+sqlEx.getSQLState()+ ",Message:"+sqlEx.getMessage()+ ",Vendor:"+sqlEx.getErrorCode()); sqlEx =sqlEx.getNextException(); } } catch (Exception ex) { ex.printStackTrace(); } }
[C#]
public static void ParameterExample1() { DB2eConnection conn = null; DB2eCommand cmd = null; String connString = @"database=.\; uid=db2e; pwd=db2e"; int i = 1; try { conn = new DB2eConnection(connString); conn.Open(); cmd = new DB2eCommand("INSERT INTO t1 VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", conn); // prepare the command cmd.Prepare(); // bind the input parameters DB2eParameter p1 = new DB2eParameter("@p1", DB2eType.Integer); p1.Value = ++i; cmd.Parameters.Add(p1); DB2eParameter p2 = new DB2eParameter("@p2", DB2eType.SmallInt); p2.Value = 100; cmd.Parameters.Add(p2); DB2eParameter p3 = new DB2eParameter("@p3", DB2eType.Char); p3.Value = "data1"; cmd.Parameters.Add(p3); DB2eParameter p4 = new DB2eParameter("@p4", DB2eType.VarChar); p4.Value = "data2"; cmd.Parameters.Add(p4); DB2eParameter p5 = new DB2eParameter("@p5", DB2eType.Decimal); p5.Value = 20.25; cmd.Parameters.Add(p5); DB2eParameter p6 = new DB2eParameter("@p6", DB2eType.Date); p6.Value = DateTime.Now; cmd.Parameters.Add(p6); DB2eParameter p7 = new DB2eParameter("@p7", DB2eType.Time); p7.Value = new TimeSpan(23, 23, 23); cmd.Parameters.Add(p7); DB2eParameter p8 = new DB2eParameter("@p8", DB2eType.Timestamp); p8.Value = DateTime.Now; cmd.Parameters.Add(p8); byte []barr = new byte[3]; barr[0] = (byte)'X'; barr[1] = (byte)'Y'; barr[2] = (byte)'Z'; DB2eParameter p9 = new DB2eParameter("@p9", DB2eType.Blob); p9.Value = barr; cmd.Parameters.Add(p9); // execute the prepared command cmd.ExecuteNonQuery(); } catch (DB2eException e1) { for (int i=0; i < e1.Errors.Count; i++) { Console.WriteLine("Error #" + i + "\n" + "Message: " + e1.Errors[i].Message + "\n" + "Native: " + e1.Errors[i].NativeError.ToString() + "\n" + "SQL: " + e1.Errors[i].SQLState + "\n"); } } catch (Exception e2) { Console.WriteLine(e2.Message); } finally { if (conn != null && conn.State != ConnectionState.Closed) { conn.Close(); conn = null; } } }
发表评论
-
发布异种数据库导入工具jmyetl-1.0.2
2012-06-11 05:14 1735利用空闲时间,折腾了一个,界面不太擅长,比较简陋,但是相信大家 ... -
各种数据库临时表的使用区别总结
2012-05-24 08:22 2452[size=large]虽然SQL92, 99, 2003, ... -
Oracle11.2.0非安装版(简装版)制作完成(仅供开发人员参考使用)
2012-03-11 13:57 1807作者: iihero@CSDN, 2012.3.11. 请尊重 ... -
常用的数据库连接串(JDBC篇)
2011-12-23 06:58 0看到网上传来传去的jdbc url连接串总结,好多都是粘来粘去 ... -
DBCP连接池的最简单应用(用于ORACLE数据库)
2011-11-19 05:54 4461鉴于有人问起DBCP直接用于JDBC连接的问题,我做了一个最简 ... -
7zip命令行用法
2011-10-14 10:54 38177zip功能很强大,你只要两个文件: 7z.exe以及7z.d ... -
SQLite指南(5) - PRAGMA命令用法(完整)
2011-10-11 14:55 22945如若转载,请加上本文 ... -
SQLite指南(4) - 最新SQLite FAQ列表
2011-09-28 07:30 1如若转载,请带上本文链接,以示尊重个人劳动。 -
SQLite指南(3) - 5分钟了解熟悉SQLite
2011-09-28 07:18 1798在没有大量阅读SQLite在线文档并且不了解相关配置之前,几分 ... -
SQLite指南(2) -- 帮助及编译SQLite
2011-09-27 14:04 1781关于SQLite的帮助,直接上http://www.sqlit ... -
SQLite指南(1) -- SQLite的特性
2011-09-27 13:34 1965使用SQLite也有一段时日 ... -
DBeaver数据库管理工具连接Sybase数据库使用体验
2011-09-26 20:12 7254从http://dbeaver.jkiss.org/下 ... -
Sybase ASA中获取表定义的SQL语句及SP
2011-09-26 17:07 1427ASA功能本来非常强大, 可是不理解为什么没有一个功能强大的描 ... -
Sybase ASE及其它产品的license获取与生成
2011-09-26 10:37 1859在使用正版Sybsase产品的时候,都会根据你机器的hosti ... -
Sybase DBISQL的小奥秘
2011-09-22 22:26 1677目前,在所有Sybase数据库产品里,都使用dbisql来访问 ... -
SQLite指南(0) 表和索引的文件存储结构
2011-09-20 21:56 2779SQLite采用的是B+树来存 ... -
MongoDB入门简介(转)
2011-04-25 15:38 1007有关于MongoDB的资料现在较少,且大多为英文网站,以上内容 ... -
ADO在.NET应用程序中挥洒自如
2005-12-15 19:09 983ADO 在 .NET 应用程序中挥 ... -
JDBC4中的新特性
2005-12-15 22:34 976看了FrankSommers在artima上的一篇短文, ... -
原来数据库也有"云"计算
2008-03-15 18:18 683在网上一搜数据库“云”计算,会出现一堆的帖子。也许,它会引领下 ...
相关推荐
Ado.Net记事本程序是一款基于Microsoft Visual Studio 2003开发的文本编辑应用程序,它结合了Ado.Net技术,使得程序能够处理数据库相关的功能。Ado.Net是.NET框架的一部分,专门用于处理数据访问,提供了高效、可靠...
- **XML支持**:ADO.NET使用XML作为数据交换格式,允许数据在应用程序之间或跨平台进行无损传输。 - **断开连接模式**:DataSet对象使得数据可以在与数据库断开连接的情况下进行操作,提高了应用程序的效率和灵活...
在使用JDBC和PrepareStatement时,别忘了关闭资源,例如ResultSet、Statement和Connection,以避免内存泄漏。可以使用try-with-resources语句来确保资源的正确关闭。 这个资源提供的示例代码将帮助开发者深入理解...
14. **Entity Framework**:作为现代的ORM(对象关系映射)框架,Entity Framework构建在ADO.NET之上,简化了数据库访问,使得开发者可以使用C#或VB.NET的对象模型来操作数据。 通过深入学习和实践以上知识点,你...
在这个"ADO.NET 本质论(PDG)"中,我们将深入探讨ADO.NET的核心概念、架构以及使用方法。 1. **核心组件** - **DataSet**: DataSet是ADO.NET中的离线数据存储,它可以在应用程序内存中存储来自不同数据源的数据,并...
**JDBC(用PrepareStatement实现)** Java Database Connectivity (JDBC) 是Java平台中的一个标准API,用于在Java应用程序和各种数据库之间建立桥梁。它允许Java开发者执行SQL语句,进行数据查询、更新和删除等操作。...
prepareStatement和Statement的区别 prepareStatement和Statement是 Java 中两个常用的数据库操作接口,它们都可以用来执行 SQL 语句,但是它们之间有着明显的区别。 首先,从创建时的区别开始,Statement 需要...
在标题提及的"ADO.NET数据库增删改查.zip"压缩包中,我们可能找到了一系列关于如何在C#中使用ADO.NET进行数据库操作的示例代码。以下是对这些关键知识点的详细解释: 1. **SqlConnection**:这是ADO.NET中连接到SQL...
ADO.NET是微软.NET框架的一部分,它提供了一组用于与数据源交互的库,包括数据库连接、数据读取器、数据适配器、数据集和数据表等组件。本篇文章将深入探讨ADO.NET的最佳实践技巧,帮助开发者提升代码的效率、稳定性...
综上所述,SQLite ADO.NET为.NET开发者提供了一个简单、高效的途径来操作SQLite数据库,适用于桌面应用、移动应用或轻量级Web应用。结合readme.htm、bin和Doc目录中的文档,可以深入学习和了解SQLite ADO.NET的具体...
在.NET环境中连接到DB2数据库是一项常见的任务,尤其对于开发跨平台的企业级应用程序而言。本文将详细介绍如何使用.NET Framework和IBM Data Provider for .NET来实现这一目标,以及相关的编程概念和示例。 首先,...
DB2的JDBC驱动是IBM公司为连接到DB2数据库而设计的一种Java数据库连接(JDBC)驱动程序。它是Java应用程序与DB2数据库之间通信的关键组件,使得开发人员能够使用Java语言来执行SQL语句、处理结果集以及管理数据库...
在实际使用中,为了使用DB2JDBC JAR包,开发者需要完成以下步骤: 1. 将`db2jcc4.jar`添加到项目的类路径(ClassPath)中,这样Java虚拟机在运行时就能找到所需的驱动。 2. 创建数据库连接:使用`java.sql....
在 Java 的数据库编程中,`PreparedStatement` 是一个非常重要的类,它继承自 `Statement` 类,并提供了更高级的功能来处理 SQL 语句,尤其是在处理参数化查询时更为高效和安全。下面我们将详细介绍 `...
本文将详细讲解如何在Java中配置和使用DB2的JDBC驱动,以及相关的连接步骤。 1. **JDBC驱动类型**: JDBC驱动分为四种类型:Type 1、Type 2、Type 3和Type 4。对于DB2,我们通常使用Type 4驱动,这是一种纯Java...
PreparedStatement ps = connection.prepareStatement(sql); ps.setInt(1, 10); ``` 在这个例子中,我们想知道实际执行的SQL语句是"SELECT * FROM table WHERE id = 10"。为了实现这个需求,我们可以自定义一个辅助...
本压缩包文件"sqlite+4.0"包含了在.NET 4.0中使用SQLite所需的一些关键组件和库。 首先,SQLite 的.NET绑定允许.NET开发者通过.NET Framework 4.0访问SQLite数据库。这些绑定通常由SQLite-System.Data.SQLite或...
以MySQL为例,你需要将`mysql-connector-java.jar`文件添加到项目的类路径中。 接下来,我们来看如何建立数据库连接。JDBC提供了一个`DriverManager`类,它包含了一系列静态方法用于管理数据库驱动程序和数据库的...
** JDBC使用参考手册详解 ** Java Database Connectivity (JDBC) 是Java编程语言中用于与数据库交互的一组标准API。这个英文版的JDBC使用参考...这份英文版的JDBC使用参考手册将为你的数据库编程之路提供详尽的指导。
它允许.NET应用程序使用标准的ADO.NET接口来执行SQL查询、管理数据和处理MySQL服务器的各种任务。以下将详细介绍MySQL .NET连接驱动及其相关组件。 1. **MySQL Connector/NET** MySQL Connector/NET是Oracle公司为...