2017-05-03 61 views
0

好的人我寫我的第一個C#程序與數據庫,我有問題。 我從ACCESS數據庫,方向在哪裏是我需要複製的文件(「String my_querry」)。在Access查詢正在工作,但我的程序不能採取這個字符串,並從它複製文件...我做錯了什麼?附:對不起,我的英語C#和ACCESS SQL(* .accdb)

這是代碼:

static void Main(string[] args) 
{ 
    Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); 
    Microsoft.Office.Interop.Excel.Worksheet mysheet; 
    Microsoft.Office.Interop.Excel.Range myrange; 
    excel.Workbooks.Open("E:\\access\\Book1.xlsm"); 
    //excel.Visible = true; 
    mysheet = excel.Worksheets[1]; 
    myrange = mysheet.Cells; 
    int lastrow = mysheet.UsedRange.Count; 
    for (int i = 1; i <= lastrow; i++) 
    { 
     Console.WriteLine(myrange.Item[i, 1].Value); 
     string fileName = myrange.Item[i, 1].Value + ".pdf"; 
     System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(); 
     conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;" + 
     @"Data source= E:\ACCESS\test.accdb"; 
     conn.Open(); 
     String my_querry = "SELECT adres FROM zrodla WHERE RIGHT(adres,21) = '" + fileName + "'"; 
     OleDbCommand cmd = new OleDbCommand(my_querry, conn); 
     cmd.ExecuteNonQuery(); 
     //DateTime ddd = DateTime.Now; 
     //string ddd2 = ddd.ToString("yyyy-MM-dd"); 
     //string miesiac = ddd.ToString("MM"); 
     //string dzien = ddd.ToString("dd"); 
     string sourcePath = cmd.ToString(); 
     string targetPath = @"E:\ACCESS\ho\"; 

     if (System.IO.File.Exists(sourcePath+fileName)) 
     { 
      string sourceFile = System.IO.Path.Combine(sourcePath, fileName); 
      string destFile = System.IO.Path.Combine(targetPath, fileName); 
      System.IO.File.Copy(sourceFile, destFile, true); 
     } 
     else 
     { 
      Console.Write("Plik nie istnieje!: " + fileName+"\n"); 
      System.Data.OleDb.OleDbConnection conn2 = new System.Data.OleDb.OleDbConnection(); 
      conn2.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;" + 
      @"Data source= E:\ACCESS\test.accdb"; 
      conn2.Open(); 
      String my_querry2 = "INSERT INTO dane(appid) VALUES('"+fileName+"')" ; 
      OleDbCommand cmd2 = new OleDbCommand(my_querry, conn2); 
      cmd2.ExecuteNonQuery(); 
     } 
    } 
} 
+0

我需要查詢的結果,如「E:\ PB \發送\ 2017年5月3日\ A_20160202000555555.pdf」,但結果是0 ......我沒有任何想法,爲什麼在源路徑始終爲0 - 保存在訪問記錄沒有方向.. – Radziu

回答

1

的ExecuteNonQuery將不會返回任何結果,而我懷疑你想要得到的查詢結果,您不能使用CMD做到這結果的ToString。

正確的方法是使用ExecuteReader,它返回一個數據讀取器,您可以使用它來檢查結果。讀者一次只查看一行,您可以查看各列的內容,然後移動到下一行。我敢肯定有很多資源在那裏幫助您與讀者的工作,如在https://msdn.microsoft.com/en-us/library/haa3afyz.aspx「字符串SOURCEPATH」

+0

我試着用的ExecuteReader但仍錯誤...也許是問題的結果查詢? 「E:\ pb \ send \ 2017-05-03 \ A_20160202000555555.pdf」 – Radziu

+1

錯誤消息可能有助於確定問題出在哪裏。否則,我們只會盲目猜測。 –

相關問題