预处理语句是在GBASE南大通用?ADO.NET 中预先定义的可重复使用的 SQL 语句。在GBASE南大通用ADO.NET 中使用预处理语句,能明显改善一个 SQL语句执行多次时的性能。
使用预处理语句
GBase ADO.NET 支持预处理语句,使用预处理语句时需要创建一个GBASE南大通用Command 命令对象,并且设置相关属性及定义查询语句后调用命令对象的ExecuteNonQuery()、ExecuteScalar()或 ExecuteReader 方法执行语句。
下面是在 GBase ADO.NET 中定义预处理语句的步骤:
1) 使用?GBASE南大通用Connection 创建数据库连接对象
2) 使用 GBaseCommand 创建命令对象
3) 使用连接对象打开连接
4) 设置命令对象的 CommandText 属性,指明预处理语句,并定义参数
5) 执行命令对象的 Prepare 方法
6) 增加命令对象的 Parameters 的参数
7) 设置命令对象 Parameters 的参数值
8) 执行命令对象的 ExecuteNonQuery 方法
下面的样例代码演示如何定义预处理语句和使用预处理语句功能完成数据
的批量插入。
C# 示例:
using System;
using GBase.Data.GBaseClient;
namespace UsingGBase
{
class Program
{
static void Main(string[] args)
{
String connectionString =
"server=192.168.5.41;database=test;user
id=root;password=1;pooling=false";
GBaseConnection conn = new
GBaseConnection(connectionString);
GBaseCommand cmd = new GBaseCommand();
try
{
conn.Open();
cmd.Connection = conn;
cmd.CommandText = "DROP TABLE IF EXISTS gsTable";
cmd.ExecuteNonQuery();
cmd.CommandText = "CREATE TABLE gsTable (id int,c1
bigint ,c2 varchar(100) )";
cmd.ExecuteNonQuery();
cmd.CommandText = "INSERT INTO gsTable VALUES(NULL,
@number, @text)";
cmd.Prepare();
cmd.Parameters.AddWithValue("@number", 1);
cmd.Parameters.AddWithValue("@text", "One");
for (int i = 1; i <= 1000; i++)
{
cmd.Parameters["@number"].Value = i;
cmd.Parameters["@text"].Value = "A string
value";
cmd.ExecuteNonQuery();
}
}
catch (GBaseException ex)
{
Console.WriteLine("Error " + ex.Number + " has
occurred: " + ex.Message);
}
}
}
}