3

現時点では、クライアントがサーバー上のディレクトリにファイルをアップロードし、サーバーがそのファイル (csv ファイル) を使用して SQL データベースを更新できるのは不思議でした。

それがサーバーがそのファイルを使用できる唯一の方法ですか? 最初にサーバーにアップロードするには?または、サーバーのディレクトリにアップロードせずにそのファイルを使用できますか?

(Visual Studio 2012、C#、asp.net を使用)

コードの更新---

asp ファイルのアップロード。(コードはよりきれいに、よりよく書くことができることはわかっていますが、私のテスト コードは決してきれいではありません)

                //Uplod file to the server
                FileUpload1.SaveAs(serverUploadDir + FileUpload1.FileName);

                //Use the Uploaded File to update the sql table
                dbConn.UploadCSVToSql(serverUploadDir + FileUpload1.FileName);

UploadCSVToSql

  public void UploadCSVToSql(string filepath)
        {
            //string filepath = "C:\\Copy of ABI Employee List.csv";
            StreamReader sr = new StreamReader(filepath);
            string line = sr.ReadLine();
            string[] value = line.Split(',');
            DataTable dt = new DataTable();
            DataRow row;
            foreach (string dc in value)
            {
                dt.Columns.Add(new DataColumn(dc));
            }

            while (!sr.EndOfStream)
            {
                value = sr.ReadLine().Split(',');
                if (value.Length == dt.Columns.Count)
                {
                    row = dt.NewRow();
                    row.ItemArray = value;
                    dt.Rows.Add(row);
                }
            }
            SqlBulkCopy bc = new SqlBulkCopy(conn.ConnectionString, SqlBulkCopyOptions.TableLock);
            bc.DestinationTableName = "MainDump";
            bc.BatchSize = dt.Rows.Count;
            conn.Open();
            bc.WriteToServer(dt);
            bc.Close();
            conn.Close();
4

2 に答える 2

0

CSV ファイルのフォルダを監視するバックグラウンド ジョブがサーバー上で実行されている場合は、サーバーにアップロードする必要があります。そうでない場合は、C# でのみファイルを処理し、データベースの更新を実行できるはずです。

于 2013-05-17T09:09:21.013 に答える