블로그 이미지
Magic_kit
study 관련자료를 한곳으로 자기 개발 목적으로 재태크 재무 관리 목적으로 일상생활의 팁을 공유 하기 위하여 블로그를 개설 하였습니다.

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
반응형

Category

Recent Post

Recent Comment

Archive

'.Net Project/ADO.NET 3.5'에 해당되는 글 27

  1. 2009.09.25 03장 ADO.NET Connection 복습
  2. 2009.09.24 02장 ADO.NET DB Connection
  3. 2009.09.24 01장 ADO.NET (DB 입출력 관련된 모든 명령어들의 집합)
2009. 9. 25. 09:38 .Net Project/ADO.NET 3.5
반응형

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;

public partial class FrmADONET : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            DisplayDatees();
        }
    }


    //데이터 불러온다
   private void DisplayDatees()
    {
        SqlConnection conn = new SqlConnection("Data Source = .;Initial 
                              Catalog=Market;User ID=Market;Password=1234;");
        conn.Open();

        SqlCommand cmdd = new SqlCommand
                                     ("Select *From Categories", conn);
        cmdd.CommandType = CommandType.Text;

        //ExecuteReader()메서드의 결과값을 DataReader개체에 담기
        SqlDataReader dr = cmdd.ExecuteReader();

        //GridView바인딩
        this.ctrlGridView.DataSource = dr; //datareader, dataSet, List<T>
        this.ctrlGridView.DataBind(); //그렇지 않으면 알아서 모양 만들어 출력

        dr.Close(); //데이터리더도 반드시 Close()해야 함...

        conn.Close();
    }


    protected void btnCatory_Click(object sender, EventArgs e)
    {
        //[0]변수선언부
        string strCategoryName = txtInput.Text.Trim();
        //[1]커넥션
        SqlConnection con = new SqlConnection();
        con.ConnectionString = 
       "server=.;database=Market;uid=Market;pwd=1234;";
        //lblDisplay.Text = "연결되었습니다";
      
        con.Open();

        //[2]커맨드
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = con;
        cmd.CommandText = String.Format
               ("Insert Categories(CategoryName)
                 Values('{0}')", strCategoryName);
        cmd.CommandType = CommandType.Text;

        //[3]실행 
        // 모든 명령어 실행 <-> Selecteh 가능 -> Reader사용 
        int rows = cmd.ExecuteNonQuery();    
        this.lblDisplay.Text = rows.ToString() + "개 입력되었습니다";

        con.Close();

    }


    //새로고침
    protected void BtnRefresh_Click(object sender, EventArgs e)
    {
        DisplayDatees();
        //ctrlGridView.DataBind();
    }


}


반응형
posted by Magic_kit
2009. 9. 24. 14:28 .Net Project/ADO.NET 3.5
반응형

--  sqlError 처리

 


 protected void btnConnect_Click(object sender, EventArgs e)
    {

        //Connection
        SqlConnection con = new SqlConnection();
        con.ConnectionString =
                "server=.;database=Market;uid=Market;pwd=1234;";
             
        //Command
        SqlCommand cmd = new SqlCommand
                                    ("Select *From categories", con);
        cmd.CommandType = CommandType.Text;

        //Data Reader
        try
        {
            con.Open();
            SqlDataReader dr = cmd.ExecuteReader();
            this.lblError.Text = "연결완료";
           
            con.Close();
        }
        catch (SqlException se)
        {

            SqlErrorCollection sec = se.Errors;

            //에러를 묶어서 출력 (예외 처리 의해 에러 발생)
            string msg = "";
            foreach (var item in sec) //[3] 에러 하나를 담는 클래스
            {
                msg += item.ToString() + "<br />"; //.Message : 에러 메시지
            }
            this.lblError.Text = msg;
        }
    }


--sqlConnectionWithUsing

     

                                                  
public partial class FrmSqlConnectionWithUsing : System.Web.UI.Page
{
    private string ConnectionString; //필드 : 데이터베이스 연결문자열
    //생성자(Ctor + 탭 + 탭)
    public FrmSqlConnectionWithUsing()
    {
        ConnectionString = 
                      "server=.;database=Market;uid=Market;pwd=1234;";
    }
    protected void Page_Load(object sender, EventArgs e)
    {
            //Empty
    }
    protected void btnConnection1_Click(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection(ConnectionString);
        con.Open();
        this.lblDisplay.Text = "연결완료";
       
        con.Close(); //using구문 사용하면 생략 가능
    }
    protected void btnConnection2_Click(object sender, EventArgs e)
    {
        //using()안에서 생성된 DB는 using 구문이 끝나면 자동으로 닫힌다.
        using (SqlConnection con = new SqlConnection(ConnectionString))
        {
            con.Open();
            this.lblDisplay.Text = "연결완료";           
        } //using 구문의 마지막 } 가 실행되면 ,자동으로 Close되므로 생략 가능
    }
}



반응형
posted by Magic_kit
2009. 9. 24. 13:22 .Net Project/ADO.NET 3.5
반응형
Classes to connect, query,and administer data sources
1. 데이터베이스 연결 및 해제
2. 명령어 실행
   (Create, Alter, Drop, Insert, Select, Update, Delete 등 ...)
3. 저장 프로시저 (Add, Get  등... )

4. Framework Data Providers
- Uniform API for accessing data from different sources

- Enables data to be accessed through a connection or a data set

- Data binding 
   Binds a data source to ASP.Net, Windows Form, WPF Controls

- SQL Server, OLE DB,
ODBC, Oracle

- 특징: Programming Interface(API), Disconnected data access
          Query(LINQ), ADO.NET Entity Framework 

Example -1)
- To Connect to a database :  Define a connection String for the database
                                      Create a Connection object by using
                                       the connection.

- You Can use a ConnectionStringBuilder to create the Connection string 
   in a type-safe manner

  

 //[1] SQLConnection Class is Instance Create (클래스 인스턴스 생성)
        //(using System.Data.SqlClient -- Add) (네임스페이스 추가)
        SqlConnection con = new SqlConnection();
       
        //[2] ConnectionString Property (ConnectionString 속성 지정)
        //Database ; Uid ; pwd 속성 지정(연결하려는 SQLServer 선택)

        con.ConnectionString = "server = .;
                                         database=Market;uid=Market;pwd=1234;";

        //[3]Open() Method DB Connection (메서드로 DB 접속)
        con.Open();

        //[!]CRUD (필요한 처리)
        this.lblDisplay.Text = "DB Connection";

        //[4] Close() Method DB Connection Disbie
        //(메서드로 DB접속해제)
        con.Close();


   SqlConnection con = new SqlConnection
           ("Data Source=(local);Initial Catalog=Market;" + "User
                                ID=Market;Password=1234;");
        con.Open();

        lblDisplay.Text = "ConnectionString ";
        con.Close();

 

 //[1]동적으로 데이터베이스 연결 문자열 생성
        SqlConnectionStringBuilder sb =
                                          new SqlConnectionStringBuilder();
        //[2] 인덱서를 사용해서 값을 입력받음 : SQL 인젝션 해결
        sb["Data Source"] = "(local)";
        sb["Initial Catalog"] = "Market";
        sb["User ID"] = "Market";
        sb["Password"] = "1234";

        SqlConnection objCon = new SqlConnection();
       
        //위에서 지정한 값으로 설정 
        objCon.ConnectionString = sb.ConnectionString ;         
        objCon.Open();
        lblDisplay.Text = "ConnectionStringBuilder";
        objCon.Close();


--예외처리

 SqlConnection con = new SqlConnection(
                (new SqlConnectionStringBuilder("Server=.; 
        database=Market;uid=Market;pwd=1234;")).ConnectionString);
        try
        {
             con.Open();
             lblError.Text = "연결완료";
        }
        catch (SqlException se)
        {

            lblError.Text = se.Message;
        }
        con.Close();


--SQL Command

 


SqlConnection con = new SqlConnection();
        con.ConnectionString =  "
                     "server=.;database=Market;uid=Market;pwd=1234;";
        con.Open();

        //[!] CRUD를 하려면, DB가 오픈되어져 있어야 한다...
        //[1] Connection 클래스의 인스턴스 생성 : 모든 명령어 실행

        SqlCommand cmd = new SqlCommand();
      
        //[2] Connection 속성으로 어떤 연결된 DB를 사용한건지 지정
        cmd.Connection = con; //개체명
       
        //[3] CommandText 속성으로 명령어 지정 :
        //SQL문 또는 저장 프로시저명

        cmd.CommandText = "Insert Into Categories
                                    (CategoryName) Values ('가전')";
       
        //[4] CommandType 속성으로 : SQL 또는 SP중 선택 
        cmd.CommandType = CommandType.Text; 
                        
        //[5] ExecuteNonQuery() 메서드로 모든 명령어 실행
        cmd.ExecuteNonQuery();             

        //[6] 마무리
        this.lblDisplay.Text = "저장되었습니다.";

        con.Close();


--Data Reader      

 


public partial class FrmSqlDataReader : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //폼이 처음 로드할 때에만 Select 하
        if (!Page.IsPostBack)
        {
            DisplayData();            
        }
    }


    private void DisplayData()
    {
        SqlConnection con = new SqlConnection
        ("server=.;database=Market;uid=Market;pwd=1234;");
        con.Open();

        SqlCommand cmd = new SqlCommand();
        cmd.Connection = con;
        cmd.CommandText = "Select *From Categories";
        cmd.CommandType = CommandType.Text;

        //[1]데이터 조회 : Select문은 레코드를 받아와야하기 때문에... 
        
        //Reader()메서드 실행 후 결과값 담기
        SqlDataReader dr = cmd.ExecuteReader(); 
 
        //[2]GridView와 같은 데이터 컨트롤에 바인딩
        this.ctlCategoryList.DataSource = dr;
        this.ctlCategoryList.DataBind(); //실행

        //[3] DataReader는 반드시 Close()
        dr.Close();
        con.Close();
    }
}


-- SqlReaderRead

 


 
 protected void btnSelect_Click(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection
                            ("server=.;database=Market;uid=Market;pwd=1234;");
        con.Open();

        SqlCommand cmd = new SqlCommand();
        cmd.Connection = con;
        //넘겨온 값으로 쿼리문 작성
        cmd.CommandText = "Select *From Categories Where
                                       CategoryID = " + txtCategoryID.Text;
       
         cmd.CommandType = System.Data.CommandType.Text;

        //데이터 리더
        SqlDataReader dr = cmd.ExecuteReader();
      
        //[!] 읽어온 데이터를 Grid와 같은 컨트롤이
                아닌 일반 컨트롤에 바인딩
        if (dr.Read())//데이터가 읽혀진다면??
        {
       
        //아래 바인딩 관련 GetXXX 메서드는 시간을 학습
               
        //txtCategoryName.Text = dr.GetString(1);
       //txtSuperCategory.Text = dr.IsDBNull(2) ? "널" : dr.GetString(2);
       //txtAlign.Text = dr.GetInt32(3).ToString();

            //txtCategoryName.Text = dr["CategoryName"].ToString();
            string categoryName = dr.GetString(1);
            txtCategoryName.Text = categoryName; //위의 방식과 동일

            if (dr["SuperCategory"] != null)
            {
                txtSuperCategory.Text = dr["SuperCategory"].ToString();
            }
            ///////////////////////////////////////////////////////
            ///보류///
            //int? SuperCategory = dr.IsDBNull(2) ? 0 : dr.GetInt16(2);
            //if (SuperCategory != null)
            //{
            //    txtSuperCategory.Text = SuperCategory.ToString();
            //}
           
            //txtAlign.Text = dr["Align"].ToString();
            int align = dr.GetInt16(3);
            txtAlign.Text = align.ToString(); //위의 주석과 동일
        }

        //마무리
        dr.Close();
        con.Close();
}

               
 


반응형
posted by Magic_kit