[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.
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.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.데이터베이스에서 데이터를 검색하려면 :
데이터베이스에서 데이터를 검색하려면 :
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.당신은 당신의 연결을 설정 한 후이 간단한 방법을 사용할 수 있습니다 :
당신은 당신의 연결을 설정 한 후이 간단한 방법을 사용할 수 있습니다 :
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.우리는 또한 우리가 일반적으로 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; } } } }
이 힘이 도움이 희망
from https://stackoverflow.com/questions/14171794/how-to-retrieve-data-from-a-sql-server-database-in-c by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 포스트 그레스에서 열 이름 키워드처럼 이스케이프 (0) | 2020.04.18 |
---|---|
[SQL] 하나의 문에서 SQLite는 테이블 변경 추가 다중 열 (0) | 2020.04.18 |
[SQL] 어떻게 SQL 서버에서 이메일을 보내? (0) | 2020.04.18 |
[SQL] 하나의 문 주위의 트랜잭션 기능은 무엇입니까? (0) | 2020.04.18 |
[SQL] 어떤 SQL 쿼리, 더 나은 MATCH 반대 또는 LIKE입니까? (0) | 2020.04.18 |