2 verajun verajun 于 2013.12.13 22:37 提问

C# bcp 导入,导入界面与查询界面在一起,导入后不能再查询

在做课程设计,一个图书馆管理系统,将图书查询界面与图书导入界面放在了一起。在未导入前,查询功能没有问题,导入后,查询不到结果,sql语句返回值为-1

enter code here//图书查询sql

    private void sqlRegion()
    {
        sqlR = "";
        if (tbBookId.Text.Trim() != string.Empty)
        {
            sqlR += "and Bno ='" + tbBookId.Text.Trim() + "'";
            // sqlR += "and Bno like '% "+tbBookId.Text.Trim()+"%'";
        }
        if (tbName.Text.Trim() != string.Empty)
        {
            sqlR += "and Bname like '%" + tbName.Text.Trim() + "%'";

        }
        if (tbWriter.Text.Trim() != string.Empty)
        {
            sqlR += "and Bauthor like '%" + tbWriter.Text.Trim() + "%'";
        }
        if (tbPublish.Text.Trim() != string.Empty)
        {
            sqlR += "and Bpub like '%" + tbPublish.Text.Trim() + "%'";
        }
        if (tbPublishDate.Text.Trim() != string.Empty)
        {
            sqlR += "and Bdate like '%" + tbPublishDate.Text.Trim() + "%'";
        }
        if (tbPrice.Text.Trim() != string.Empty)
        {
            sqlR += "and Bprice like '%" + tbPrice.Text.Trim() + "%'";
        }
        if (tbBookClass.Text.Trim() != string.Empty)
        {
            sqlR += "and Bclass like '%" + tbBookClass.Text.Trim() + "%'";
        }

        if (tbISBN.Text.Trim() != string.Empty)
        {
            sqlR += "and BISBN like '%" + tbISBN.Text.Trim() + "%'";
        }


    }


    //图书查询

    private void btnserarch_Click(object sender, EventArgs e)
    {
        dt.Clear();
        ds.Clear();
        if (tbBookId.Text.Trim() == string.Empty && tbName.Text.Trim() == string.Empty
            && tbWriter.Text.Trim() == string.Empty && tbPublish.Text.Trim() == string.Empty
            && tbPublishDate.Text.Trim() == string.Empty && tbPrice.Text.Trim() == string.Empty
            && tbBookClass.Text.Trim() == string.Empty && tbISBN.Text.Trim() == string.Empty)
        {

            myCon.Open();
            sql = "select * from Book";
            cmd = new SqlCommand(sql, myCon);
            cmd.ExecuteNonQuery();
            sda = new SqlDataAdapter("select * from Book", myCon);
            sda.Fill(ds);

            dgvBookSearchResult.DataSource = ds.Tables[0].DefaultView;
            myCon.Close();
            if (ds.Tables[0].Rows.Count > 0)
            {
                dgvBookSearchResult.DataSource = ds.Tables[0].DefaultView;
                myCon.Close();
                return;

            }
            else
                MessageBox.Show("没有找到相关的记录!");

            return;

        }
        string sqlRegSearch;
        sqlRegion();
        sqlRegSearch = "select * from Book where 1=1" + sqlR;
        myCon.Open();
        cmd = new SqlCommand(sqlRegSearch, myCon);
        cmd.ExecuteNonQuery();
        int count;
        count = Convert.ToInt32(cmd.ExecuteNonQuery());
        sda = new SqlDataAdapter(sqlRegSearch, myCon);
        sda.Fill(ds);
        //dgvBookSearchResult.DataSource = ds.Tables[0].DefaultView;
        myCon.Close();
        if (ds.Tables[0].Rows.Count > 0)
        {
            dgvBookSearchResult.DataSource = ds.Tables[0].DefaultView;
            myCon.Close();
            return;

        }
        else
            MessageBox.Show("没有找到相关的记录!");


    }

enter code here private void btnImport_Click(object sender, EventArgs e)
    {
        try
        {
            string strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + tbPath.Text.Trim() + ";Extended Properties ='Excel 8.0;HDR=YES;IMEX=1'";

            OleDbConnection conn = new OleDbConnection(strcon);
            conn.Open();
            string strExcel;
            strExcel = string.Format("select * from [Sheet1$]");
            OleDbDataAdapter oda = new OleDbDataAdapter(strExcel, strcon);
            oda.Fill(ds, "sheet1");
            myCon.Open();
            using (System.Data.SqlClient.SqlBulkCopy bcp = new System.Data.SqlClient.SqlBulkCopy(myCon))
            {
                bcp.SqlRowsCopied += new System.Data.SqlClient.SqlRowsCopiedEventHandler(bcp_SqlRowsCopied);
                bcp.BatchSize = 100;//每次传输的行数   
                bcp.NotifyAfter = 100;//进度提示的行数   
                bcp.DestinationTableName = "Book";//目标表   
                bcp.WriteToServer(ds.Tables[0]);
                MessageBox.Show("成功!");
                conn.Close();
                return;
            }


        }


        catch (Exception ex)
        {
            //"插入的图书与数据库中有重复!"
            MessageBox.Show(ex.Message);
            return;
            //System.Windows.Forms.MessageBox.Show(ex.Message);
        }
        finally
        {
            myCon.Close();

        }

    }
    void bcp_SqlRowsCopied(object sender, System.Data.SqlClient.SqlRowsCopiedEventArgs e)
    {
        this.Text = e.RowsCopied.ToString();
        this.Update();
    }  

##

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
批量处理BCP导入文件到数据库
上万个数据文件,高效的批量导入到数据库中
BCP 数据的导入和导出
BCP 命令的参数很多,使用 -h 查看帮助信息,注意:参数是区分大小写的 使用BCP命令导出和导入数据常用的参数如下 bcp {[[database_name.][schema_name]].{table_name | view_name} | "query"} {in | out | queryout}  数据文件 [-c 字符类型]  | [-w 宽字符类
利用bcp批量导入指定文件夹下CSV数据到sql server
指定好文件夹后,读取文件夹和子文件夹下所有csv文件,利用bcp批量导入CSV数据到sql server
学习总结:sybase中bcp命令批量导出和导入
1.编辑一个文件selectout.sql: set nocount on use databasename go select 'bcp databasename..' + name + ' out d:\temp\' + name + '.txt -Uusername -Ppassword -Sservername -c ' from sysobjects where ty
使用BCP导出导入数据
bcp 实用工具可以在 Microsoft SQL Server 实例和用户指定格式的数据文件间大容量复制数据。 使用 bcp 实用工具可以将大量新行导入 SQL Server 表,或将表数据导出到数据文件。 除非与 queryout 选项一起使用,否则使用该实用工具不需要了解 Transact-SQL 知识。 若要将数据导入表中,必须使用为该表创建的格式文件,或者必须了解表的结构以及对于该表
Sql Server 2008R2 遇到了BCP导入各种中文乱码的问题
今天玩BCP导入数据的时候,有文件格式,有中文字符串问题……以下是历程,和大家分享一下,希望不要走我的弯路 主要那个表是一个翻译表,一个文件里面内涵几十种语言,所以很容易发现问题。 0、使用最常用的语句导数据   bcp DB.TBOwner.TB in File -S -U -P -r -t -c  来到,死活岛导不进去 1、打开文件,首先发现文件编码使用的是UTF-16 ……难怪死活不
Sybase BCP导入数据时碰到中文编码问题的解决方法
在用 BCP 命令导入其它机器导出的文件很容易碰到这样的问题:Server Message: cdr - Msg 2401, Level 11, State 2:Character set conversion is not available between client character set iso_1 and server character set eucgb. Serv
SQLServer BCP导入命令详解
         bcp是SQL Server中负责导入导出数据的一个命令行工具,它是基于DB-Library的,并且能以并行的方式高效地导入导出大批量的数据。bcp可以将数据库的表或视图直接导出,也能通过SELECT FROM语句对表或视图进行过滤后导出。在导入导出数据时,可以使用默认值或是使用一个格式文件将文件中的数据导入到数据库或将数据库中的数据导出到文件中。下面将详细讨论如何利用bcp导入
WPF 学生信息管理
做的学生信息管理系统,支持查询,修改,添加,删除,导入图片,用的是仿360界面,界面美观,用的是导入字典等
Oracle自动导入数据文件(类似bcp的功能)及问题记录SQL*LOADER-704,ORA-12504
工作需求:将unl文件利用shell脚本导入到oracle数据库,这样就可以定期执行shell来导入数据库。 背景:unl文件大小700M,数据量125万条。因为数据量太大,所以不能全部insert,另外,要分开提交,不能一次全部提交,参数用rows来控制,后面会有解释。 数据格式:103096653999363@|#@|#04@|#4240@|#1426@|#翼城县德荣副食部(万村千乡)