저장 프로 시저를 사용하면 가장 안전한 방법입니다.
일부 힌트 :
:
- 당신은 아마 또한
System.Data.SqlClient
네임 스페이스
- 가 연결, 명령 및 어댑터가
using
문
다음은 간단한 예제의에서 초기화를 개체를 동봉 개체를 사용할 수있다
string sqlStoredProcedure = "SelectFromTable";
using (OdbcConnection dbConnection = new OdbcConnection(dbConnectionString))
{
dbConnection.Open();
using (OdbcCommand command = new OdbcCommand(sqlStoredProcedure, dbConnection))
{
command.CommandType = System.Data.CommandType.StoredProcedure;
command.Parameters.Add(new OdbcParameter("@table", tableName));
using (OdbcDataAdapter adapter = new OdbcDataAdapter(command))
{
adapter.SelectCommand = command;
adapter.Fill(tableData);
}
}
}
어쩌면 사용하여, 모든 테이블 이름을 검색하고 목록의 항목으로 tableName
문자열 변수의 유효성을 확인하는 것입니다 이동하는 또 다른 방법 :
string sql = "SELECT TOP 10 * FROM {0}";
using (OdbcConnection dbConnection = new OdbcConnection(dbConnectionString))
{
dbConnection.Open();
DataTable tables = dbConnection.GetSchema(OdbcMetaDataCollectionNames.Tables);
var matches = tables.Select(String.Format("TABLE_NAME = '{0}'", tableName));
//check if table exists
if (matches.Count() > 0)
{
using (OdbcCommand command = new OdbcCommand(String.Format(sql, tableName), dbConnection))
{
using (OdbcDataAdapter adapter = new OdbcDataAdapter(command))
{
adapter.SelectCommand = command;
adapter.Fill(tableData);
}
}
}
else
{
//handle invalid value
}
}
:
이여기에 시나리오를 기반으로 간단한 구현입니다 감사! 하지만 유감스럽게도 SP와 같은 것을 추가하기 위해 데이터베이스에 액세스 할 수 없으므로 응용 프로그램에서이 모든 작업을 수행해야합니다. 그러나 이것은 흥미있는 해결책입니다. 또한 http://www.troyhunt.com/2012/12/stored-procedures-and-orms-wont-save.html이 솔루션에 적용됩니까? – user692898
동적 쿼리가'@ SearchTerm' 매개 변수를 사용하여 빌드 된 후에 SQL 저장 프로 시저에서'EXEC (@query)'를 제공 한 링크에서 호출됩니다. 따라서 SQL 개발자는 실제로 데이터를 사용하는 방법과 동적 쿼리의 위험을 처리해야합니다. –
조금 덜 우아하더라도 편집을 가장 쉽게 볼 수있는 것처럼 보입니다. 당신의 도움을 주셔서 감사합니다! – user692898