- ทดสอบการเชื่อมต่อ Informix
- ExecuteScalar (เรียก Stored Procedure)
- ExecuteReader
- ExecuteQuery
- ExecuteNonQuery
- IBM Informix .NET Provider examples
- Retrieve a single value
- Retrieve multiple rows
- Retrieve data into a DataSet
- Call a stored procedure
Program.cs
using IBM.Data.Informix;
using System;
using System.Data;
using System.Text.RegularExpressions;
namespace ConsoleApp
{
class Program
{
private static string connectionString = "";
static void Main(string[] args)
{
string result = TestConnection();
Console.WriteLine(result);
Decimal count = ExecuteScalar("SELECT COUNT(*) FROM tbTest");
Console.WriteLine(count);
DataTable dt1 = ExecuteReader("SELECT firstname FROM tbTest");
Console.WriteLine("ExecuteReader " + dt1.Rows.Count);
DataTable dt2 = ExecuteQuery("SELECT * FROM tbTest");
Console.WriteLine("ExecuteQuery " + dt2.Rows.Count);
}
}
}
1.ทดสอบการเชื่อมต่อ Informix
ถ้าการเชื่อมต่อสำเร็จจะคืนข้อความ “Connect Success”
public static string TestConnection()
{
using (var conn = new IfxConnection(connectionString))
{
try
{
conn.Open();
return "Connect Success";
}
catch (IfxException ex)
{
return "Problem with connection attempt: " + ex.Message;
}
}
}
2.ExecuteScalar
public static Decimal ExecuteScalar(string query)
{
try
{
// Open a connection
IfxConnection conn = new IfxConnection(connectionString);
conn.Open();
// Create an SQL command
IfxCommand cmd = new IfxCommand(query, conn);
Decimal count = (Decimal)cmd.ExecuteScalar();
//Console.WriteLine("There are " + count + " customers");
// Close the connection
conn.Close();
return count;
}
catch (IfxException ex)
{
Console.WriteLine(ex.Message);
return -1;
}
}
เรียก Stored Procedure ก็ได้เหมือนกัน ใช้คำสั่งเดียวกัน แล้วส่ง query สำหรับรัน store
public static int ExecuteScalar(string query)
{
try
{
// Open a connection
IfxConnection conn = new IfxConnection(connectionString);
conn.Open();
// Create an SQL command
IfxCommand cmd = new IfxCommand(query, conn);
int result = (int)cmd.ExecuteScalar();
// Close the connection
conn.Close();
log.Debug(string.Format(" result = '{0}'", result));
return result;
}
catch (Exception ex)
{
log.Error(ex.Message);
return -1;
}
}
EXECUTE PROCEDURE TestStore('1234567890123', '04/03/2020', 100)
3.ExecuteReader
public static DataTable ExecuteReader(string query)
{
DataSet ds;
try
{
// Open a connection
IfxConnection conn = new IfxConnection(connectionString);
conn.Open();
// Create an SQL command
IfxCommand cmd = new IfxCommand(query, conn);
cmd.CommandTimeout = 30; // set command timeout
IfxDataReader dr = cmd.ExecuteReader();
// Write the data to the console
//while (dr.Read())
//{
// Console.WriteLine(dr["col_name"].ToString());
//}
ds = new System.Data.DataSet("Names");
while (!dr.IsClosed)
ds.Tables.Add().Load(dr);
DataTable dt = ds.Tables[0];
// Close the connection
conn.Close();
log.Debug(string.Format(" found {0} record.", dt.Rows.Count));
return dt;
}
catch (IfxException e)
{
Console.WriteLine(e.ToString());
return null;
}
}
4.ExecuteQuery
public static DataTable ExecuteQuery(string query)
{
query = Regex.Replace(query, @"\s+", " ");
Console.WriteLine(query);
try
{
// Open a connection
IfxConnection conn = new IfxConnection(connectionString);
conn.Open();
// Create an SQL command
IfxDataAdapter da = new IfxDataAdapter(query, conn);
System.Data.DataSet ds = new System.Data.DataSet("Names");
//Fill the DataSet
da.Fill(ds);
DataTable dt = ds.Tables[0];
// Close the connection
conn.Close();
Console.WriteLine("there is " + dt.Rows.Count + " record.");
return dt;
}
catch (IfxException ex)
{
Console.WriteLine(ex.Message);
return null;
}
}
5.ExecuteNonQuery
ทำ ExecuteNonQuery แบบมี Transaction
public static string ExecuteNonQuery(string query)
{
query = Regex.Replace(query, @"\s+", " ");
Console.WriteLine(query);
string result = "";
using (var conn = new IfxConnection(connectionString))
{
conn.Open();
IfxCommand cmd = new IfxCommand();
IfxTransaction tran;
// Start a local transaction
tran = conn.BeginTransaction(IsolationLevel.ReadCommitted);
// Assign transaction object for a pending local transaction
cmd.Connection = conn;
cmd.Transaction = tran;
try
{
cmd.CommandText = query;
cmd.ExecuteNonQuery();
tran.Commit();
result = "success";
}
catch (Exception ex)
{
tran.Rollback();
result = ex.Message;
}
finally
{
conn.Close();
}
}
return result;
}