@@ -99,6 +99,10 @@ | |||||
</None> | </None> | ||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<ProjectReference Include="..\CnasSynchronousCommon\CnasSynchronousCommon.csproj"> | |||||
<Project>{8E0E5F2E-2BA2-4952-9F31-34C072CD86B3}</Project> | |||||
<Name>CnasSynchronousCommon</Name> | |||||
</ProjectReference> | |||||
<ProjectReference Include="..\CnasSynchronusClient\CnasSynchronusBLL.csproj"> | <ProjectReference Include="..\CnasSynchronusClient\CnasSynchronusBLL.csproj"> | ||||
<Project>{CB9B6D92-3CC4-46C6-92E8-A6FD0AD48041}</Project> | <Project>{CB9B6D92-3CC4-46C6-92E8-A6FD0AD48041}</Project> | ||||
<Name>CnasSynchronusBLL</Name> | <Name>CnasSynchronusBLL</Name> | ||||
@@ -95,15 +95,6 @@ namespace CNAS_Authorize | |||||
} | } | ||||
} | } | ||||
//获取Machine表的数据 | |||||
//m_machines = new List<Machine>(); | |||||
////TEST DATA | |||||
//for(int i = 0; i < 15; i++) | |||||
//{ | |||||
// Machine m = new Machine("MACHINEE"+ (i+1), "CODE" + (i + 1), "2025-02-02", i%2==0); | |||||
// m_machines.Add(m); | |||||
//} | |||||
m_rangle = new List<Machine>(); | m_rangle = new List<Machine>(); | ||||
m_rangle.AddRange(m_machines); | m_rangle.AddRange(m_machines); | ||||
@@ -1,6 +1,8 @@ | |||||
using CnasSynchronusClient; | |||||
using CnasSynchronousCommon; | |||||
using CnasSynchronusClient; | |||||
using System; | using System; | ||||
using System.Collections.Generic; | using System.Collections.Generic; | ||||
using System.Data; | |||||
using System.Linq; | using System.Linq; | ||||
using System.Security.Cryptography; | using System.Security.Cryptography; | ||||
using System.Text; | using System.Text; | ||||
@@ -32,6 +34,11 @@ namespace CNAS_Authorize | |||||
} | } | ||||
private void Window_Loaded(object sender, RoutedEventArgs e) | private void Window_Loaded(object sender, RoutedEventArgs e) | ||||
{ | |||||
this.LoadData(); | |||||
} | |||||
private void LoadData() | |||||
{ | { | ||||
m_machines = new MachineAuth(); | m_machines = new MachineAuth(); | ||||
m_machines.Load(); | m_machines.Load(); | ||||
@@ -99,28 +106,36 @@ namespace CNAS_Authorize | |||||
private void ConfirmImport_Click(object sender, RoutedEventArgs e) | private void ConfirmImport_Click(object sender, RoutedEventArgs e) | ||||
{ | { | ||||
//MySQLHelper.ExecuteNonQuery(strInsertSql, parameters); | |||||
//int iReturn = CnasDataOperationFact.CnasDataOperation().InsertDataToCNASTable(ConvertDataRowToTable(drNewTarget), targetdataBase, banlanceitem.syncParamasInfos, banlanceitem.CnasInstrumentColumn, banlanceitem.lstFixedValue); | |||||
//if (iReturn <= 0) //此时出现问题 | |||||
//{ | |||||
// if (iReturn == -1) | |||||
// { | |||||
// AppLog.ServiceInfo("数据库连接中断,终止本次上传。"); | |||||
// break; //此时数据库连接中断,直接跳出循环,结束本次数据同步传输 | |||||
// } | |||||
// else if (iReturn == -2) //等于-2表示插入准备更新时发现数据一致,不再执行 | |||||
// { | |||||
// OtherCount++; | |||||
// } | |||||
// else | |||||
// { | |||||
// ErrorCount++; | |||||
// /*需要转换一下,否则会将整个dt全部写入日志*/ | |||||
// lstError.Add(GlobalCommonOperation.ConvertDataRowToTable(drNewTarget).Rows[0]); | |||||
// } | |||||
// bSuccess = false; | |||||
//} | |||||
//加载CNAS数据库配置 | |||||
var targetDataBase = FileOperation.GetLocalCnasDB(); | |||||
if (!CnasDataOperationFact.CnasDataOperation().TestConnect(targetDataBase)) | |||||
{ | |||||
MessageBox.Show("CNAS数据库无法正常连接...", "提示"); | |||||
return; | |||||
} | |||||
var existData = CnasDataOperationFact.CnasDataOperation().GetTableData(targetDataBase, $"select * from macaddress where MAC_ADDRESS='{edtMachine.Text.Trim()}'"); | |||||
if(existData!=null&& existData.Rows.Count > 0) | |||||
{ | |||||
MessageBox.Show("已经导入!"); | |||||
return; | |||||
} | |||||
StringBuilder sb = new StringBuilder(); | |||||
sb.AppendFormat($"insert into macaddress(MAC_ADDRESS,PLANTCODE,CREATETIME,FACILITY_STYLE) VALUES('{edtMachine.Text.Trim()}','{edtFactory.Text.Trim()}',now(),'999')"); | |||||
//1.加载数据 | |||||
var flag = CnasDataOperationFact.CnasDataOperation().InsertTableData(targetDataBase, sb.ToString()); | |||||
if (flag) | |||||
{ | |||||
AppLog.ServiceInfo("导入成功"); | |||||
MessageBox.Show("导入成功...", "提示"); | |||||
this.LoadData(); | |||||
} | |||||
else | |||||
{ | |||||
MessageBox.Show("导入失败...", "提示"); | |||||
} | |||||
} | } | ||||
private void DownloadActivationCode_Click(object sender, RoutedEventArgs e) | private void DownloadActivationCode_Click(object sender, RoutedEventArgs e) | ||||
@@ -133,7 +148,7 @@ namespace CNAS_Authorize | |||||
{ | { | ||||
// 生成激活码 | // 生成激活码 | ||||
string activationCode = GenerateActivationCode(machine.MachineCode); | string activationCode = GenerateActivationCode(machine.MachineCode); | ||||
// 创建保存文件对话框 | // 创建保存文件对话框 | ||||
var saveFileDialog = new Microsoft.Win32.SaveFileDialog | var saveFileDialog = new Microsoft.Win32.SaveFileDialog | ||||
{ | { | ||||
@@ -147,7 +162,7 @@ namespace CNAS_Authorize | |||||
// 将激活码写入文件 | // 将激活码写入文件 | ||||
System.IO.File.WriteAllText(saveFileDialog.FileName, activationCode); | System.IO.File.WriteAllText(saveFileDialog.FileName, activationCode); | ||||
MessageBox.Show("激活码已成功保存!", "提示", MessageBoxButton.OK, MessageBoxImage.Information); | MessageBox.Show("激活码已成功保存!", "提示", MessageBoxButton.OK, MessageBoxImage.Information); | ||||
// 更新状态 | // 更新状态 | ||||
machine.IsGenerated = true; | machine.IsGenerated = true; | ||||
refreshBind(); | refreshBind(); | ||||
@@ -170,7 +185,7 @@ namespace CNAS_Authorize | |||||
string input = machineCode + DateTime.Now.ToString("yyyyMMdd"); | string input = machineCode + DateTime.Now.ToString("yyyyMMdd"); | ||||
byte[] inputBytes = Encoding.UTF8.GetBytes(input); | byte[] inputBytes = Encoding.UTF8.GetBytes(input); | ||||
byte[] hashBytes = md5.ComputeHash(inputBytes); | byte[] hashBytes = md5.ComputeHash(inputBytes); | ||||
// 转换为16进制字符串 | // 转换为16进制字符串 | ||||
StringBuilder sb = new StringBuilder(); | StringBuilder sb = new StringBuilder(); | ||||
for (int i = 0; i < hashBytes.Length; i++) | for (int i = 0; i < hashBytes.Length; i++) | ||||
@@ -0,0 +1,115 @@ | |||||
namespace CNAS_DBSync | |||||
{ | |||||
partial class ActivationForm | |||||
{ | |||||
private System.ComponentModel.IContainer components = null; | |||||
protected override void Dispose(bool disposing) | |||||
{ | |||||
if (disposing && (components != null)) | |||||
{ | |||||
components.Dispose(); | |||||
} | |||||
base.Dispose(disposing); | |||||
} | |||||
private void InitializeComponent() | |||||
{ | |||||
this.lblTitle = new System.Windows.Forms.Label(); | |||||
this.lblDescription = new System.Windows.Forms.Label(); | |||||
this.lblActivationCode = new System.Windows.Forms.Label(); | |||||
this.txtActivationCode = new System.Windows.Forms.TextBox(); | |||||
this.btnActivate = new System.Windows.Forms.Button(); | |||||
this.lnkDownloadCode = new System.Windows.Forms.LinkLabel(); | |||||
this.SuspendLayout(); | |||||
// | |||||
// lblTitle | |||||
// | |||||
this.lblTitle.Location = new System.Drawing.Point(0, 0); | |||||
this.lblTitle.Name = "lblTitle"; | |||||
this.lblTitle.Size = new System.Drawing.Size(100, 23); | |||||
this.lblTitle.TabIndex = 0; | |||||
// | |||||
// lblDescription | |||||
// | |||||
this.lblDescription.Font = new System.Drawing.Font("微软雅黑", 10F); | |||||
this.lblDescription.ForeColor = System.Drawing.Color.Red; | |||||
this.lblDescription.Location = new System.Drawing.Point(20, 60); | |||||
this.lblDescription.Name = "lblDescription"; | |||||
this.lblDescription.Size = new System.Drawing.Size(560, 40); | |||||
this.lblDescription.TabIndex = 1; | |||||
this.lblDescription.Text = "请点击上方按钮下载机器识别码,然后将机器识别码发给平台管理员申请授权文件后进行激活,激活后才可正常使用取数仪器客户端。"; | |||||
// | |||||
// lblActivationCode | |||||
// | |||||
this.lblActivationCode.AutoSize = true; | |||||
this.lblActivationCode.Location = new System.Drawing.Point(20, 120); | |||||
this.lblActivationCode.Name = "lblActivationCode"; | |||||
this.lblActivationCode.Size = new System.Drawing.Size(82, 24); | |||||
this.lblActivationCode.TabIndex = 2; | |||||
this.lblActivationCode.Text = "激活码:"; | |||||
// | |||||
// txtActivationCode | |||||
// | |||||
this.txtActivationCode.Location = new System.Drawing.Point(20, 140); | |||||
this.txtActivationCode.Multiline = true; | |||||
this.txtActivationCode.Name = "txtActivationCode"; | |||||
this.txtActivationCode.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; | |||||
this.txtActivationCode.Size = new System.Drawing.Size(560, 150); | |||||
this.txtActivationCode.TabIndex = 0; | |||||
// | |||||
// btnActivate | |||||
// | |||||
this.btnActivate.Location = new System.Drawing.Point(250, 310); | |||||
this.btnActivate.Name = "btnActivate"; | |||||
this.btnActivate.Size = new System.Drawing.Size(100, 30); | |||||
this.btnActivate.TabIndex = 3; | |||||
this.btnActivate.Text = "输入激活"; | |||||
this.btnActivate.Click += new System.EventHandler(this.btnActivate_Click); | |||||
// | |||||
// lnkDownloadCode | |||||
// | |||||
this.lnkDownloadCode.ActiveLinkColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(102)))), ((int)(((byte)(204))))); | |||||
this.lnkDownloadCode.AutoSize = true; | |||||
this.lnkDownloadCode.Font = new System.Drawing.Font("微软雅黑", 10F); | |||||
this.lnkDownloadCode.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline; | |||||
this.lnkDownloadCode.LinkColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(102)))), ((int)(((byte)(204))))); | |||||
this.lnkDownloadCode.Location = new System.Drawing.Point(20, 23); | |||||
this.lnkDownloadCode.Name = "lnkDownloadCode"; | |||||
this.lnkDownloadCode.Size = new System.Drawing.Size(152, 27); | |||||
this.lnkDownloadCode.TabIndex = 4; | |||||
this.lnkDownloadCode.TabStop = true; | |||||
this.lnkDownloadCode.Text = "下载机器识别码"; | |||||
this.lnkDownloadCode.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.lnkDownloadCode_LinkClicked); | |||||
// | |||||
// ActivationForm | |||||
// | |||||
this.AutoScaleDimensions = new System.Drawing.SizeF(11F, 24F); | |||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; | |||||
this.ClientSize = new System.Drawing.Size(600, 360); | |||||
this.Controls.Add(this.lblTitle); | |||||
this.Controls.Add(this.lblDescription); | |||||
this.Controls.Add(this.lblActivationCode); | |||||
this.Controls.Add(this.txtActivationCode); | |||||
this.Controls.Add(this.btnActivate); | |||||
this.Controls.Add(this.lnkDownloadCode); | |||||
this.Font = new System.Drawing.Font("微软雅黑", 9F); | |||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; | |||||
this.MaximizeBox = false; | |||||
this.MinimizeBox = false; | |||||
this.Name = "ActivationForm"; | |||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; | |||||
this.Text = "下载机器识别码"; | |||||
this.ResumeLayout(false); | |||||
this.PerformLayout(); | |||||
} | |||||
private System.Windows.Forms.Label lblTitle; | |||||
private System.Windows.Forms.Label lblDescription; | |||||
private System.Windows.Forms.Label lblActivationCode; | |||||
private System.Windows.Forms.TextBox txtActivationCode; | |||||
private System.Windows.Forms.Button btnActivate; | |||||
private System.Windows.Forms.LinkLabel lnkDownloadCode; | |||||
} | |||||
} |
@@ -0,0 +1,173 @@ | |||||
using System; | |||||
using System.Text; | |||||
using System.Windows.Forms; | |||||
using System.Management; | |||||
using System.Net.NetworkInformation; | |||||
using System.Collections.Generic; | |||||
using System.IO; | |||||
namespace CNAS_DBSync | |||||
{ | |||||
public partial class ActivationForm : Form | |||||
{ | |||||
public bool IsActivated { get; private set; } | |||||
public ActivationForm() | |||||
{ | |||||
InitializeComponent(); | |||||
IsActivated = false; | |||||
} | |||||
private void btnActivate_Click(object sender, EventArgs e) | |||||
{ | |||||
string activationCode = txtActivationCode.Text.Trim(); | |||||
if (string.IsNullOrEmpty(activationCode)) | |||||
{ | |||||
MessageBox.Show("请输入激活码!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); | |||||
return; | |||||
} | |||||
try | |||||
{ | |||||
if (ValidateActivationCode(activationCode)) | |||||
{ | |||||
IsActivated = true; | |||||
this.DialogResult = DialogResult.OK; | |||||
this.Close(); | |||||
} | |||||
else | |||||
{ | |||||
MessageBox.Show("激活码无效!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); | |||||
} | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
MessageBox.Show($"激活失败:{ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); | |||||
} | |||||
} | |||||
private void lnkDownloadCode_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) | |||||
{ | |||||
try | |||||
{ | |||||
string machineCode = GetMachineCode(); | |||||
// 创建保存文件对话框 | |||||
var saveFileDialog = new SaveFileDialog | |||||
{ | |||||
FileName = $"机器码_{DateTime.Now:yyyyMMdd}", | |||||
DefaultExt = ".txt", | |||||
Filter = "文本文件|*.txt" | |||||
}; | |||||
if (saveFileDialog.ShowDialog() == DialogResult.OK) | |||||
{ | |||||
File.WriteAllText(saveFileDialog.FileName, machineCode); | |||||
MessageBox.Show("机器码已成功保存!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); | |||||
} | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
MessageBox.Show($"获取机器码失败:{ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); | |||||
} | |||||
} | |||||
private string GetMachineCode() | |||||
{ | |||||
StringBuilder machineCode = new StringBuilder(); | |||||
// 获取CPU ID | |||||
string cpuId = GetCPUId(); | |||||
machineCode.Append(cpuId); | |||||
// 获取所有MAC地址 | |||||
List<string> macAddresses = GetMACAddresses(); | |||||
foreach (string mac in macAddresses) | |||||
{ | |||||
machineCode.Append("_").Append(mac); | |||||
} | |||||
return machineCode.ToString(); | |||||
} | |||||
private string GetCPUId() | |||||
{ | |||||
try | |||||
{ | |||||
using (ManagementClass mc = new ManagementClass("Win32_Processor")) | |||||
{ | |||||
ManagementObjectCollection moc = mc.GetInstances(); | |||||
foreach (ManagementObject mo in moc) | |||||
{ | |||||
return mo.Properties["ProcessorId"].Value.ToString(); | |||||
} | |||||
} | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
throw new Exception("获取CPU ID失败: " + ex.Message); | |||||
} | |||||
return string.Empty; | |||||
} | |||||
private List<string> GetMACAddresses() | |||||
{ | |||||
List<string> macAddresses = new List<string>(); | |||||
try | |||||
{ | |||||
NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces(); | |||||
foreach (NetworkInterface adapter in nics) | |||||
{ | |||||
// 只获取物理网卡的MAC地址 | |||||
if (adapter.NetworkInterfaceType == NetworkInterfaceType.Ethernet || | |||||
adapter.NetworkInterfaceType == NetworkInterfaceType.Wireless80211) | |||||
{ | |||||
string mac = adapter.GetPhysicalAddress().ToString(); | |||||
if (!string.IsNullOrEmpty(mac)) | |||||
{ | |||||
macAddresses.Add(mac); | |||||
} | |||||
} | |||||
} | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
throw new Exception("获取MAC地址失败: " + ex.Message); | |||||
} | |||||
return macAddresses; | |||||
} | |||||
private bool ValidateActivationCode(string activationCode) | |||||
{ | |||||
// 使用实际的机器码来验证 | |||||
string machineCode = GetMachineCode(); | |||||
return GenerateActivationCode(machineCode) == activationCode; | |||||
} | |||||
private string GenerateActivationCode(string machineCode) | |||||
{ | |||||
// 这里实现激活码生成算法 | |||||
// 示例:简单的加密算法,实际应用中应该使用更安全的加密方式 | |||||
using (var md5 = System.Security.Cryptography.MD5.Create()) | |||||
{ | |||||
// 加入时间戳使得生成的激活码具有时效性 | |||||
string input = machineCode + DateTime.Now.ToString("yyyyMMdd"); | |||||
byte[] inputBytes = Encoding.UTF8.GetBytes(input); | |||||
byte[] hashBytes = md5.ComputeHash(inputBytes); | |||||
// 转换为16进制字符串 | |||||
StringBuilder sb = new StringBuilder(); | |||||
for (int i = 0; i < hashBytes.Length; i++) | |||||
{ | |||||
sb.Append(hashBytes[i].ToString("X2")); | |||||
// 每4个字符添加一个分隔符,提高可读性 | |||||
if ((i + 1) % 4 == 0 && i != hashBytes.Length - 1) | |||||
{ | |||||
sb.Append("-"); | |||||
} | |||||
} | |||||
return sb.ToString(); | |||||
} | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,120 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<root> | |||||
<!-- | |||||
Microsoft ResX Schema | |||||
Version 2.0 | |||||
The primary goals of this format is to allow a simple XML format | |||||
that is mostly human readable. The generation and parsing of the | |||||
various data types are done through the TypeConverter classes | |||||
associated with the data types. | |||||
Example: | |||||
... ado.net/XML headers & schema ... | |||||
<resheader name="resmimetype">text/microsoft-resx</resheader> | |||||
<resheader name="version">2.0</resheader> | |||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | |||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |||||
<value>[base64 mime encoded serialized .NET Framework object]</value> | |||||
</data> | |||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | |||||
<comment>This is a comment</comment> | |||||
</data> | |||||
There are any number of "resheader" rows that contain simple | |||||
name/value pairs. | |||||
Each data row contains a name, and value. The row also contains a | |||||
type or mimetype. Type corresponds to a .NET class that support | |||||
text/value conversion through the TypeConverter architecture. | |||||
Classes that don't support this are serialized and stored with the | |||||
mimetype set. | |||||
The mimetype is used for serialized objects, and tells the | |||||
ResXResourceReader how to depersist the object. This is currently not | |||||
extensible. For a given mimetype the value must be set accordingly: | |||||
Note - application/x-microsoft.net.object.binary.base64 is the format | |||||
that the ResXResourceWriter will generate, however the reader can | |||||
read any of the formats listed below. | |||||
mimetype: application/x-microsoft.net.object.binary.base64 | |||||
value : The object must be serialized with | |||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | |||||
: and then encoded with base64 encoding. | |||||
mimetype: application/x-microsoft.net.object.soap.base64 | |||||
value : The object must be serialized with | |||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |||||
: and then encoded with base64 encoding. | |||||
mimetype: application/x-microsoft.net.object.bytearray.base64 | |||||
value : The object must be serialized into a byte array | |||||
: using a System.ComponentModel.TypeConverter | |||||
: and then encoded with base64 encoding. | |||||
--> | |||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | |||||
<xsd:element name="root" msdata:IsDataSet="true"> | |||||
<xsd:complexType> | |||||
<xsd:choice maxOccurs="unbounded"> | |||||
<xsd:element name="metadata"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" use="required" type="xsd:string" /> | |||||
<xsd:attribute name="type" type="xsd:string" /> | |||||
<xsd:attribute name="mimetype" type="xsd:string" /> | |||||
<xsd:attribute ref="xml:space" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="assembly"> | |||||
<xsd:complexType> | |||||
<xsd:attribute name="alias" type="xsd:string" /> | |||||
<xsd:attribute name="name" type="xsd:string" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="data"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | |||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |||||
<xsd:attribute ref="xml:space" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
<xsd:element name="resheader"> | |||||
<xsd:complexType> | |||||
<xsd:sequence> | |||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||||
</xsd:sequence> | |||||
<xsd:attribute name="name" type="xsd:string" use="required" /> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
</xsd:choice> | |||||
</xsd:complexType> | |||||
</xsd:element> | |||||
</xsd:schema> | |||||
<resheader name="resmimetype"> | |||||
<value>text/microsoft-resx</value> | |||||
</resheader> | |||||
<resheader name="version"> | |||||
<value>2.0</value> | |||||
</resheader> | |||||
<resheader name="reader"> | |||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
</resheader> | |||||
<resheader name="writer"> | |||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
</resheader> | |||||
</root> |
@@ -63,6 +63,12 @@ | |||||
<Reference Include="System.Xml" /> | <Reference Include="System.Xml" /> | ||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<Compile Include="ActivationForm.cs"> | |||||
<SubType>Form</SubType> | |||||
</Compile> | |||||
<Compile Include="ActivationForm.Designer.cs"> | |||||
<DependentUpon>ActivationForm.cs</DependentUpon> | |||||
</Compile> | |||||
<Compile Include="FormSizeHelper.cs" /> | <Compile Include="FormSizeHelper.cs" /> | ||||
<Compile Include="SourceSettingTextBoxDecrible.cs" /> | <Compile Include="SourceSettingTextBoxDecrible.cs" /> | ||||
<Compile Include="frmAddSubtract.cs"> | <Compile Include="frmAddSubtract.cs"> | ||||
@@ -157,6 +163,9 @@ | |||||
</Compile> | </Compile> | ||||
<Compile Include="Program.cs" /> | <Compile Include="Program.cs" /> | ||||
<Compile Include="Properties\AssemblyInfo.cs" /> | <Compile Include="Properties\AssemblyInfo.cs" /> | ||||
<EmbeddedResource Include="ActivationForm.resx"> | |||||
<DependentUpon>ActivationForm.cs</DependentUpon> | |||||
</EmbeddedResource> | |||||
<EmbeddedResource Include="frmAddSubtract.resx"> | <EmbeddedResource Include="frmAddSubtract.resx"> | ||||
<DependentUpon>frmAddSubtract.cs</DependentUpon> | <DependentUpon>frmAddSubtract.cs</DependentUpon> | ||||
</EmbeddedResource> | </EmbeddedResource> | ||||
@@ -23,8 +23,18 @@ namespace CNAS_DBSync | |||||
/*CheckAvailability(ref strMsg);*/ | /*CheckAvailability(ref strMsg);*/ | ||||
if (strMsg == "") | if (strMsg == "") | ||||
{ | { | ||||
if (new frmOperationPwd().ShowDialog() == DialogResult.OK) | |||||
Application.Run(new frmSyncParams()); | |||||
// 显示激活窗口 | |||||
using (var activationForm = new ActivationForm()) | |||||
{ | |||||
if (activationForm.ShowDialog() == DialogResult.OK) | |||||
{ | |||||
// 激活成功,显示主窗口 | |||||
if (new frmOperationPwd().ShowDialog() == DialogResult.OK) | |||||
Application.Run(new frmSyncParams()); | |||||
} | |||||
//else | |||||
// MessageBox.Show("激活失败"); | |||||
} | |||||
} | } | ||||
else | else | ||||
MessageBox.Show(strMsg); | MessageBox.Show(strMsg); | ||||
@@ -73,6 +73,11 @@ namespace CnasSynchronusClient | |||||
return db2DataBaseService.InsertDataToCNASTable(dt, dataBase, syncParamasInfos, strInsturmentColumn, lstFixedValue); | return db2DataBaseService.InsertDataToCNASTable(dt, dataBase, syncParamasInfos, strInsturmentColumn, lstFixedValue); | ||||
} | } | ||||
public bool InsertTableData(DataBaseInfo dataBase, string strSql) | |||||
{ | |||||
throw new NotImplementedException(); | |||||
} | |||||
public bool TestConnect(DataBaseInfo dataBase) | public bool TestConnect(DataBaseInfo dataBase) | ||||
{ | { | ||||
return db2DataBaseService.TestConnect(dataBase.DBHost, dataBase.DBName, dataBase.DBUser, dataBase.DBPwd, dataBase.DBPort); | return db2DataBaseService.TestConnect(dataBase.DBHost, dataBase.DBName, dataBase.DBUser, dataBase.DBPwd, dataBase.DBPort); | ||||
@@ -62,6 +62,16 @@ namespace CnasSynchronusClient | |||||
/// <param name="strSql"></param> | /// <param name="strSql"></param> | ||||
/// <returns></returns> | /// <returns></returns> | ||||
DataTable GetTableData(DataBaseInfo dataBase, string strSql); | DataTable GetTableData(DataBaseInfo dataBase, string strSql); | ||||
/// <summary> | |||||
/// 插入某个表的数据 | |||||
/// </summary> | |||||
/// <param name="dataBase"></param> | |||||
/// <param name="strSql"></param> | |||||
/// <returns></returns> | |||||
bool InsertTableData(DataBaseInfo dataBase, string strSql); | |||||
} | } | ||||
@@ -95,5 +95,24 @@ namespace CnasSynchronusClient | |||||
} | } | ||||
return dt; | return dt; | ||||
} | } | ||||
/// <summary> | |||||
/// 插入某个表的数据 | |||||
/// </summary> | |||||
/// <param name="dataBase"></param> | |||||
/// <param name="strSql"></param> | |||||
/// <returns></returns> | |||||
public bool InsertTableData(DataBaseInfo dataBase, string strSql) | |||||
{ | |||||
try | |||||
{ | |||||
return mysqlDataBaseService.InsertTableData(dataBase, strSql); | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
AppLog.Error(ex.Message); | |||||
} | |||||
return false; | |||||
} | |||||
} | } | ||||
} | } |
@@ -326,5 +326,10 @@ namespace CnasSynchronusClient | |||||
{ | { | ||||
throw new NotImplementedException(); | throw new NotImplementedException(); | ||||
} | } | ||||
public bool InsertTableData(DataBaseInfo dataBase, string strSql) | |||||
{ | |||||
throw new NotImplementedException(); | |||||
} | |||||
} | } | ||||
} | } |
@@ -56,6 +56,11 @@ namespace CnasSynchronusClient | |||||
return oracleDatabaseService.InsertDataToCNASTable(dt, dataBase, syncParamasInfos, strInstrumentColumn, lstFixedValue); | return oracleDatabaseService.InsertDataToCNASTable(dt, dataBase, syncParamasInfos, strInstrumentColumn, lstFixedValue); | ||||
} | } | ||||
public bool InsertTableData(DataBaseInfo dataBase, string strSql) | |||||
{ | |||||
throw new System.NotImplementedException(); | |||||
} | |||||
public bool TestConnect(DataBaseInfo dataBase) | public bool TestConnect(DataBaseInfo dataBase) | ||||
{ | { | ||||
return oracleDatabaseService.TestConnect(dataBase.DBHost, dataBase.DBName, dataBase.DBUser, dataBase.DBPwd, dataBase.DBPort); | return oracleDatabaseService.TestConnect(dataBase.DBHost, dataBase.DBName, dataBase.DBUser, dataBase.DBPwd, dataBase.DBPort); | ||||
@@ -7,6 +7,7 @@ using MySql.Data.MySqlClient; | |||||
using CnasSynchronousCommon; | using CnasSynchronousCommon; | ||||
using CnasSynchrousModel; | using CnasSynchrousModel; | ||||
using System.Reflection; | using System.Reflection; | ||||
using Devart.Common; | |||||
namespace CnasSynchronusDAL | namespace CnasSynchronusDAL | ||||
{ | { | ||||
@@ -554,7 +555,11 @@ namespace CnasSynchronusDAL | |||||
return dtNewFormat; | return dtNewFormat; | ||||
} | } | ||||
//获取某个表的数据 | |||||
/// <summary> | |||||
/// 获取某个表的数据 | |||||
/// </summary> | |||||
/// <param name="strSql"></param> | |||||
/// <returns></returns> | |||||
public DataTable GetTableData(string strSql) | public DataTable GetTableData(string strSql) | ||||
{ | { | ||||
DataTable dt = new DataTable(); | DataTable dt = new DataTable(); | ||||
@@ -569,5 +574,24 @@ namespace CnasSynchronusDAL | |||||
return dt; | return dt; | ||||
} | } | ||||
/// <summary> | |||||
/// 插入某个表的数据 | |||||
/// </summary> | |||||
/// <param name="strSql"></param> | |||||
/// <returns></returns> | |||||
public bool InsertTableData(string strSql) | |||||
{ | |||||
try | |||||
{ | |||||
return MySQLHelper.ExecuteNonQuery(strSql)>0; | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
AppLog.Error(ex.Message); | |||||
} | |||||
return false; | |||||
} | |||||
} | } | ||||
} | } |
@@ -67,6 +67,11 @@ namespace CnasSynchronusDAL | |||||
return baseDAL.InsertCnasData(dt, syncParamasInfos, strInstrumentColumn, lstFixedValue); | return baseDAL.InsertCnasData(dt, syncParamasInfos, strInstrumentColumn, lstFixedValue); | ||||
} | } | ||||
public bool InsertTableData(DataBaseInfo dataBase, string strSql) | |||||
{ | |||||
throw new NotImplementedException(); | |||||
} | |||||
public bool TestConnect(string strHost, string strName, string strUser, string strPwd, string strPort) | public bool TestConnect(string strHost, string strName, string strUser, string strPwd, string strPort) | ||||
{ | { | ||||
SQLDB2DAL basedal = new SQLDB2DAL(); | SQLDB2DAL basedal = new SQLDB2DAL(); | ||||
@@ -110,7 +110,12 @@ namespace CnasSynchronusDAL | |||||
} | } | ||||
//获取某个表的数据 | |||||
/// <summary> | |||||
/// 获取某个表的数据 | |||||
/// </summary> | |||||
/// <param name="dataBase"></param> | |||||
/// <param name="strSql"></param> | |||||
/// <returns></returns> | |||||
public DataTable GetTableData(DataBaseInfo dataBase, string strSql) | public DataTable GetTableData(DataBaseInfo dataBase, string strSql) | ||||
{ | { | ||||
MySQLDAL mySQLBase = new MySQLDAL(); | MySQLDAL mySQLBase = new MySQLDAL(); | ||||
@@ -119,5 +124,19 @@ namespace CnasSynchronusDAL | |||||
return mySQLBase.GetTableData(strSql); | return mySQLBase.GetTableData(strSql); | ||||
} | } | ||||
/// <summary> | |||||
/// 插入某个表的数据 | |||||
/// </summary> | |||||
/// <param name="dataBase"></param> | |||||
/// <param name="strSql"></param> | |||||
/// <returns></returns> | |||||
public bool InsertTableData(DataBaseInfo dataBase, string strSql) | |||||
{ | |||||
MySQLDAL mySQLBase = new MySQLDAL(); | |||||
mySQLBase.CreateConnectString(dataBase.DBHost, dataBase.DBPort, dataBase.DBName, dataBase.DBUser, dataBase.DBPwd); | |||||
return mySQLBase.InsertTableData(strSql); | |||||
} | |||||
} | } | ||||
} | } |
@@ -86,6 +86,11 @@ namespace CnasSynchronusDAL | |||||
return OracleDAL.InsertCnasData(dt, syncParamasInfos, lstFixedValue, strInstrumentColumn); | return OracleDAL.InsertCnasData(dt, syncParamasInfos, lstFixedValue, strInstrumentColumn); | ||||
} | } | ||||
public bool InsertTableData(DataBaseInfo dataBase, string strSql) | |||||
{ | |||||
throw new NotImplementedException(); | |||||
} | |||||
public bool TestConnect(string strHost, string strName, string strUser, string strPwd, string strPort) | public bool TestConnect(string strHost, string strName, string strUser, string strPwd, string strPort) | ||||
{ | { | ||||
OracleDAL.CreateConnection(strHost, strName, strUser, strPwd, strPort); | OracleDAL.CreateConnection(strHost, strName, strUser, strPwd, strPort); | ||||
@@ -44,7 +44,7 @@ namespace CnasSynchronusIDAL | |||||
/// <param name="syncParamasInfos"></param> | /// <param name="syncParamasInfos"></param> | ||||
/// <param name="lstFixedValue"></param> | /// <param name="lstFixedValue"></param> | ||||
/// <returns></returns> | /// <returns></returns> | ||||
int InsertDataToCNASTable(DataTable dt, DataBaseInfo dataBase, List<SyncParamasInfo> syncParamasInfos,string strInstrumentColumn,List<CnasConditionMapValue> lstFixedValue = null); | |||||
int InsertDataToCNASTable(DataTable dt, DataBaseInfo dataBase, List<SyncParamasInfo> syncParamasInfos, string strInstrumentColumn, List<CnasConditionMapValue> lstFixedValue = null); | |||||
/// <summary> | /// <summary> | ||||
/// 获取所有表的数据类型和长度 | /// 获取所有表的数据类型和长度 | ||||
@@ -61,7 +61,7 @@ namespace CnasSynchronusIDAL | |||||
/// <param name="strTableName"></param> | /// <param name="strTableName"></param> | ||||
/// <param name="strDateColumn"></param> | /// <param name="strDateColumn"></param> | ||||
/// <returns></returns> | /// <returns></returns> | ||||
string GetMaxTimeByTableName(DataBaseInfo dataBase, string strTableName, string strDateColumn,string strInstrumentColumn,string strInstrumentValue); | |||||
string GetMaxTimeByTableName(DataBaseInfo dataBase, string strTableName, string strDateColumn, string strInstrumentColumn, string strInstrumentValue); | |||||
/// <summary> | /// <summary> | ||||
/// 根据用户名密码获取登陆信息 | /// 根据用户名密码获取登陆信息 | ||||
@@ -87,5 +87,14 @@ namespace CnasSynchronusIDAL | |||||
/// <param name="strSql"></param> | /// <param name="strSql"></param> | ||||
/// <returns></returns> | /// <returns></returns> | ||||
DataTable GetTableData(DataBaseInfo dataBase, string strSql); | DataTable GetTableData(DataBaseInfo dataBase, string strSql); | ||||
/// <summary> | |||||
/// 插入某个表的数据 | |||||
/// </summary> | |||||
/// <param name="dataBase"></param> | |||||
/// <param name="strSql"></param> | |||||
/// <returns></returns> | |||||
bool InsertTableData(DataBaseInfo dataBase, string strSql); | |||||
} | } | ||||
} | } |