2012-05-02 10 views
-2

私はレビューを含む.CSVファイルを持っており、FileUploadコントロールからプログラムを使ってSQLデータベースにコンテンツを転送します。私が持っている問題は、私のコントロールが動作しているということですが、私のデータベースにデータが入っていないのが見えます。ここに私のコードは次のとおりです。誰もが私が間違っているのかのアイデアを持っているか、できればFileUploadを使用して.CSVからSQLにデータをインポートしますか?

マークアップ

<asp:FileUpload ID="FileUpload1" runat="server" /> 
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> 
<asp:Button ID="Button1" runat="server"onclick="Button1_Click"                Text="Button" /> 
<asp:Label ID="Label1" runat="server"></asp:Label> 



Code Behind 

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data.OleDb; 
using System.Data.SqlClient; 
using System.Data.SqlTypes; 

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
    protected void Button1_Click(object sender, EventArgs e) 
    { 
     if (FileUpload1.HasFile) 
     { 

      string fileExt = System.IO.Path.GetExtension(FileUpload1.FileName); 

      if (fileExt == ".csv") 
      { 
       OleDbConnection oconn = new  OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + FileUpload1 + ";  Extended Properties=Excel 8.0"); 

       try 
       { 
        OleDbCommand ocmd = new OleDbCommand("SELECT * FROM [AudioPR$]",  oconn); 
        oconn.Open(); 

        OleDbDataReader odr = ocmd.ExecuteReader(); 
        string Device = ""; 
        string Source = ""; 
        string Reviewer = ""; 
        string Datetime = ""; 
        string Links = ""; 
        string Content = ""; 
        string Subject = ""; 

        while (odr.Read()) 
        { 

         Device = valid(odr, 0); 
         Source = valid(odr, 1); 
         Reviewer = valid(odr, 2); 
         Datetime = valid(odr, 3); 
         Links = valid(odr, 4); 
         Content = valid(odr, 5); 
         Subject = valid(odr, 6); 

         InsertDataIntoSql(Device, Source, Reviewer, Datetime, Links,  Content, Subject); 

        } 

        oconn.Close(); 

       } 

       catch (Exception ee) 
       { 
        Label1.Text = ee.Message; 
        Label1.ForeColor = System.Drawing.Color.Red; 
       } 
       finally 
       { 
        Label1.Text = "Data Inserted Successfully"; 
        Label1.ForeColor = System.Drawing.Color.Green; 

       } 

      } 

      else 
      { 
       Label1.Text = "Only .csv files allowed!"; 

      } 

     } 

     else 
      { 

      Label1.Text = "You have not specified a file!"; 

      } 

     } 



    protected string valid(OleDbDataReader myreader, int stval) 

    { 
     object val = myreader[stval]; 
     if (val != DBNull.Value) 
     { 

      return val.ToString(); 
     } 
     else 
     { 
      return Convert.ToString(0); 
     } 


    } 

    public void InsertDataIntoSql(string Device, string Source, string Reviewer, string  Datetime, string Links, string Content, string Subject) 

    { 
     SqlConnection conn = new SqlConnection("Data Source=CI0000000879107\\BENSON; Initial Catalog=PRClips Mail;Integrated Security=True"); 
     SqlCommand cmd = new SqlCommand(); 
     cmd.CommandText = "INSERT INTO AudioPR(Device, Source, Reviewer, Datetime,  Links, Content, Subject) VALUES(@Device, @Source, @Reviewer, @Datetime, @Links, @Content,  @Subject)"; 
     cmd.Parameters.Add("@Device", System.Data.SqlDbType.NVarChar).Value = Device; 
     cmd.Parameters.Add("@Source", System.Data.SqlDbType.NVarChar).Value = Source; 
     cmd.Parameters.Add("@Reviewer", System.Data.SqlDbType.NVarChar).Value =  Reviewer; 
     cmd.Parameters.Add("@Datetime", System.Data.SqlDbType.Date).Value = Datetime; 
     cmd.Parameters.Add("@Links", System.Data.SqlDbType.NVarChar).Value = Links; 
     cmd.Parameters.Add("@Content", System.Data.SqlDbType.NVarChar).Value = Content; 
     cmd.Parameters.Add("@Subject", System.Data.SqlDbType.NVarChar).Value = Subject; 
     cmd.CommandType = System.Data.CommandType.Text; 
     conn.Open(); 
     cmd.ExecuteNonQuery(); 
     conn.Close(); 

    } 
} 

私はちょうどのFileUploadから内容を読み込むことができたときに、接続を持つことはちょっと無意味であることを認識したが適切な方向に導かれ、大いに感謝されます。お時間

+0

あなたがSOのコミュニティがのためにあなたのデバッグを行いたい表示されます君は。より良い質問は、問題のある領域を見つけ、問題を再現する小さくて簡潔なプログラムを提供することです。 –

+0

あなたの権利、私は十分にこれを十分に見たとは思わない – cbenson

答えて

0

よしてくれてありがとう、私は私は私が.CSVファイルをインポートしています

  • 最初のものをwas..couple同じことを目指した人々のためにそれを考え出したと思うので、あなたの接続文字列がありますあなたのファイルが閉じているにもかかわらず問題が発生するファイルcuzを破棄してください。オープンしていればクラッシュします。コードのまだ)

  • 第3に、データをデータベースにインポートすると、データ型が正しいことが確認されます。たとえば、データが大量に取り込まれているため、データ型を適切な形式に変更する必要がありました。

マークアップ:

<asp:FileUpload ID="FileUpload1" runat="server" /> 
     <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> 
       <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" /> 
         <asp:Label ID="Label1" runat="server"></asp:Label> 

くらいのちょうど基本的なコントロール

C#コードの後ろに、ここで行われていない:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data.OleDb; 
using System.Data.SqlClient; 
using System.Data.SqlTypes; 

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
    protected void Button1_Click(object sender, EventArgs e) 
    { 
     if (FileUpload1.HasFile) //Upload file here 
     { 

      string fileExt = System.IO.Path.GetExtension(FileUpload1.FileName); //Get extension 

      if (fileExt == ".csv") //check to see if its a .csv file 
      { 

       FileUpload1.SaveAs("C:\\FolderName\\" + FileUpload1.FileName);  //save file to the specified folder 
       OleDbConnection oconn = new  OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\AudioPRFiles\\; Extended  Properties='text; HDR=Yes; FMT=Delimited'"); //string connection for .CSV  OR Text file 

       try 
       { 
        OleDbCommand ocmd = new OleDbCommand("SELECT * FROM [" +  FileUpload1.FileName + "]", oconn); //Select statement, if your using .CSV...put the name of the file NOT the excel tab 


       oconn.Open(); 

       OleDbDataReader odr = ocmd.ExecuteReader(); 


       string Device = ""; 
       string Source = ""; 
       string Reviewer = ""; 
       string Datetime = ""; 
       string Links = ""; 
       string Content = ""; 
       string Subject = ""; 

       while(odr.Read()) 

       { 

        Device = valid(odr, 0);  //Call the valid method...see below 
        Source = valid(odr, 1); 
        Reviewer = valid(odr, 2); 
        Datetime = valid(odr, 3); 
        Links = valid(odr, 4); 
        Content = valid(odr, 5); 
        Subject = valid(odr, 6); 

        InsertDataIntoSql(Device, Source, Reviewer, Datetime, Links, Content, Subject); //Call the InsertDataIntoSql method...see below 

        FileUpload1.Dispose(); //Dispose the file 


       } 

       oconn.Close(); //Close connection 

      } 

      catch (Exception ee) 
      { 
       Label1.Text = ee.Message; 
       Label1.ForeColor = System.Drawing.Color.Red; 
      } 
      finally 
      { 
       Label1.Text = "Data Inserted Successfully"; 
       Label1.ForeColor = System.Drawing.Color.Green; 

      } 

     } 

     else 
     { 
      Label1.Text = "Only .csv files allowed!"; 

     } 

    } 

    else 
    { 

     Label1.Text = "You have not specified a file!"; 

    }  
} 



protected string valid(OleDbDataReader myreader, int stval) //this method checks for null values in the .CSV file, if there are null replace them with 0 

{ 
    object val = myreader[stval]; 
    if (val != DBNull.Value) 
    { 

     return val.ToString(); 
    } 
    else 
    { 
     return Convert.ToString(0); 
    } 


} 

public void InsertDataIntoSql(string Device, string Source, string Reviewer, string Datetime, string Links, string Content, string Subject) //method to insert data into database 

{ 
    SqlConnection conn = new SqlConnection("Server=ServerAddress; Database=MyDatabaseName; Trusted_Connection=True");      //SQL connection 
    SqlCommand cmd = new SqlCommand();       //SQL command 
    cmd.Connection = conn; 
    cmd.CommandText = "USE [MyDataBase] INSERT INTO Table_Name(Device, Source, Reviewer, Datetime, Links, Content, Subject) VALUES(@Device, @Source, @Reviewer, @Datetime, @Links, @Content, @Subject)"; 
    cmd.Parameters.Add("@Device", System.Data.SqlDbType.Int).Value = Device; 
    cmd.Parameters.Add("@Source", System.Data.SqlDbType.NVarChar).Value = Source; 
    cmd.Parameters.Add("@Reviewer", System.Data.SqlDbType.NVarChar).Value = Reviewer; 
    cmd.Parameters.Add("@Datetime", System.Data.SqlDbType.Date).Value = Datetime; 
    cmd.Parameters.Add("@Links", System.Data.SqlDbType.NVarChar).Value = Links; 
    cmd.Parameters.Add("@Content", System.Data.SqlDbType.NVarChar).Value = Content; 
    cmd.Parameters.Add("@Subject", System.Data.SqlDbType.NVarChar).Value = Subject; 
    cmd.CommandType = System.Data.CommandType.Text; 
    conn.Open(); 
    cmd.ExecuteNonQuery(); 
    conn.Close(); 

    } 
} 

Hope this helps..Thanks 
関連する問題