|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.ComponentModel;
|
|
|
|
|
using System.Data;
|
|
|
|
|
using System.Drawing;
|
|
|
|
|
using System.IO;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Windows.Forms;
|
|
|
|
|
|
|
|
|
|
using ICSharpCode.Core;
|
|
|
|
|
using ICSharpCode.Data.Core.Interfaces;
|
|
|
|
|
using ICSharpCode.Data.Core.DatabaseObjects;
|
|
|
|
|
|
|
|
|
|
using Mesnac.Basic;
|
|
|
|
|
using Mesnac.Gui.Edit.Global;
|
|
|
|
|
using Mesnac.Gui.Edit.Common;
|
|
|
|
|
using Mesnac.Gui.Edit.ViewContent;
|
|
|
|
|
using Mesnac.Gui.Edit.Pad;
|
|
|
|
|
|
|
|
|
|
namespace Mesnac.Gui.Edit.Dialog
|
|
|
|
|
{
|
|
|
|
|
public partial class FrmNewDataSource : Form
|
|
|
|
|
{
|
|
|
|
|
private string _dataSourceName;
|
|
|
|
|
private DataSourceItem _dataSourceItem = null;
|
|
|
|
|
private string caption = StringParser.Parse(ResourceService.GetString("Mesnac_Dialog_Caption"));
|
|
|
|
|
private string msg = String.Empty;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public FrmNewDataSource()
|
|
|
|
|
{
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
this.InitUIMethod();
|
|
|
|
|
this.InitMethod();
|
|
|
|
|
}
|
|
|
|
|
public FrmNewDataSource(string dataSourceName)
|
|
|
|
|
{
|
|
|
|
|
this._dataSourceName = dataSourceName;
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
this.InitUIMethod();
|
|
|
|
|
this.InitMethod2();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 初始化界面元素
|
|
|
|
|
/// </summary>
|
|
|
|
|
public void InitUIMethod()
|
|
|
|
|
{
|
|
|
|
|
this.Text = StringParser.Parse(ResourceService.GetString("Mesnac_Dialog_FrmNewDataSource_Text")); //数据源向导
|
|
|
|
|
this.label1.Text = StringParser.Parse(ResourceService.GetString("Mesnac_Dialog_FrmNewDataSource_label1")); //数据源名称
|
|
|
|
|
this.label2.Text = StringParser.Parse(ResourceService.GetString("Mesnac_Dialog_FrmNewDataSource_label2")); //数据库驱动
|
|
|
|
|
this.label3.Text = StringParser.Parse(ResourceService.GetString("Mesnac_Dialog_FrmNewDataSource_label3")); //服务器
|
|
|
|
|
this.label4.Text = StringParser.Parse(ResourceService.GetString("Mesnac_Dialog_FrmNewDataSource_label4")); //用户名
|
|
|
|
|
this.label5.Text = StringParser.Parse(ResourceService.GetString("Mesnac_Dialog_FrmNewDataSource_label5")); //密码
|
|
|
|
|
this.label6.Text = StringParser.Parse(ResourceService.GetString("Mesnac_Dialog_FrmNewDataSource_label6")); //数据库
|
|
|
|
|
this.label7.Text = StringParser.Parse(ResourceService.GetString("Mesnac_Dialog_FrmNewDataSource_label7")); //连接超时
|
|
|
|
|
this.btnTestConnect.Text = StringParser.Parse(ResourceService.GetString("Mesnac_Dialog_FrmNewDataSource_btnTestConnect")); //测试连接
|
|
|
|
|
this.btnOk.Text = StringParser.Parse(ResourceService.GetString("Mesnac_Dialog_btnOK"));
|
|
|
|
|
this.btnCancel.Text = StringParser.Parse(ResourceService.GetString("Mesnac_Dialog_btnCancel"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 新建时,初始化的方法
|
|
|
|
|
/// </summary>
|
|
|
|
|
public void InitMethod()
|
|
|
|
|
{
|
|
|
|
|
//获取默认数据源名称
|
|
|
|
|
string dataSourceName = DataSourceFactory.Instance.GetNextDataSourceName();
|
|
|
|
|
this.txtDataSourceName.Text = dataSourceName;
|
|
|
|
|
//加载数据驱动类型
|
|
|
|
|
this.cmbDataDrivers.DataSource = DatabaseDriver.DatabaseDrivers;
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 修改时,初始化的方法
|
|
|
|
|
/// </summary>
|
|
|
|
|
public void InitMethod2()
|
|
|
|
|
{
|
|
|
|
|
this._dataSourceItem = DataSourceFactory.Instance.DataSources[this._dataSourceName];
|
|
|
|
|
this.txtDataSourceName.Text = this._dataSourceName;
|
|
|
|
|
this.txtDataSourceName.ReadOnly = true;
|
|
|
|
|
//加载数据驱动类型
|
|
|
|
|
this.cmbDataDrivers.DataSource = DatabaseDriver.DatabaseDrivers;
|
|
|
|
|
if (this._dataSourceItem != null)
|
|
|
|
|
{
|
|
|
|
|
foreach (IDatabaseDriver driver in this.cmbDataDrivers.Items)
|
|
|
|
|
{
|
|
|
|
|
if (driver.Name == this._dataSourceItem.Driver)
|
|
|
|
|
{
|
|
|
|
|
this.cmbDataDrivers.SelectedItem = driver;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this.txtServer.Text = this._dataSourceItem.Server;
|
|
|
|
|
this.txtUserName.Text = this._dataSourceItem.UserName;
|
|
|
|
|
this.txtPassword.Text = this._dataSourceItem.Password;
|
|
|
|
|
this.cmbDataBase.Text = this._dataSourceItem.Database;
|
|
|
|
|
this.txtConnectionTimeout.Text = this._dataSourceItem.ConnectionTimeout.ToString();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 验证窗体条件
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns>验证成功返回true,否则返回false</returns>
|
|
|
|
|
private bool ValidateForm()
|
|
|
|
|
{
|
|
|
|
|
if (String.IsNullOrEmpty(this.txtDataSourceName.Text))
|
|
|
|
|
{
|
|
|
|
|
this.msg = StringParser.Parse(ResourceService.GetString("Mesnac_Dialog_FrmNewDataSource_Msg1")); //请输入数据源名称!
|
|
|
|
|
MessageBox.Show(this.msg, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
|
|
|
this.txtDataSourceName.Focus();
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
if (this.cmbDataDrivers.SelectedIndex == -1)
|
|
|
|
|
{
|
|
|
|
|
this.msg = StringParser.Parse(ResourceService.GetString("Mesnac_Dialog_FrmNewDataSource_Msg2")); //请选择数据源类型!
|
|
|
|
|
MessageBox.Show(this.msg, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
|
|
|
this.cmbDataDrivers.Focus();
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
if (String.IsNullOrEmpty(this.txtServer.Text))
|
|
|
|
|
{
|
|
|
|
|
this.msg = StringParser.Parse(ResourceService.GetString("Mesnac_Dialog_FrmNewDataSource_Msg3")); //请输入服务器!
|
|
|
|
|
MessageBox.Show(this.msg, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
|
|
|
this.txtServer.Focus();
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
if (String.IsNullOrEmpty(this.txtUserName.Text))
|
|
|
|
|
{
|
|
|
|
|
this.msg = StringParser.Parse(ResourceService.GetString("Mesnac_Dialog_FrmNewDataSource_Msg4")); //请输入用户名!
|
|
|
|
|
MessageBox.Show(this.msg, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
|
|
|
this.txtUserName.Focus();
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
//if (String.IsNullOrEmpty(this.txtPassword.Text))
|
|
|
|
|
//{
|
|
|
|
|
// this.msg = StringParser.Parse(ResourceService.GetString("Mesnac_Dialog_FrmNewDataSource_Msg5")); //请输入密码!
|
|
|
|
|
// MessageBox.Show(this.msg, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
|
|
|
// this.txtPassword.Focus();
|
|
|
|
|
// return false;
|
|
|
|
|
//}
|
|
|
|
|
if (String.IsNullOrEmpty(this.txtConnectionTimeout.Text))
|
|
|
|
|
{
|
|
|
|
|
this.msg = StringParser.Parse(ResourceService.GetString("Mesnac_Dialog_FrmNewDataSource_Msg12")); //请输入连接超时时间,单位(秒)!
|
|
|
|
|
MessageBox.Show(this.msg, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
|
|
|
this.txtConnectionTimeout.Focus();
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
///判断连接超时是否为数字
|
|
|
|
|
bool flag = true;
|
|
|
|
|
string strConnectionTimeOut = this.txtConnectionTimeout.Text.Trim();
|
|
|
|
|
foreach (char c in strConnectionTimeOut)
|
|
|
|
|
{
|
|
|
|
|
if (!Char.IsDigit(c))
|
|
|
|
|
{
|
|
|
|
|
flag = false;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (flag == false)
|
|
|
|
|
{
|
|
|
|
|
this.msg = StringParser.Parse(ResourceService.GetString("Mesnac_Dialog_FrmNewDataSource_Msg13")); //连接超时必须为整数,单位(秒)!
|
|
|
|
|
MessageBox.Show(this.msg, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
|
|
|
this.txtConnectionTimeout.Focus();
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
if (String.IsNullOrEmpty(this._dataSourceName))
|
|
|
|
|
{
|
|
|
|
|
if (DataSourceFactory.Instance.IsExists(this.txtDataSourceName.Text))
|
|
|
|
|
{
|
|
|
|
|
this.msg = StringParser.Parse(ResourceService.GetString("Mesnac_Dialog_FrmNewDataSource_Msg6")); //数据源已存在,请更改数据源名称!
|
|
|
|
|
MessageBox.Show(this.msg, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
|
|
|
this.txtDataSourceName.Focus();
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 测试连接
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="sender"></param>
|
|
|
|
|
/// <param name="e"></param>
|
|
|
|
|
private void btnTestConnect_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
//验证
|
|
|
|
|
if (!this.ValidateForm())
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
IDatabaseDriver driver = this.cmbDataDrivers.SelectedItem as IDatabaseDriver;
|
|
|
|
|
if (driver != null)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
IDatasource datasource = driver.CreateNewIDatasource( this.txtServer.Text , this.txtUserName.Text , this.txtPassword.Text );
|
|
|
|
|
driver.PopulateDatabases(datasource);
|
|
|
|
|
if (datasource.Databases != null)
|
|
|
|
|
{
|
|
|
|
|
this.cmbDataBase.DataSource = datasource.Databases;
|
|
|
|
|
|
|
|
|
|
if (!String.IsNullOrEmpty(this._dataSourceName))
|
|
|
|
|
{
|
|
|
|
|
foreach (IDatabase db in this.cmbDataBase.Items)
|
|
|
|
|
{
|
|
|
|
|
if (db.ToString() == this._dataSourceItem.Database)
|
|
|
|
|
{
|
|
|
|
|
this.cmbDataBase.SelectedItem = db;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
this.msg = StringParser.Parse(ResourceService.GetString("Mesnac_Dialog_FrmNewDataSource_Msg7")); //连接测试成功,请选择数据库创建数据源!
|
|
|
|
|
MessageBox.Show(this.msg, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
this.msg = StringParser.Parse(ResourceService.GetString("Mesnac_Dialog_FrmNewDataSource_Msg8")); //连接测试失败,请检查网络连接状况!
|
|
|
|
|
MessageBox.Show(this.msg, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
this.msg = StringParser.Parse(ResourceService.GetString("Mesnac_Dialog_FrmNewDataSource_Msg9")); //连接测试失败,原因:缺少数据驱动!
|
|
|
|
|
MessageBox.Show(this.msg, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
this.msg = StringParser.Parse(ResourceService.GetString("Mesnac_Dialog_FrmNewDataSource_Msg10")); //连接测试失败,原因:{0}!
|
|
|
|
|
this.msg = String.Format(this.msg, ex.Message);
|
|
|
|
|
MessageBox.Show(this.msg, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnOk_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
//验证
|
|
|
|
|
if (!this.ValidateForm())
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (this.cmbDataBase.SelectedIndex == -1)
|
|
|
|
|
{
|
|
|
|
|
this.msg = StringParser.Parse(ResourceService.GetString("Mesnac_Dialog_FrmNewDataSource_Msg11")); //请选择数据库!
|
|
|
|
|
MessageBox.Show(this.msg, this.caption, MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
|
|
|
this.cmbDataBase.Focus();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DataSourceItem dataSourceItem = new DataSourceItem();
|
|
|
|
|
dataSourceItem.Name = this.txtDataSourceName.Text.Trim();
|
|
|
|
|
IDatabaseDriver driver = this.cmbDataDrivers.SelectedItem as IDatabaseDriver;
|
|
|
|
|
dataSourceItem.Driver = driver.Name;
|
|
|
|
|
dataSourceItem.DriverAssembly = driver.GetType().Assembly.FullName;
|
|
|
|
|
dataSourceItem.DriverClass = driver.GetType().FullName;
|
|
|
|
|
dataSourceItem.Server = this.txtServer.Text.Trim();
|
|
|
|
|
dataSourceItem.UserName = this.txtUserName.Text.Trim();
|
|
|
|
|
dataSourceItem.Password = this.txtPassword.Text.Trim();
|
|
|
|
|
IDatabase database = this.cmbDataBase.SelectedItem as IDatabase;
|
|
|
|
|
dataSourceItem.Database = database.Name;
|
|
|
|
|
int intConnectionTimeout = 5;
|
|
|
|
|
int.TryParse(this.txtConnectionTimeout.Text, out intConnectionTimeout);
|
|
|
|
|
dataSourceItem.ConnectionTimeout = intConnectionTimeout;
|
|
|
|
|
dataSourceItem.DataSourceClass = database.GetType().FullName;
|
|
|
|
|
|
|
|
|
|
if (!String.IsNullOrEmpty(this._dataSourceName))
|
|
|
|
|
{
|
|
|
|
|
//修改
|
|
|
|
|
DataSourceFactory.Instance.Modify(dataSourceItem.Name, dataSourceItem);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//添加
|
|
|
|
|
DataSourceFactory.Instance.Add(dataSourceItem.Name, dataSourceItem);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DisplayUtil<ProjectWindow>.SaveProjectDataSource(); //保存至文件
|
|
|
|
|
|
|
|
|
|
this.DialogResult = System.Windows.Forms.DialogResult.OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void btnCancel_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
this.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|