2015-01-20 258 views
-1

我試圖從.txt文件中提取數據並將其放入數據庫中。數據是冒號旁邊的數字。我試過了File.ReadAllLines函數,但有些行有相同的單詞。下面是文本文件的一部分:偏移從文本文件中提取數據

X形心:0.1233毫米

ÿ質心偏移:-0.00053871毫米

偏心(梁):0.10004

偏心(陰影):0.118

這是我的代碼的開始。我試圖將這些值作爲我已經定義的變量放入數據庫中。

private void btn_import_Click(object sender, EventArgs e) 
    { 
     OpenFileDialog openFileDialog1 = new OpenFileDialog(); 

     string Date; 
     float A_X_Off; 
     float A_Y_Off; 
     float A_EccBeam; 
     float A_EccSha; 

     OleDbConnection conn = new OleDbConnection(); 
     conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.15.0; 
     Data Source = C:\\Users\\Kevin\\Desktop\\Accuray Project\\CkAppDatabase.accdb"; 


     // CODE to pull out text file values and make the output a variable.      

     OleDbCommand cmd = new OleDbCommand("INSERT into CK_QA_App(Date, A_X_Off, A_Y_Off, A_EccBeam, A_EccSha) VALUES(@Date, @A_X_Off, @A_Y_Off, @A_EccBeam, @EccSha)"); 

if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
     {       

     } 
+1

所以你不必代碼來讀取文本文件中的數據,你沒有完整的代碼將記錄插入到您的數據庫?聽起來像兩個問題。 – crashmstr 2015-01-20 18:48:17

+0

我的歉意crashmstr。從文本文件中讀取數據是我唯一的問題。 – LitteringAnd 2015-01-20 18:51:23

+0

你可以擴展'一些行有相同的單詞'我不確定你的意思嗎?你的意思是該方法的結果是不正確的,因爲一些行是重複的?這似乎不太可能,因爲這是一個核心框架功能 – kmcc049 2015-01-20 18:54:55

回答

0

使用File.ReadAllLines後,您可以對結果使用for循環。

循環內部使用starts with方法和一些ifs將行匹配到正確的變量以將其分配給。

使用分割功能使用冒號分割以獲取值。請記住調用該值以刪除前導空間。

+0

謝謝。我能夠以這種格式使用分割函數:string A_X_Off = line [9] .Split('')[3],以獲得分割後的確切行和列。由於某些原因,修剪功能不需要。 – LitteringAnd 2015-01-26 03:53:36

0

假設你從文本文件閱讀f

string[] inputs = File.ReadAllLines(f); 

foreach (String line in inputs) { 

string data = Regex.Match(line, @"-?\d+(?:\.\d+)?").Value; 
//This will extract any decimal in each line as a string 
//you can then parse it to double/float or any type you want and store it in your database 

}