using System; using System.Collections.Generic; using System.Data; using System.Data.Odbc; using System.Linq; using System.Runtime.InteropServices; using System.Text; using iAnywhere.Data.SQLAnywhere; namespace libEShangPB { [ComVisible(false)] public class SyBaseHelper { private static readonly string connstring = "host=127.0.0.1;server=" + System.Net.Dns.GetHostName() + ";userid=dba;password=sql;Connect Timeout=3;"; public static bool TestConnect() { using (SAConnection conn = new SAConnection(connstring)) { try { conn.Open(); conn.Close(); return true; } catch { return false; } finally { conn.Close(); } } } /// /// 查询本地数据库 /// /// /// public static DataSet QueryOdbc(string SqlString) { using (SAConnection conn = new SAConnection(connstring)) { SACommand cmd = new SACommand(SqlString, conn); try { conn.Open(); SADataAdapter adp = new SADataAdapter(cmd); DataSet ds = new DataSet(); adp.Fill(ds); conn.Close(); return ds; } catch (SAException ex) { throw new Exception(ex.Message); } } } /// /// 查询本地数据库 /// /// /// public static DataSet QueryOdbc(string SqlString, string TableName = "Template") { using (SAConnection conn = new SAConnection(connstring)) { SACommand cmd = new SACommand(SqlString, conn); try { conn.Open(); SADataAdapter adp = new SADataAdapter(cmd); DataSet ds = new DataSet(); adp.Fill(ds, TableName); conn.Close(); return ds; } catch (SAException ex) { throw new Exception(ex.Message); } } } /// /// 保存数据 /// /// /// public static void ExecuteSqlTran(string SQLString, SAParameter SQLParameter) { using (SAConnection conn = new SAConnection(connstring)) { conn.Open(); SACommand cmd = new SACommand { Connection = conn }; SATransaction tx = conn.BeginTransaction(); cmd.Transaction = tx; try { if (SQLString.Trim().Length > 1) { cmd.CommandText = SQLString; cmd.Parameters.Add(SQLParameter); cmd.ExecuteNonQuery(); } tx.Commit(); } catch (Exception E) { tx.Rollback(); throw new Exception(E.Message); } finally { conn.Close(); } } } /// /// 保存数据 /// /// public static void ExecuteSqlTran(List SQLStringList) { using (SAConnection conn = new SAConnection(connstring)) { conn.Open(); SACommand cmd = new SACommand { Connection = conn }; SATransaction tx = conn.BeginTransaction(); cmd.Transaction = tx; try { for (int n = 0; n < SQLStringList.Count; n++) { string strsql = SQLStringList[n].ToString(); if (strsql.Trim().Length > 1) { cmd.CommandText = strsql; cmd.ExecuteNonQuery(); } } tx.Commit(); } catch (SAException E) { tx.Rollback(); throw new Exception(E.Message); } finally { conn.Close(); } } } /// /// 保存数据 /// /// public static int ExecuteSqlTran(string SQLString) { int int_ExecuteNumber = 0; using (SAConnection conn = new SAConnection(connstring)) { conn.Open(); SACommand cmd = new SACommand { Connection = conn }; SATransaction tx = conn.BeginTransaction(); cmd.Transaction = tx; try { if (SQLString.Trim().Length > 1) { cmd.CommandText = SQLString; int_ExecuteNumber = cmd.ExecuteNonQuery(); } tx.Commit(); } catch (SAException E) { tx.Rollback(); throw new Exception(E.Message); } finally { conn.Close(); } return int_ExecuteNumber; } } #region 方法 -> 数据值校验 /// /// 数据值校验 /// /// 待校验值 /// 待校验值类型 /// public static string DataValueCheck(string dataValue, CheckType dataType) { string _strResult = "NULL"; switch (dataType) { case CheckType.String: if (!string.IsNullOrWhiteSpace(dataValue)) { _strResult = "'" + dataValue + "'"; } break; case CheckType.DateTime: try { _strResult = "DATETIME('" + DateTime.Parse(dataValue).ToString() + "')"; } catch { _strResult = "NULL"; } break; case CheckType.Decimal: try { _strResult = decimal.Parse(dataValue).ToString(); } catch { _strResult = "NULL"; } break; } return _strResult; } /// /// 数据类型 /// public enum CheckType { String = 0, Decimal = 1, DateTime = 2 } #endregion #region 方法 -> 获取下一序号 /// /// 获取下一序号 /// /// 表名 /// ID列字段名 /// 查询条件 /// public static int CreateNextSequence(string tableName, string seqColumn, string whereSql = "1=1") { try { return int.Parse(QueryOdbc( $"SELECT MAX({seqColumn}) FROM {tableName} WHERE {whereSql}" ).Tables[0].Rows[0][0].ToString()) + 1; } catch { return 1; } } #endregion } }