2013-08-22 4 views
0
  1. 편집을 위해 다른 하나의 DataGridview에서 행을 가져옵니다.
  2. 값을 편집하십시오.
  3. 값을 저장하십시오. 그러나 사용자가 PRIMARY KEY TABLE 인 열을 변경하지 않기를 바랍니다.

나는C#의 PRIMARY KEY COLUMN 값 편집 금지

string sql = "SELECT ColumnName = col.column_name FROM information_schema.table_constraints tc INNER JOIN information_schema.key_column_usage col ON col.Constraint_Name = tc.Constraint_Name AND col.Constraint_schema = tc.Constraint_schema WHERE tc.Constraint_Type = 'Primary Key' AND col.Table_name = '" + _lstview_item + "'"; 
      SqlConnection conn2 = new SqlConnection(cc.connectionString(cmb_dblist.Text)); 
      SqlCommand cmd_server2 = new SqlCommand(sql); 
      cmd_server2.CommandType = CommandType.Text; 
      cmd_server2.Connection = conn2; 
      conn2.Open(); 
      string ColumnName = (string)cmd_server2.ExecuteScalar(); 
      //string ColumnName = (string)cmd_server2.ExecuteScalar(); 
      conn2.Close(); 

하여 기본 키 컬럼의 이름이 사용자가 값을 변경하면 난 내가 감지 어떻게

u.Append("UPDATE "); 
        u.Append("[Ref].["); 
        u.Append(_lstview_item); 
        u.Append("]"); 
        u.Append("SET "); 
        for (i = 0; i < col_no; i++) 
        { 
         u.Append(col_name); 
         u.Append(" = "); 
         u.Append("'"); 
         u.Append(col_value); 
         u.Append("'"); 
        } 

다음과 같이 업데이트 문을 건물입니다 이 상황에서 기본 키 열의?

+0

for 루프에서 if 문을 append 주위에 추가 할 수는 없습니다. if (col_name! = ColumnName) – Tanner

+0

그리드 열을 읽기 전용으로 만듭니다. – Raghubar

+0

나는 그것을 만들 수 없습니다. 왜냐하면 내가 테이블 목록에서 테이블을 선택할 때마다 datagridview가 채워지고 있기 때문입니다. –

답변

0

이와 같은 SQL 문을 연결하면 안됩니다.

대신 SQL 매개 변수를 사용하여 개별 속성을 설정하십시오.

괜찮다 SQLParameters이 샘플에서 사용되는 방법의 예 :이 도움이 http://www.dotnetperls.com/sqlparameter

희망!