p2p.wrox.com Forums

p2p.wrox.com Forums (http://p2p.wrox.com/)
-   C# 2008 aka C# 3.0 (http://p2p.wrox.com/c-2008-aka-c-3-0-354/)
-   -   Select SQL Server database based on combo box selection (http://p2p.wrox.com/c-2008-aka-c-3-0/86610-select-sql-server-database-based-combo-box-selection.html)

sharonc February 9th, 2012 10:27 AM

Select SQL Server database based on combo box selection
 
Hi,
I have a windows form with a "ComboBox" on it. The "ComboBox" has the words "Production" and "Development" in it. If the user selects "Production", I need my C# code to point to the Production database. If the user selects "Development", I need my C# code to point to the Development database. Can someone please tell me how to do this?

Sorry, I'm still not sure what to do. I am new to C#, so it is confusing. Here is my code:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Runtime.InteropServices;
using Microsoft.Win32.SafeHandles;
using System.Data.SqlClient;
using System.Data.SqlTypes;


namespace GEOINT
{
public partial class frmForm : Form
{
public frmForm()
{
InitializeComponent();
}
//Insert using Filestream, file into SQL Server Table
private void btnInsert_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDlg = new OpenFileDialog();
openFileDlg.InitialDirectory = Directory.GetCurrentDirectory();
if (openFileDlg.ShowDialog() == DialogResult.OK)
{
FileInfo fi = new FileInfo(openFileDlg.FileName);
FileStream fs = new FileStream(fi.FullName, FileMode.Open, FileAccess.Read);
BinaryReader rdr = new BinaryReader(fs);
byte[] fileData = rdr.ReadBytes((int)fs.Length);
rdr.Close();
fs.Close();

string cs = @"server=JITC-PC\GEOINT;database=DEV_GEOINT;integrated security=SSPI";
using (SqlConnection con = new SqlConnection(cs))
{
con.Open();
string sql = "INSERT INTO Filestream_Files (Row_Guid_Col_ID, fData, fName) VALUES (default, @fData, @fName)";
SqlCommand cmd = new SqlCommand(sql, con);
cmd.Parameters.Add("@fData", SqlDbType.Image, fileData.Length).Value = fileData;
cmd.Parameters.Add("@fName", SqlDbType.NVarChar).Value = fi.Name;
cmd.ExecuteNonQuery();

con.Close();
}
MessageBox.Show(fi.FullName, "Selected Document/Picture Inserted!", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
private void btnExit_Click(object sender, EventArgs e)
{
this.Close();
}

private void frmForm_Load(object sender, EventArgs e)
{

}
//Load LAST selected file to SQL Server table
private void btnRetrieve_Click(object sender, EventArgs e)
{
string cs = @"server=JITC-PC\GEOINT;database=DEV_GEOINT;integrated security=SSPI";
using (SqlConnection con = new SqlConnection(cs))
{

con.Open();
SqlTransaction txn = con.BeginTransaction();
string sql = "SELECT fData.PathName(), GET_FILESTREAM_TRANSACTION_CONTEXT(), fName fID FROM Filestream_Files WHERE fID = (SELECT MAX(fID)FROM Filestream_Files)";
SqlCommand cmd = new SqlCommand(sql, con, txn);
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{

string filePath = rdr[0].ToString();
byte[] objContext = (byte[])rdr[1];
string fName = rdr[2].ToString();

SqlFileStream sfs = new SqlFileStream(filePath, objContext, System.IO.FileAccess.Read);

byte[] buffer = new byte[(int)sfs.Length];
sfs.Read(buffer, 0, buffer.Length);
sfs.Close();

//Files in the table have been written to a directory for viewing.

//string filename = @"C:\Development\Geoint\Geoint\bin\debug;
string filename = fName;

System.IO.FileStream fs = new System.IO.FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.Write);
fs.Write(buffer, 0, buffer.Length);
fs.Flush();
fs.Close();

}

rdr.Close();
txn.Commit();
con.Close();
}
}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{

}

}

}

thanks,
Sharon
private void frmForm_Load(object sender, EventArgs e)
{

}
//Load LAST selected file to SQL Server table
private void btnRetrieve_Click(object sender, EventArgs e)
{
string cs = @"server=JITC-PC\GEOINT;database=DEV_GEOINT;integrated security=SSPI";
using (SqlConnection con = new SqlConnection(cs))
{

con.Open();
SqlTransaction txn = con.BeginTransaction();
string sql = "SELECT fData.PathName(), GET_FILESTREAM_TRANSACTION_CONTEXT(), fName fID FROM Filestream_Files WHERE fID = (SELECT MAX(fID)FROM Filestream_Files)";
SqlCommand cmd = new SqlCommand(sql, con, txn);
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{

string filePath = rdr[0].ToString();
byte[] objContext = (byte[])rdr[1];
string fName = rdr[2].ToString();

SqlFileStream sfs = new SqlFileStream(filePath, objContext, System.IO.FileAccess.Read);

byte[] buffer = new byte[(int)sfs.Length];
sfs.Read(buffer, 0, buffer.Length);
sfs.Close();

//Files in the table have been written to a directory for viewing.

//string filename = @"C:\Development\Geoint\Geoint\bin\debug;
string filename = fName;

System.IO.FileStream fs = new System.IO.FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.Write);
fs.Write(buffer, 0, buffer.Length);
fs.Flush();
fs.Close();

}

rdr.Close();
txn.Commit();
con.Close();
}
}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{

}

}

}

Shasur February 9th, 2012 08:35 PM

Hi

Assuming the tables etc to remain the same in Production and Development database all you need to do is change the connection string based on the ComboBox

You can handle that like

string cs_dev = @"server=JITC-PC\GEOINT;database=DEV_GEOINT;integrated security=SSPI";

string cs_prod = @"server=JITC-PC\GEOINT;database=PROD_GEOINT;integrated security=SSPI";


private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if comboBox1.text = 'Production'
{
cs = cs_prod
}
else
{
cs = cs_dev
}
}

just put appropriate syntax and it should work. All you do here is based on the Selection you assign appropriate connection string and the rest should be find

As your program matures you can have these connection string as part of config file and set them

Cheers
Shasur

sharonc February 10th, 2012 09:13 AM

select database based on combo box selection
 
Thanks for your help and quick response. Here is the code I used to fix my problems:

Code:

string cs = "";

                if (comboBox1.SelectedIndex == 0)
                {
                    cs = @"server=JITC-PC\GEOINT;database=Production_GEOINT;integrated security=SSPI";
                }
                else if (comboBox1.SelectedIndex == 1)
                {   
                  cs = @"server=JITC-PC\GEOINT;database=DEV_GEOINT;integrated security=SSPI";
                }


The button code looks like this:



private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
        }



All times are GMT -4. The time now is 11:42 PM.

Powered by vBulletin® Version 3.7.0
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
2013 John Wiley & Sons, Inc.