The following is the complete MobiLinkOrders listing for .NET direct row handling. For a step by step explanation, see Lesson 5: Creating a Java or .NET class for MobiLink direct row handling.
using iAnywhere.MobiLink.Script;
using System.IO;
using System.Data;
using System.Text;
public class MobiLinkOrders {
// Class level DBConnectionContext
private DBConnectionContext _cc = null;
// Instances for file I/O
private static StreamWriter my_writer = null;
private static StreamReader my_reader = null;
public MobiLinkOrders(DBConnectionContext cc) {
_cc = cc;
}
public void WriteOrderComment(int comment_id,
int order_id,
string comments)
{
if (my_writer == null) {
my_writer = new StreamWriter("c:\\MLdirect\\orderComments.txt");
}
my_writer.WriteLine("{0}\t{1}\t{2}", comment_id, order_id, comments);
my_writer.Flush();
}
// Method for the handle_UploadData synchronization event.
public void GetUpload(UploadData ut)
{
// Get UploadedTableData for remote table called OrderComments
UploadedTableData order_comments_table_data =
ut.GetUploadedTableByName("OrderComments");
// Get inserts uploaded by the MobiLink client
IDataReader new_comment_reader =
order_comments_table_data.GetInserts();
while (new_comment_reader.Read()) {
// Columns are
// 0 - "order_comment"
// 1 - "comment_id"
// 2 - "order_id"
// You can look up these values using the DataTable returned by:
// order_comments_table_data.GetSchemaTable() if the send
// column names option is turned on at the remote.
// In this example, you just use the known column order to
// determine the column indexes
// Only process this insert if the order_comment is not null
if (!new_comment_reader.IsDBNull(2)) {
int comment_id = new_comment_reader.GetInt32(0);
int order_id = new_comment_reader.GetInt32(1);
string comments = new_comment_reader.GetString(2);
WriteOrderComment(comment_id, order_id, comments);
}
}
// Always close the reader when you are done with it!
new_comment_reader.Close();
}
private const string read_file_path =
"c:\\MLdirect\\orderResponses.txt";
// Method for the handle_DownloadData synchronization event
public void SetDownload() {
if ((my_reader == null) && !File.Exists(read_file_path)) {
System.Console.Out.Write("There is no file to read.");
return;
}
DownloadTableData comments_for_download =
_cc.GetDownloadData().GetDownloadTableByName("OrderComments");
// Add upserts to the set of operation that are going to be
// applied at the remote database
IDbCommand comments_upsert =
comments_for_download.GetUpsertCommand();
if (my_reader == null) {
my_reader = new StreamReader(read_file_path);
}
string comment_line;
while ((comment_line = my_reader.ReadLine()) != null) {
// Three values are on each line separated by '\t'
string[] response_details = comment_line.Split('\t');
if (response_details.Length != 3) {
throw (new SynchronizationException(
"Error reading from orderResponses.txt"));
}
int comment_id = System.Int32.Parse(response_details[0]);
int order_id = System.Int32.Parse(response_details[1]);
string comments = response_details[2];
// Parameters of the correct number and type have
// already been added so you just need to set the
// values of the IDataParameter
((IDataParameter)(comments_upsert.Parameters[0])).Value =
comment_id;
((IDataParameter)(comments_upsert.Parameters[1])).Value =
order_id;
((IDataParameter)(comments_upsert.Parameters[2])).Value =
comments;
// Add the upsert operation
comments_upsert.ExecuteNonQuery();
}
}
public void EndDownload()
{
if (my_writer != null) {
my_writer.Close();
my_writer = null;
}
if (my_reader != null) {
my_reader.Close();
my_reader = null;
}
}
} |
![]() |
Discuss this page in DocCommentXchange.
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |