Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: Hỏi về đoạn code trong kết nối csdl

  1. #1
    No Avatar
    yangyin Khách

    Mặc định Hỏi về đoạn code trong kết nối csdl

    Em không hiểu doạn code này , giải thích rõ dùm em , cảm ơn !
    Các vòng lặp for ở đó có ý nghĩa gì vây ?

    Visual C# Code:
    1. // đoạn code :
    2.  
    3.         public static DataTable ExecuteDataTable(string sql, CommandType commandType, string[] pars, string[] value)
    4.         {
    5.  
    6.             MoKetNoi();
    7.             command.CommandType = commandType;
    8.             for (int i = 0; i < pars.Length; i++)
    9.             {
    10.  
    11.                 SqlParameter par = new SqlParameter(pars[i].ToString(), value[i]);
    12.                 command.Parameters.Add(par);
    13.             }
    14.  
    15.             adapter = new SqlDataAdapter(command);
    16.  
    17.             dataset = new DataSet();
    18.             adapter.Fill(dataset);
    19.  
    20.             return dataset.Tables[0];
    21.         }
    22.  
    23.         public static void ExecuteNonQuery(string sql, CommandType commandType, params object[] pars)
    24.         {
    25.  
    26.            
    27.             MoKetNoi();
    28.  
    29.             command.CommandType = commandType;
    30.             command.CommandText = sql;
    31.  
    32.             for (int i = 0; i < pars.Length; i += 2)
    33.             {
    34.                 SqlParameter par = new SqlParameter(pars[i].ToString(), pars[i + 1]);
    35.                 command.Parameters.Add(par);
    36.             }
    37.  
    38.             command.ExecuteNonQuery();
    39.         }
    40.  
    41.  
    42.         public static SqlDataAdapter ExecuteDataAdapter(string sql, CommandType commandType, params object[] pars)
    43.         {
    44.             MoKetNoi();
    45.             command.CommandType = commandType;
    46.             command.CommandText = sql;
    47.  
    48.             for (int i = 0; i < pars.Length; i += 2)
    49.             {
    50.                 SqlParameter par = new SqlParameter(pars[i].ToString(), pars[i + 1]);
    51.                 command.Parameters.Add(par);
    52.             }
    53.  
    54.             adapter = new SqlDataAdapter(command);
    55.                    
    56.             return adapter;
    57.         }
    58.  
    59.  
    60.  
    61.  
    62.  
    63.         public static DataSet fill(string strsql, CommandType type, params object[] pars)
    64.         {
    65.             dataset = new DataSet();
    66.  
    67.             try
    68.             {
    69.  
    70.                 MoKetNoi();
    71.                 command.CommandText = strsql;
    72.                 command.CommandType = type;
    73.  
    74.                 for (int i = 0; i < pars.Length; i += 2)
    75.                 {
    76.                     SqlParameter par = new SqlParameter(pars[i].ToString(), pars[i + 1]);
    77.                     command.Parameters.Add(par);
    78.                 }
    79.                 adapter = new SqlDataAdapter(command);
    80.                 adapter.Fill(dataset);
    81.                 adapter.Dispose();
    82.             }
    83.             catch (SqlException ex)
    84.             {
    85.                 MessageBox.Show("loi" + ex.Message);
    86.             }
    87.  
    88.             return dataset;
    89.         }
    90.  
    91.         public static DataTable ExecuteDataTable(
    92.             string sql,
    93.             CommandType commandType,
    94.             params object[] pars)
    95.         {
    96.             MoKetNoi();
    97.             command.CommandType = commandType;
    98.             command.CommandText = sql;
    99.  
    100.             for (int i = 0; i < pars.Length; i += 2)
    101.             {
    102.  
    103.                 SqlParameter par = new SqlParameter(pars[i].ToString(), pars[i + 1]);
    104.                 command.Parameters.Add(par);
    105.             }
    106.  
    107.             adapter = new SqlDataAdapter(command);
    108.  
    109.             dataset = new DataSet();
    110.             adapter.Fill(dataset);
    111.  
    112.             return dataset.Tables[0];
    113.         }

    Vui lòng để code vào tag code. Đọc Nội quy để biết thêm chi tiết!
    Đã được chỉnh sửa lần cuối bởi Kevin Hoang : 29-03-2008 lúc 11:57 AM. Lý do: Nhắc nhở

  2. #2
    Ngày gia nhập
    11 2007
    Bài viết
    294

    Có vẻ bạn đang làm việc với DAL nhỉ ^^!
    Vòng for để truyền parameter cho các command.

    Các command có thể là SQL hoặc store.
    - Với các store thì parameter rõ rồi nhỉ ^^!
    - Vơi các lệnh SQL bạn cũng có thể truyền parameter giống như sau
    Visual C# Code:
    1. String sSQL = "Select XXX from ABC where YYY = :pYYY";
    2. command.CommandText = sSQL;
    3. command.Parameters.add(new SqlParameter("pYYY","yyyy"));

    Tương đương với
    Visual C# Code:
    1. String sSQL = "Select XXX from ABC where YYY = 'yyyy'";
    2. command.CommandText = sSQL;

    Cheers!
    Is the moon rising...

  3. #3
    Ngày gia nhập
    06 2007
    Nơi ở
    TP.HCM
    Bài viết
    113

    Đoạn code ở trên viết có vẻ như không rỏ ràng. Nếu thực thi một sqlcommand và có truyền tham số thì dạng commandtype chỉ là storedprocedure.

    Với dạng CommandType là Text thì ko thể truyền tham số được, vì có truyền tham số thì đó cũng chỉ là một chuổi query thôi. Nên cách giải thích của darkan thì đúng nhưng ví dụ thì ko đúng.

    Mấy phương thức trên có thể rút ngắn lại để có thể chỉ sử dụng cho dạng storedprocedure.

    Visual C# Code:
    1. public DataTable ExecuteDataTable(string spname, string[] pars, string[] value)
    2. {
    3.             //...
    4. }

    Còn vòng for trong các phương thức là để truyền tham số cho procedure. String pars là mãng các tham số của storedprocedure. value là giá trị sẽ truyền cho các tham số đó.

    Ví dụ:

    cho 1 storedprocedule dùng để thêm một mẫu tin trong CSDL: Person(FirstName, LastName, Age)
    PHP Code:
    Create proc sp_InsertPerson
              
    @firstname nvarchar(50),
              @
    lastname nvarchar(50),
              @
    age int
    as
              
    insert into Person
              values
    (@firstname, @lastname, @age
    Viết lại một phương thức thêm dữ liệu:

    Visual C# Code:
    1.         public void ExecuteNonQuery(string spname, string[] pars, string[] value, SqlConnection myCon)
    2.         {
    3.             //ví dụ đã có 1 đối tượng connection là myCon
    4.             myCon.Open();
    5.             SqlCommand cmdInsertPerson = new SqlCommand();
    6.             cmdInsertPerson.CommandText = spname;
    7.             cmdInsertPerson.CommandType = CommandType.StoredProcedure;
    8.             cmdInsertPerson.Connection = myCon; //myCon là sqlconnection đã khai báo và đã mở kết nối
    9.  
    10.             //truyền tất cả các tham số cho stored procedure
    11.             for (int i = 0; i < pars.Length; i++)
    12.             {
    13.                 //cấu trúc truyền tham số cho stored procedure như sau:
    14.                 //cmdInsertPerson.Parameters.AddWithValue("@ParametersName","@ParametersValue");
    15.                 cmdInsertPerson.Parameters.AddWithValue(pars[i].ToString(), value[i].ToString());
    16.             }
    17.  
    18.             cmdInsertPerson.EndExecuteNonQuery();
    19.  
    20.             //đóng kết nối
    21.             myCon.Close();
    22.         }

    Cách sử dụng như thế nào? Sau đây là ví dụ:
    Visual C# Code:
    1.         private void button1_Click(object sender, EventArgs e)
    2.         {
    3.             SqlConnection connection = new SqlConnection();
    4.             connection.ConnectionString = "chuổi kết nối ở đây";
    5.             connection.Open();
    6.             ExecuteNonQuery("sp_InsertPerson", new string[] { "@firstname", "@lastname", "@age" }, new string[] { "Sun", "Sunflower", "23" }, connection);
    7.             connection.Close();
    8.         }
    Đã được chỉnh sửa lần cuối bởi Kevin Hoang : 29-03-2008 lúc 11:56 AM. Lý do: nâng cao tag code

    Gác Kiếm

  4. #4
    Ngày gia nhập
    11 2007
    Bài viết
    294

    Sun ơi là Sun ^^!
    Ai biểu Sun là SQL String không được truyền tham số ^^!
    Sun thử đoạn code của Dark chưa mà kiu nó sai ^^!

    Còn đoạn code của bạn ý là code ngon đấy,viết theo đúng chuẩn DAL của các bạn M$ ^^!

    Có đoạn demo DAL của các bạn M$ ở đây!Ai múm tham khảo thì kéo về nhé ^^!

    Cheers!
    Is the moon rising...

Các đề tài tương tự

  1. Gen code tự động từ các loại csdl ra file C#
    Gửi bởi thepbac trong diễn đàn Dự án & Source code C#, ASP.NET
    Trả lời: 13
    Bài viết cuối: 14-05-2013, 10:46 AM
  2. code kết nối csdl sqlserver 2005 với C#
    Gửi bởi thientran trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 14
    Bài viết cuối: 25-03-2012, 09:06 AM
  3. Code C# kiểm tra trùng dữ liệu của 2 khóa trong csdl
    Gửi bởi funny_dn89 trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 9
    Bài viết cuối: 06-04-2011, 11:05 PM
  4. Code thêm, xóa,sửa data từ nhiều tables khác nhau trong CSDL
    Gửi bởi lotus88 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 22-11-2010, 12:09 AM
  5. code dùng để truy xuất CSDL từ SQL vào trong C#
    Gửi bởi rohanhn trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 10-03-2009, 08:12 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn