2012-05-21 46 views
8

Tôi muốn lưu các ngày trong tuần trong cơ sở dữ liệu, vì vậy tôi nghĩ lưu trữ nó bằng cách gán giá trị int cho mỗi ngày. tức làChèn mảng trong cơ sở dữ liệu SQLite trong android

-> Đã chọn, -> Không được chọn.

Thứ hai = 0/1

thứ ba = 0/1

. . . . .

Chủ nhật = 0/1.

Nhưng điều này sẽ tạo 7 cột trong DB. Vì vậy, tôi đã suy nghĩ nếu có ai có thể giúp tôi với điều này nếu tôi nên lưu trữ nó trong một mảng duy nhất và lấy các giá trị để sử dụng thêm. Tôi đã đọc một số ví dụ trên internet nhưng không nhận được nó một cách dễ dàng.

+1

nếu bạn muốn lưu trữ mảng trong một cột, sau đó đặt giá trị tất cả ngày của bạn vào mảng json và lưu nó vào trong cơ sở dữ liệu. –

Trả lời

10

Để chèn 7 giá trị trong một cột, bạn có thể sử dụng dấu phẩy phân cách như thế này

nơi Total_Score_P1 là một mảng chuỗi

// chuỗi mảng

String[] Total_Score = new String[] { p1e1,p1e2,p1e3,p1e4,p1e5,p1e6 }; 


// Convderting it into a single string 

String result_ScoreP1 = ("" + Arrays.asList(Total_Score_P1)). 
      replaceAll("(^.|.$)", " ").replace(", ", " , "); 

result_ScoreP1 sẽ

// đầu ra của số này

result_ScoreP1 = "p1e1,p1e2,p1e3,p1e4,p1e5,p1e6"; 

chèn nó như là một chuỗi duy nhất trong cơ sở dữ liệu và khi lấy nó trong một lần nữa phá vỡ ở các bộ phận như

// một chuỗi array list

// truy vấn bị sa thải

public ArrayList<String> rulTable(String id) { 
     // TODO Auto-generated method stub 
     ArrayList<String> Ruleob = new ArrayList<String>(); 

     Cursor c_rule; 

     try 
     { 
      c_rule = db.query(NameTable, new String[]{ 
        columns1   
      }, 
      Rule_COurseID + "=" + id , 
           null, null, 
           null, null, null); 

      c_rule.moveToFirst(); 

      // if there is data available after the cursor's pointer, add 
      // it to the ArrayList that will be returned by the method. 
      if (!c_rule.isAfterLast()) 
      { 
       do 
       { 

        Ruleob.add(c_rule.getString(0)); 

       } 
       while (c_rule.moveToNext()); 
      } 

      // let java know that you are through with the cursor. 
      c_rule.close(); 
     } 
     catch(Exception e) 
     { 


     } 
     return Ruleob; 


    } 


//list to get elements 

ArrayList<String> ListOne = new ArrayList<String>(); 

ArrayList<String> row ; 

    try{ 
// received values 
     row = db.TheTable(id); 
     String r1 = row .get(0); 

} 

catch(Exception e) 

{ 

} 


StringTokenizer st2 = new StringTokenizer(r1, "||"); 

      while(st2.hasMoreTokens()) { 
      String Desc = st2.nextToken(); 
       System.out.println(Desc+ "\t"); 
      ListOne.add(Desc); 

// 
      } 
5

Bạn có thể sử dụng một số nguyên nhị phân 1 = chọn 0 = Chưa chọn (1111111) (0000000)

tổng bảy ngày nên chỉ số 0 = mon, 1 = Thứ Ba, 2 = wed, 3 = Thứ Năm, 4 = thứ sáu, 5 = ngồi, 6 = chủ nhật..và như vậy ..

tại đây 1111111 có nghĩa là tất cả các ngày được chọn, 0000000 tất cả các ngày không được chọn, 0001000 chỉ thứ năm được chọn.

+0

yah, tôi knw rằng, nhưng nó sẽ là một điều tương tự như tôi đang làm bây giờ, bất kỳ ý tưởng nếu chúng ta có thể sử dụng mảng/arraylist trong DB như tôi phải sử dụng những ngày để thiết lập báo động ON trong ứng dụng của tôi. – Harpreet

+0

bạn có thể thiết lập báo động bằng khái niệm này, không phải là một việc lớn. –

2

Tạo bảng khác với một cột cho mỗi ngày, giá trị boolean. Tạo liên kết tới bảng này theo id nguyên (sử dụng khóa ngoài) Đây là cách giải quyết vấn đề quan hệ.

3

Tôi cũng đã phát hiện ra một cách ví dụ: chuyển đổi cái gọi là giá trị của bạn đến một mảng JSON và sau đó lưu trữ các hoàn JSON Chuỗi đến một thực thể/lĩnh vực trong cơ sở dữ liệu.

Nó giúp phục vụ các giá trị dễ dàng và hiệu quả.

Các vấn đề liên quan