• <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
            <2013年3月>
            242526272812
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            常用鏈接

            留言簿(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 聶文龍 閱讀(1525) 評論(0)  編輯 收藏 引用 所屬分類: DatabaseVisual C++
            久久人人爽人人爽人人片AV麻烦| 日本道色综合久久影院| 亚洲国产日韩欧美久久| 精品国产乱码久久久久久人妻 | 国内精品欧美久久精品| 蜜臀久久99精品久久久久久| 久久精品一区二区三区AV| 国产精品久久久久久搜索| 日韩久久久久中文字幕人妻| 久久久噜噜噜久久熟女AA片| 久久久久久亚洲精品不卡| 色综合久久久久久久久五月| 精品久久久久久无码免费| 午夜天堂精品久久久久| 久久人人添人人爽添人人片牛牛| 国产 亚洲 欧美 另类 久久| 亚洲va久久久久| 久久九九久精品国产免费直播| 久久男人Av资源网站无码软件| 久久天天躁狠狠躁夜夜av浪潮 | 国产精品欧美久久久久天天影视| 无码人妻久久一区二区三区蜜桃| 一本久久a久久精品综合夜夜| 99久久无色码中文字幕人妻| 久久亚洲天堂| 国産精品久久久久久久| 久久发布国产伦子伦精品| 囯产精品久久久久久久久蜜桃 | 国产精品天天影视久久综合网| 一本综合久久国产二区| 久久精品亚洲男人的天堂| 热久久这里只有精品| 久久精品一区二区国产| 国产午夜精品久久久久免费视| 国产精品久久新婚兰兰| 中文字幕精品久久久久人妻| 无码国内精品久久人妻麻豆按摩| 久久精品中文字幕有码| 久久久受www免费人成| 无夜精品久久久久久| 97精品依人久久久大香线蕉97|