복붙노트

[SQL] 어떻게 C #에서 SQL Server 데이터베이스에서 데이터를 검색하려면?

SQL

어떻게 C #에서 SQL Server 데이터베이스에서 데이터를 검색하려면?

나는 3 열 이름, 성, 연령과 데이터베이스 테이블이있다. 내 C # Windows 응용 프로그램에서 나는이 코드를 사용하여 내 SQL 서버 내 연결을 만든 ... TextBox1에라는 3 텍스트 상자를 가지고 :

SqlConnection con = new SqlConnection("Data Source = .;
                                       Initial Catalog = domain;
                                       Integrated Security = True");
con.Open();
SqlCommand cmd = new SqlCommand("Select * from tablename", con);

내 데이터베이스에서 값을 좀하고 싶습니다; 내가 TextBox1에에 값을 줄 경우는 데이터베이스의 값과 일치하고 해당 텍스트 상자에 다른 세부 정보를 검색 할 수 있습니다.

나는이 방법을 시도했지만 작동하지 않습니다 :

cmd.CommandText = "select * from tablename where firstname = '" + textBox1.Text + "' ";

어떻게하면이 텍스트 상자에 다른 모든 값을 검색하기 위해 무엇을 할 수 있는가?

해결법

  1. ==============================

    1.

     public Person SomeMethod(string fName)
            {
                var con = ConfigurationManager.ConnectionStrings["Yourconnection"].ToString();
    
                Person matchingPerson = new Person();
                using (SqlConnection myConnection = new SqlConnection(con))
                {
                    string oString = "Select * from Employees where FirstName=@fName";
                    SqlCommand oCmd = new SqlCommand(oString, myConnection);
                    oCmd.Parameters.AddWithValue("@Fname", fName);           
                    myConnection.Open();
                    using (SqlDataReader oReader = oCmd.ExecuteReader())
                    {
                        while (oReader.Read())
                        {    
                            matchingPerson.firstName = oReader["FirstName"].ToString();
                            matchingPerson.lastName = oReader["LastName"].ToString();                       
                        }
    
                        myConnection.Close();
                    }               
                }
                return matchingPerson;
            }
    

    몇 가지 여기서주의해야 할 : 당신의 코드 안전을 만드는 매개 변수화 쿼리를 사용했다. 방법 당신이 선택 성명을 발표하고있는 "여기서 x ="+ Textbox.Text + ""부분은 SQL 주입에 당신을 엽니 다.

    나는 이것을하기 위해 변경했습니다 :

      "Select * from Employees where FirstName=@fName"
      oCmd.Parameters.AddWithValue("@fname", fName);  
    

    그래서 코드 블록이해야 할 것입니다 것은 :

    어떤 사용자가 제공 한 일치하는 모든 firstnames가 있는지, 데이터베이스에 대해 SQL 문을 실행합니다. 그런 경우, 그 사람은 (클래스에 대한 내 대답은 아래 참조) Person 객체에 저장됩니다. 일치하는 항목이 없을 경우 Person 객체의 속성은 null이됩니다.

    분명 내가 정확히 당신이 뭘 하려는지 알 수없는, 그래서 관심을 지불 할 몇 가지에있다 : 더 후 일치하는 이름을 가진 한 사람이있는 경우, 마지막 하나는 저장을 다시 반송합니다. 이 데이터를 저장할 수 있도록하려면, 당신은 목록 <사람>에 추가 할 수 있습니다.

    Person 클래스는 그것을 청소기로 만들려면 :

     public class Person
        {
                public string firstName { get; set; }
                public string lastName { get; set; }
        }
    

    이제 메소드를 호출합니다 :

    Person x = SomeMethod("John");
    

    당신은 다음과 같이 Person 객체에서 오는 값으로 텍스트 상자를 채울 수 :

    txtLastName.Text = x.LastName;
    
  2. ==============================

    2.DbManager라는 클래스를 만들 :

    DbManager라는 클래스를 만들 :

    Class DbManager
    {
     SqlConnection connection;
     SqlCommand command;
    
           public DbManager()
          {
            connection = new SqlConnection();
            connection.ConnectionString = @"Data Source=.     \SQLEXPRESS;AttachDbFilename=|DataDirectory|DatabaseName.mdf;Integrated Security=True;User Instance=True";
            command = new SqlCommand();
            command.Connection = connection;
            command.CommandType = CommandType.Text;
         } // constructor
    
     public bool GetUsersData(ref string lastname, ref string firstname, ref string age)
         {
            bool returnvalue = false;
            try
            {
                command.CommandText = "select * from TableName where firstname=@firstname and lastname=@lastname";
                command.Parameters.Add("firstname",SqlDbType.VarChar).Value = firstname;
     command.Parameters.Add("lastname",SqlDbType.VarChar).Value = lastname; 
                connection.Open();
                SqlDataReader reader= command.ExecuteReader();
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
    
                        lastname = reader.GetString(1);
                        firstname = reader.GetString(2);
    
                        age = reader.GetString(3);
    
    
                    }
                }
                returnvalue = true;
            }
            catch
            { }
            finally
            {
                connection.Close();
            }
            return returnvalue;
    
        }
    

    두 번 폼에 (예를 들어, btnretrieve)이 버튼을 검색을 클릭하고 다음 코드를 삽입합니다 :

     private void btnretrieve_Click(object sender, EventArgs e)
        {
            try
            {
                string lastname = null;
                string firstname = null;
                string age = null;
    
                DbManager db = new DbManager();
    
                bool status = db.GetUsersData(ref surname, ref firstname, ref age);
                    if (status)
                    {
                    txtlastname.Text = surname;
                    txtfirstname.Text = firstname;
                    txtAge.Text = age;       
                   }
              }
           catch
              {
    
              }
       }
    
  3. ==============================

    3.데이터베이스에서 데이터를 검색하려면 :

    데이터베이스에서 데이터를 검색하려면 :

    private SqlConnection Conn;
     private void CreateConnection()
     {
        string ConnStr =
        ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;
        Conn = new SqlConnection(ConnStr);
     }
     public DataTable getData()
     {
     CreateConnection();
        string SqlString = "SELECT * FROM TableName WHERE SomeID = @SomeID;";
        SqlDataAdapter sda = new SqlDataAdapter(SqlString, Conn);
        DataTable dt = new DataTable();
        try
        {
            Conn.Open();
            sda.Fill(dt);
        }
        catch (SqlException se)
        {
            DBErLog.DbServLog(se, se.ToString());
        }
        finally
        {
            Conn.Close();
        }
        return dt;
    }
    
  4. ==============================

    4.당신은 당신의 연결을 설정 한 후이 간단한 방법을 사용할 수 있습니다 :

    당신은 당신의 연결을 설정 한 후이 간단한 방법을 사용할 수 있습니다 :

    private void getAgentInfo(string key)//"key" is your search paramter inside database
        {
            con.Open();
            string sqlquery = "SELECT * FROM TableName WHERE firstname = @fName";
    
            SqlCommand command = new SqlCommand(sqlquery, con); 
            SqlDataReader sReader;
    
            command.Parameters.Clear();
            command.Parameters.AddWithValue("@fName", key);
            sReader = command.ExecuteReader();
    
            while (sReader.Read())
            {
                textBoxLastName.Text = sReader["Lastname"].ToString(); //SqlDataReader
                //["LastName"] the name of your column you want to retrieve from DB
    
                textBoxAge.Text = sReader["age"].ToString();
                //["age"] another column you want to retrieve
            }
            con.Close();
        }
    

    이제 당신처럼 textBoxFirstName에 의해이 방법의 열쇠를 전달할 수 있습니다 :

    getAgentInfo(textBoxFirstName.Text);
    
  5. ==============================

    5.우리는 또한 우리가 일반적으로 API 필드로 DB에 대한 데이터를 테스트하고 검증하기위한 이러한 종류의 코드를 사용하여 조각의이 유형을 사용할 수 있습니다

    우리는 또한 우리가 일반적으로 API 필드로 DB에 대한 데이터를 테스트하고 검증하기위한 이러한 종류의 코드를 사용하여 조각의이 유형을 사용할 수 있습니다

    class Db
    {
        private readonly static string ConnectionString =
                ConfigurationManager.ConnectionStrings
                            ["DbConnectionString"].ConnectionString;
        public static List<string> GetValuesFromDB(string LocationCode)
        {
            List<string> ValuesFromDB = new List<string>();
            string LocationqueryString = "select BELocationCode,CityLocation,CityLocationDescription,CountryCode,CountryDescription " +
                $"from [CustomerLocations] where LocationCode='{LocationCode}';";
            using (SqlConnection Locationconnection =
                                     new SqlConnection(ConnectionString))
            {
                SqlCommand command = new SqlCommand(LocationqueryString, Locationconnection);
                try
                {
                    Locationconnection.Open();
                    SqlDataReader Locationreader = command.ExecuteReader();
                    while (Locationreader.Read())
                    {
                        for (int i = 0; i <= Locationreader.FieldCount - 1; i++)
                        {
                            ValuesFromDB.Add(Locationreader[i].ToString());
                        }
                    }
                    Locationreader.Close();
                    return ValuesFromDB;
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    throw;
                }
            }
    
        }
    
    }
    

    이 힘이 도움이 희망

  6. from https://stackoverflow.com/questions/14171794/how-to-retrieve-data-from-a-sql-server-database-in-c by cc-by-sa and MIT license