Nu är det helt snurrigt i huvudet... Ska titta på det du skriver imorn när jag vaknar. Måste iväg och träna lite innan mitt tråkiga jobb :)
Såhär ser det ut nu
const string SqlGetAll = "SELECT News.ID, News.Title, News.Content, News.nDate, Users.FullName, Users.Email FROM Users INNER JOIN News ON Users.ID = News.UserID;";
const string SqlGetByID = "SELECT News.ID, News.Title, News.Content, News.nDate, Users.FullName, Users.Email FROM Users INNER JOIN News ON Users.ID = News.UserID WHERE News.ID = ? ORDER BY News.nDate DESC;";
const string SqlGetTop5 = "SELECT TOP 5 News.ID, News.Title, News.Content, News.nDate, Users.FullName, Users.Email FROM Users INNER JOIN News ON Users.ID = News.UserID ORDER BY News.nDate DESC;";
const string SqlGetTop1 = "SELECT TOP 1 News.ID, News.Title, News.Content, News.nDate, Users.FullName, Users.Email FROM Users INNER JOIN News ON Users.ID = News.UserID ORDER BY News.nDate DESC;";
const string SqlGetNewsList = "SELECT News.ID, News.Title, News.nDate, Users.FullName FROM Users INNER JOIN News ON Users.ID = News.UserID ORDER BY News.nDate DESC;";
Skapa skapa IList
public List<News> GetNews(string SelectType)
{
string strSql;
switch (SelectType)
{
case "News":
strSql = SqlGetAll;
break;
case "ByID":
strSql = SqlGetByID;
break;
case "Top1":
strSql = SqlGetTop1;
break;
case "Top5":
strSql = SqlGetTop5;
break;
case "List":
strSql = SqlGetNewsList;
break;
default:
strSql = SqlGetAll;
break;
}
// Create the datatable
DataTable dt = GetTable(strSql);
// Declare the list
List<News> News = new List<News>();
// Iterate through the datatable
for (int i = 0; i < dt.Rows.Count; i++)
{
// Declare each row
News news = new News();
// Bind the datatable values to the news object.
news.ID = (int)dt.Rows[i]["ID"];
news.nDate = (DateTime)dt.Rows[i]["nDate"];
news.Title = dt.Rows[i]["Title"].ToString();
news.FullName = dt.Rows[i]["FullName"].ToString();
if (SelectType != "List")
{
news.Content = dt.Rows[i]["Content"].ToString();
news.Email = dt.Rows[i]["Email"].ToString();
}
//Adds the row to the collection list
News.Add(news);
}
return News;
}//End function
skapa datatable och lägg till parameter
public DataTable GetTable(string strSql)
{
using (OleDbConnection dbCon = new OleDbConnection(ConfigurationManager.ConnectionStrings["wbBas"].ConnectionString))
{
OleDbCommand dbCmd = new OleDbCommand(strSql, dbCon);
// Add parameters if any
if (_paramsList != null)
foreach (OleDbParameter p in _paramsList)
dbCmd.Parameters.Add(p);
// Open connection and fill the datatable
dbCon.Open();
DataTable dt = new DataTable("News");
dt.Load(dbCmd.ExecuteReader());
// Clean up objects
dbCon.Close();
dbCmd.Dispose();
// Return the datatable
return dt;
}
}
public void AddOleDbParameter(string ParamName, OleDbType DbType, object Value)
{
// If the parameter list isnt created do so
if (_paramsList == null)
_paramsList = new List<IDataParameter>();
{
// Create the parameter
OleDbParameter param = new OleDbParameter(ParamName, DbType);
param.Value = Value;
// Add the parameter to the list
_paramsList.Add(param);
}
}
och sedan för att anropa mitt dal skulle jag då göra följande....
public List<News> GetNewsByID(int id)
{
NewsDAL dal = new NewsDAL();
dal.AddOleDbParameter("p1", OleDbType.Numeric, id);
return dal.GetNews("ByID");
}
Det är säkert inte optimalt men det känns smidigt vid första anblicken... Som sagt jag hinner inte spåna på ditt inlägg just nu men Jag ska titta på det imorn när jag inte måste iväg och jobba :)
Ni får gärna kommentera mera på det här inlägget. Jag förstår inte de grundläggande principerna i .net och C# än men jag lär mig så all hjälp att göra rätt mottages tacksamt.
Gladh, jag måste verkligen inte göra så som jag postade här nu jag försöker bara komma fram till vilket som blir bäst.