Public Access
1
0
mirror of https://github.com/iscmt/event-parser.git synced 2026-04-04 14:02:24 -04:00
Files
event-parser/gui/EventParser/frmConnection.cs
2020-04-14 18:52:03 -04:00

165 lines
5.9 KiB
C#

using System;
using System.Data.SqlClient;
using System.Diagnostics;
using System.Windows.Forms;
namespace EventParser.GUI
{
public partial class frmConnection : Form
{
public ConnectionSettings connectionSettings = null;// new ConnectionSettings();
private string ConnectionString
{
get
{
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
builder.DataSource = txtServerName.Text.Trim();
if (cboAuthenticationType.SelectedIndex == 0)
{
builder.IntegratedSecurity = true;
}
else
{
builder.UserID = txtUserName.Text;
builder.Password = txtPassword.Text;
}
if (!string.IsNullOrEmpty(cboDatabases.Text))
builder.InitialCatalog = cboDatabases.Text.Trim();
return builder.ConnectionString;
}
}
public class ConnectionSettings
{
public enum ActionsIfTableExist
{
Drop,
Append,
Skip
}
public string ConnectionString { get; set; }
public int ComandTimeout { get; set; } = 60;
public bool DropAndRecreateTables { get; set; } = false;
}
public frmConnection()
{
InitializeComponent();
cboAuthenticationType.SelectedIndex = 0;
}
private void cboAuthenticationType_SelectedIndexChanged(object sender, EventArgs e)
{
bool isSqlAuth = (cboAuthenticationType.SelectedIndex == 1);
lblUserName.Enabled = isSqlAuth;
lblPassword.Enabled = isSqlAuth;
txtUserName.Enabled = isSqlAuth;
txtPassword.Enabled = isSqlAuth;
cboDatabases.Items.Clear();
}
private void btnOK_Click(object sender, EventArgs e)
{
this.connectionSettings = new ConnectionSettings();
this.connectionSettings.ConnectionString = this.ConnectionString;
Arguments.connString = this.ConnectionString;
Arguments.connString = (this.ConnectionString);
Debug.Write(Arguments.connString);
this.connectionSettings.ComandTimeout = Convert.ToInt32(updTimeout.Value);
//this.connectionSettings.DropAndRecreateTables = chkDropCreate.Checked;
this.DialogResult = DialogResult.OK;
this.Close();
}
private void cboDatabases_DropDown(object sender, EventArgs e)
{
if (CheckRequiredFields(true) == false) return;
LoadDatabases();
if (cboDatabases.Items.Count != 0)
cboDatabases.SelectedIndex = 0;
}
private bool CheckRequiredFields(bool showMessage = true)
{
if (string.IsNullOrEmpty(txtServerName.Text))
{
if (showMessage)
MessageBox.Show("Server Name must be specified.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return false;
}
if (cboAuthenticationType.SelectedIndex == 1 && (string.IsNullOrEmpty(txtUserName.Text) || string.IsNullOrEmpty(txtPassword.Text)))
{
if (showMessage)
MessageBox.Show("User ID and Password must be specified.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return false;
}
return true;
}
private void LoadDatabases()
{
using (SqlConnection cnn = new SqlConnection(ConnectionString))
{
using (SqlCommand cmd = new SqlCommand("SELECT name FROM master..sysdatabases ORDER BY name ASC", cnn))
{
cboDatabases.Items.Clear();
SqlDataReader dtr;
try
{
cnn.Open();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
Console.WriteLine(ex.ToString());
return;
}
dtr = cmd.ExecuteReader();
while (dtr.Read())
cboDatabases.Items.Add(dtr[0].ToString());
}
}
}
private void btnTest_Click(object sender, EventArgs e)
{
using (SqlConnection cnn = new SqlConnection(ConnectionString))
{
try
{
cnn.Open();
MessageBox.Show("Test connection succeeded.", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
private void frmConnection_Load(object sender, EventArgs e)
{
if (this.connectionSettings == null)
return;
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(this.connectionSettings.ConnectionString);
txtServerName.Text = builder.DataSource;
if (builder.IntegratedSecurity == true)
cboAuthenticationType.SelectedIndex = 0;
cboDatabases.Text = builder.InitialCatalog;
updTimeout.Value = this.connectionSettings.ComandTimeout;
//chkDropCreate.Checked = this.connectionSettings.DropAndRecreateTables;
}
private void btnCancel_Click(object sender, EventArgs e)
{
}
}
}