• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 298  文章 - 377  trackbacks - 0
            <2025年6月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            293012345

            常用鏈接

            留言簿(34)

            隨筆分類

            隨筆檔案

            文章檔案

            相冊

            收藏夾

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            select * from OpenRowset('MSDASQL', 'Driver={Microsoft Text Driver (*.txt; *.csv)};DefaultDir=C:\Users\Administrator\Desktop;','select * from Num.txt') 
            select * from opendatasource('MICROSOFT.JET.OLEDB.4.0','Text;DATABASE=C:\Users\Administrator\Desktop')...[Num.txt]
            BULK INSERT master..Temp FROM 'C:\Users\Administrator\Desktop\Num.txt' WITH  ( FIELDTERMINATOR =' ', ROWTERMINATOR= '\n') 

            /** 導入文本文件
            EXEC master..xp_cmdshell 'bcp dbname..tablename in c:\DT.txt -c -Sservername -Usa -Ppassword'
             
            /** 導出文本文件
            EXEC master..xp_cmdshell 'bcp dbname..tablename out c:\DT.txt -c -Sservername -Usa -Ppassword'

            EXEC master..xp_cmdshell 'bcp "Select * from dbname..tablename" queryout c:\DT.txt -c -Sservername -Usa -Ppassword'
             
            導出到TXT文本,用逗號分開
            exec master..xp_cmdshell 'bcp "庫名..表名" out "d:\tt.txt" -c -t ,-U sa -P password'

            在做一些web數據庫管理系統的時候經常要實現將帳戶批量注冊的功能,今天就來講講如何在C#-web項目中將txt文件和excel文件導入SQL2000數據庫。
            1.數據庫準備
            在SQL2000數據庫的實例數據庫pubs中建立一個數據表txtInsert,字段很簡單:id,name兩個。
            2.txt文本文件導入
            對于數據文件導入與導出SQL2000提供了BULK INSERT和BCP語句,在這里可以使用BULK INSERT命令實現。假設在c盤上有一個文本文件stu.txt內容為:
                1,tom
                2,jack
                3,jhon
                ......
            實現導入的C#代碼如下:
            protected System.Web.UI.HtmlControls.HtmlInputFile fName;  
            protected System.Web.UI.WebControls.Button BtnInsert;
            //上面兩個控件自己添加
            private void BtnInsert_Click(object sender, System.EventArgs e)
              
            {
                            
            string fPath=this.fName.PostedFile.FileName;//獲得要導入的文本文件                  
                        string extName=fPath.Substring(fPath.LastIndexOf(".")+1);//獲得文件的擴展名            
                        SqlConnection con=new SqlConnection("server=.;database=pubs;uid=sa;pwd=;");//數據庫連接對象
                        con.Open();
                        
            try
                  
            {                    
                                SqlCommand com
            =new SqlCommand("BULK INSERT pubs.dbo.txtInsert FROM '"+fPath+"' WITH  (FIELDTERMINATOR = ',',ROWTERMINATOR= '\n')",con);
                                   
            //其中的FIELDTERMINATOR=','指明字段間所使用的分隔符為逗號
                                   
            //其中ROWTERMINATOR= '\n'指明記錄間所使用的分隔符為回車
                                com.ExecuteNonQuery();
                                Response.Write(
            "<script language=javascript>alert('數據導入成功!')</script>");                    
                            }

                         
            catch (SqlException SQLexc)
                            
            {
                                Response.Write(
            "導入數據庫時出錯:" + SQLexc.ToString());
                            }

            con.Close();
            }

            好了,這個txt文件的導入相對簡單,在數據庫中我也沒有設置主鍵,我在里面也沒有加出錯回滾事務操作,在下面的excel文件的導入中介紹。
            3.excel文件的導入
            在c盤里建立一個stu.xls文件,在sheet1工作表中有兩列數據如下:
                 編號  姓名
                 1        tom
                 2        jack
                 3        john
                 ......
            注意,工作表的第一行是作為標題行的不會被插入到數據庫中,真正導入從第二行開始。
            為了演示事物出錯回滾,在這里將txtInsert數據庫表中的id字段設置為主鍵。實現的C#代碼如下:
            private void BtnInsert_Click(object sender, System.EventArgs e)
              
            {
               
            string fPath=this.fName.PostedFile.FileName;//獲得要導入的文本文件     
               string extName=fPath.Substring(fPath.LastIndexOf(".")+1);//獲得文件的擴展名   
               SqlConnection con=new SqlConnection("server=.;database=pubs;uid=sa;pwd=;");//數據庫連接對象
               con.Open();   
                
            //注意下面的連接字符串,是它起到了導入的作用
                SqlCommand excelCmd=new SqlCommand("insert into txtInsert select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE="+fPath+"',Sheet1$)",con);
                SqlTransaction myTran
            =con.BeginTransaction();//開始一個事務操作
                excelCmd.Transaction=myTran;
                
            try
                
            {       
                 excelCmd.ExecuteNonQuery();
                 myTran.Commit();
            //提交事務       
                 Response.Write("<script language=javascript>alert('數據導入成功!')</script>");
                }

                
            catch (SqlException err)
                
            {       
                 myTran.Rollback(); 
            //出錯回滾事務操作
                 
            //以下三行是去掉數據庫出錯信息中的非法字符單引號、回車和換行符,否則在使用時javascript代碼將有語法錯誤
                 
            //因為js的編碼和c#的編碼不同
                 string errString=err.Message.Replace("'"," ");
                 errString
            =errString.Replace(Convert.ToChar(13).ToString(),"");
                 errString
            =errString.Replace(Convert.ToChar(10).ToString(),"");
                 
            //顯示出錯信息框
                 Response.Write("<script language=javascript>alert('導入數據庫時出錯!詳細信息:"+errString+"')</script>");         
                }
               
               con.Close();
              }
            這里“顯示出錯信息框”開始我沒有田間那三行代碼,結果搞了半天,最后還是在html文件中發現javascript代碼部分出現了分行,老是提示“未結束的字符串常量”,所以導致不能打開信息框,郁悶死我了,花了好多時間。
            4.將excel中部分列導入數據庫的方法
            上面講了關于將整個excel文件導入數據庫的方法,那么在實際項目中遇到將excel文件中若干列導入數據庫怎么辦的呢,原理差不多,我就將代碼直接給出了:
                               string  fPath=this.fName.PostedFile.FileName;//獲得要導入的文本文件     
                               string  extName=fPath.Substring(fPath.LastIndexOf(".")+1);//獲得文件的擴展名   
                               SqlConnection con=new SqlConnection("server=.;database=pubs;uid=sa;pwd=;");//數據庫連接對象
                               con.Open();                
                               string mystring="Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = '"+fPath+"';Extended Properties=Excel 8.0";
                            OleDbConnection cnnxls 
            = new OleDbConnection (mystring);
                            OleDbDataAdapter myDa 
            =new OleDbDataAdapter("select * from [Sheet1$]",cnnxls);
                            DataSet myDs 
            =new DataSet();
                            myDa.Fill(myDs);
                            
            if(myDs.Tables[0].Rows.Count > 0)
                            
            {
                                
            string strSql = "";
                                
            string CnnString="Provider=SQLOLEDB;database=pubs;server=.;uid=sa;pwd=";
                                OleDbConnection conn 
            =new OleDbConnection(CnnString);
                                conn.Open ();
                                OleDbCommand myCmd 
            =null;                    
                                
            for(int i=0; i<myDs.Tables[0].Rows.Count;i++)//第一個工作表中行數,不包括第一行,
                                {
                                    
            strSql="insert into txtInsert(id,name) values (";
                                    strSql 
            += myDs.Tables[0].Rows[i].ItemArray[0].ToString() + ", '";
                                    strSql 
            += myDs.Tables[0].Rows[i].ItemArray[1].ToString() + "')";
                                    myCmd
            =new OleDbCommand(strSql,conn);
                                    
            try
                                    
            {                            
                                        myCmd.ExecuteNonQuery();                                                        
                                        Response.Write(
            "<script language=javascript>alert('數據導入成功!')</script>");
                                    }

                                    
            catch (OleDbException err)
                                    
            {                                                       
                                        Response.Write(
            "導入數據庫時出錯:" +err.ToString());
                                        
            break;
                                    }

                                }

                                conn.Close();
            其他部分代碼自己加吧,這里就是出錯失誤回滾有點不好處理,請高手指教!!
            posted on 2013-03-18 21:11 聶文龍 閱讀(1531) 評論(0)  編輯 收藏 引用 所屬分類: DatabaseVisual C++
            97久久天天综合色天天综合色hd| 亚洲乱码精品久久久久..| 99久久婷婷免费国产综合精品| 亚洲va久久久噜噜噜久久| 久久精品国产亚洲av麻豆色欲 | 久久精品无码av| 色综合久久夜色精品国产| 99久久国产精品免费一区二区 | 久久久www免费人成精品| 国内精品久久久久久久97牛牛| 91性高湖久久久久| 亚洲愉拍99热成人精品热久久| 曰曰摸天天摸人人看久久久| 久久免费视频1| 精品久久久久中文字幕一区| 97精品伊人久久久大香线蕉 | 色综合久久夜色精品国产| 久久免费高清视频| 久久精品国产亚洲AV嫖农村妇女| 色婷婷噜噜久久国产精品12p | 亚洲国产精品无码久久九九| 91久久婷婷国产综合精品青草| 国产精品乱码久久久久久软件| 精品久久久久久久久中文字幕| 精品国产99久久久久久麻豆| 国内精品久久久久影院免费| 国产精品内射久久久久欢欢 | 久久久久久免费视频| 2021国产成人精品久久| 精品久久久久久无码中文字幕一区 | 欧美久久综合九色综合| 亚洲国产精品一区二区久久| 99久久精品日本一区二区免费| 成人久久免费网站| 久久久久免费精品国产| 久久经典免费视频| 久久免费看黄a级毛片| 18禁黄久久久AAA片| 欧美成人免费观看久久| 伊人久久大香线蕉综合5g| 久久伊人五月丁香狠狠色|