I am using VS2005 C# and SQL Server 2005.
I have an Excel file import which imports the data in a spreadsheet into the database.
However, in order to improve on it, I would like to implement some kind of ‘logging’ to each import.
For every row of data that the user import, there will be a column which will store the logged-in-user’s name, which is User.Identity.Name.
Below is a code snippet of my excel import code:
// Create Connection to Excel Workbook
string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strUploadFileName + ";Extended Properties=Excel 8.0;";
using (OleDbConnection connection = new OleDbConnection(connStr))
{
OleDbCommand command = new OleDbCommand("Select [User ID], [Username], [Age], [Address], [Date of Reg], [Membership Type], [Membership Expiry] FROM [sheet1$]", connection);
//would like to insert 'User.Identity.Name' into column 'userlog'
connection.Open();
Console.WriteLine("Connection Opened");
// Create DbDataReader to Data Worksheet
using (DbDataReader dr = command.ExecuteReader())
{
// SQL Server Connection String
string sqlConnectionString = "Data Source=<DS>";
// Bulk Copy to SQL Server
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnectionString))
{
bulkCopy.DestinationTableName = "UserData";
bulkCopy.WriteToServer(dr);
}
}
}
I have no idea how I can do it because the SELECT statement takes only variable from the sheet1$ of the data which I import, so I have no clue how I can include another variable from another source into the sql query. I need suggestions from experienced.
Thank you guys for any help in advance.
EDIT:
I have another import method for .csv type. As the SELECT statement is not the same as the one i used for .xls, how should I change it? Below is a code snippet:
string dir = @"C:\...\UploadFiles";
string mycsv = DateTime.Now.ToString("yyyyMMddHHmmss") + strExtension;
// Save the Excel spreadsheet on server.
UserImport.SaveAs(dir + mycsv);
// Create Connection to Excel Workbook
string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dir +
";Extended Properties=Text;";
using (OleDbConnection ExcelConnection = new OleDbConnection(connStr))
{
OleDbCommand ExcelCommand = new OleDbCommand(
"SELECT [User ID], [Username], [Age], [Address],
[Date of Reg], [Membership Type], [Membership Expiry]
FROM " + mycsv, ExcelConnection);
OleDbDataAdapter ExcelAdapter = new OleDbDataAdapter(ExcelCommand);
ExcelConnection.Open();
using (DbDataReader dr = ExcelCommand.ExecuteReader())
{
// SQL Server Connection String
string sqlConnectionString = "Data Source=<DS>";
// Bulk Copy to SQL Server
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnectionString))
{
bulkCopy.DestinationTableName = "UserData";
bulkCopy.WriteToServer(dr);
//Response.Write("<script>alert('User Data imported');</script>");
}
}
}
Thank you
You may try extending your select clause.
Updated according to your edited question