C # VS2005 Синтаксическая ошибка (отсутствует оператор) в выражении запроса - PullRequest
0 голосов
/ 09 ноября 2011

Я использую VS2005 C # и SQL Server 2005. В настоящее время я делаю импорт данных из файла .CSV excel в мою базу данных SQL Server.

У меня возникла ошибка, которая, как я полагаю, связана с моим оператором sql. Ниже мой код:

protected void Button1_Click(object sender, EventArgs e)
    {
        if (FileUpload1.HasFile)
        {
            // Get the name of the Excel spreadsheet to upload. 
            string strFileName = Server.HtmlEncode(FileUpload1.FileName);

            // Get the extension of the Excel spreadsheet. 
            string strExtension = Path.GetExtension(strFileName);

            // Validate the file extension. 
            if (strExtension != ".xls" && strExtension != ".xlsx" && strExtension != ".csv" && strExtension != ".csv")
            {
                Response.Write("<script>alert('Failed to import DEM Conflicting Role Datasheet. Cause: Invalid Excel file.');</script>");
                return;
            }

            // Generate the file name to save. 
            string dir = @"C:\Documents and Settings\rhlim\My Documents\Visual Studio 2005\WebSites\SoD\UploadFiles\";
            string mycsv = DateTime.Now.ToString("yyyyMMddHHmmss") + strExtension;
            // Save the Excel spreadsheet on server. 
            FileUpload1.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 [TABLES] FROM" + mycsv, ExcelConnection);

            OleDbDataAdapter ExcelAdapter = new OleDbDataAdapter(ExcelCommand);

            ExcelConnection.Open();

            using (DbDataReader dr = ExcelCommand.ExecuteReader())
            {
                // SQL Server Connection String
                string sqlConnectionString = "Data Source=<IP>;Initial Catalog=<DB>;User ID=<UID>;Password=<PW>";

                // Bulk Copy to SQL Server
                using (SqlBulkCopy bulkCopy =
                           new SqlBulkCopy(sqlConnectionString))
                {
                    bulkCopy.DestinationTableName = "DEMUserRoles";
                    bulkCopy.WriteToServer(dr);
                    Response.Write("<script>alert('DEM User Data imported');</script>");

                }
            }
            }
        }
        else Response.Write("<script>alert('Failed to import DEM User Roles Data. Cause: No file found.');</script>");
    }

Я получаю ошибку

"Синтаксическая ошибка (отсутствует оператор) в выражении запроса '[Description] FROM20111109164041.csv'."

при выполнении с использованием (DbDataReader dr = ExcelCommand.ExecuteReader ()). Описание - последний столбец в моей базе данных.

Кто-нибудь знает, что не так с моим кодом? Спасибо

enter image description here

Ответы [ 3 ]

4 голосов
/ 09 ноября 2011

Вам нужен пробел между ОТ и файлом csv!:)

OleDbCommand ExcelCommand = new OleDbCommand("SELECT [TABLES] FROM " + mycsv, ExcelConnection);

Вот почему я всегда использую метод string.Format, вы гораздо лучше видите, как будет выглядеть финальная строка:

OleDbCommand ExcelCommand = new OleDbCommand(string.Format("SELECT [TABLES] FROM {0}",mycsv), ExcelConnection);
2 голосов
/ 09 ноября 2011

Похоже, вам нужно поместить пробел между FROM и CSV-файлом: '[Описание] ОТ 20111109164041.csv'

0 голосов
/ 03 ноября 2015

Если вы добавляете строку, вы должны поместить ее в одинарные кавычки

OleDbDataAdapter da = new OleDbDataAdapter("select * , '" + tempUid + "' as [UID] from [" + sheet1 + "]", conn);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...