: 이 샘플 코드입니다.
예를 들어
:
internal class Program
{
private static void Main(string[] args)
{
OdbcConnection connection = new OdbcConnection("");
OdbcCommand command = new OdbcCommand("SELECT * FROM Table WHERE Id = ? AND Column = ?", connection);
command.Parameters.Add("@id", OdbcType.Int).Value = 2;
command.Parameters.Add("@text", OdbcType.VarChar).Value = "test";
string preparedSql = command.GetPreparedSql();
// preparedSql =
Console.ReadLine();
}
}
public static class OdbcExtensions
{
public static string GetPreparedSql(this OdbcCommand command)
{
string[] splitted = command.CommandText.Split(new[] {'?'}, StringSplitOptions.RemoveEmptyEntries);
StringBuilder builder = new StringBuilder();
for (int i = 0; i < splitted.Length; i++)
{
builder.Append(splitted[i]);
OdbcParameter param = command.Parameters[i];
switch (param.DbType)
{
case DbType.Boolean:
builder.Append(Convert.ToBoolean(param.Value) ? "1" : "0");
break;
case DbType.AnsiString:
builder.AppendFormat("'{0}'", param.Value);
break;
default:
builder.Append(param.Value);
break;
}
builder.Append(" ");
}
return builder.ToString();
}
}
감사합니다,하지만 내가 필요하지 않습니다 : S 첫 번째 예제와 함께 내가 ODBC 유형에 대한 모든 경우를 삽입해야하고, 두 번째는 쿼리 난으로 인해 작동하지 않을 수 있기 때문에 질문 마커 만 "?", "@ID"와 같은 필드 별칭이 없습니다. – pava91
나는 당신이 의미하는 바를 알고, 그것이 당신을 더 도울 수 있기를 바랍니다. –
나는 그것을 시험해 본다! – pava91