Я разрабатываю решение C# с доступом к данным Oracle.Query & generic
И хотел бы иметь общее решение о запросе.
Вот часть моего кода:
public DataTable GetData(string query)
{
DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OracleClient");
using (DbConnection conn = factory.CreateConnection())
{
try
{
DbConnectionStringBuilder csb = factory.CreateConnectionStringBuilder();
csb["Data Source"] = @"Northwind";
csb["User Id"] = @"Northwind";
csb["Password"] = @"Northwind";
conn.ConnectionString = csb.ConnectionString;
conn.Open();
using (DbCommand cmd = conn.CreateCommand())
{
cmd.CommandText = query;
using (DataTable dt = new DataTable())
{
DbDataAdapter da = factory.CreateDataAdapter();
cmd.CommandType = CommandType.Text;
da.SelectCommand = cmd;
da.Fill(dt);
return dt;
}
}
}
catch (Exception ex)
{
throw new Exception("Error", ex);
}
finally
{
if (conn.State != ConnectionState.Closed)
conn.Close();
}
}
}
И я называю мой метод, как это:
DataAccess.Provider data = new DataAccess.Provider();
DataTabel dt = dt.GetData("select * from myTable);
Это работает довольно хорошо, но это не моя цель.
У меня есть второй класс под названием CL_mpg
со всеми моими SQL-запросами.
class CL_MPG
{
public string rq_sql;
public string selectParam(string param)
{
this.rq_sql = "select * from myTable where id = '" + param + "';";
return this.rq_sql;
}
public string select()
{
this.rq_sql = "select * from myTable";
return this.rq_sql;
}
//...
}
И я хотел бы использовать мои методы selectParam
и/или select
заполнить мою DataTable, но я не знаю, как сделать это.
Любая причина, по которой вы переворачиваете свой собственный DAL, в отличие от использования существующей структуры? – Stijn
Я не могу использовать фреймворк, школьный проект – Shrimp
@Shrimp пока вы используете классы BCL (.NET Framework) ... зачем рисовать произвольную строку? Также: * параметры *; никогда не объединяйте значения в SQL. Если вы узнаете ** одно: ** этот термин, узнайте об этом. –