2011-11-15 43 views
0

當前我正在使用DLL庫來獲取自定義對象的列表。ASP.NET MVC3:訪問數據庫並獲取幾行最快的方法是什麼?

這是非常好的,因爲能夠在其他項目中使用它。

但我想要一個下拉框,這是一個數據庫表的查找,字面上有3個選項(高,中,低),這不是唯一的情況,這是一個問題。

是否有任何獲取此類信息的簡短方法?

在ROR,你可以從字面上調用SQL字符串到一個數據庫並獲得名單,只用一行代碼.....

所以標識像這樣的:

var mylist = sqldb.query("SELECT * FROM Priority"); 

注:是的,上面是完全組成的。

理想情況下,我不需要設置任何模型...理想情況下也不必附加數據庫,而是使用查詢字符串 - 除非附件更容易並且可以從配置文件自定義。

更新: 下面的一個例子,我現在ahve以下,但它說System.ArgumentException: Keyword not supported: 'initial catalog'.

using (var db = Database.OpenConnectionString(WebLite.Properties.Settings.Default.dbConnString)) 
    { 
     var items = db.Query("SELECT * FROM TaskPriority"); 
    } 

我的連接字符串:Data Source=MYPC\WEB;Initial Catalog=WEBSQL;User ID=sa;Password=password;

+0

你想要快速和骯髒,堅實和可維護嗎? – jrummell

+0

@ jrummell:每個人都希望快速和可維護,但最終會變得骯髒和堅實。 –

+0

是否有你不想使用實體框架或LINQ to SQL的原因?在EF中,您可以執行數據優先項目並使用快速和骯髒的模型。 – Maess

回答

1

可以使用Database class從WebMatrix.Data:

var items = Database.Open(...).Query("SELECT * FROM Priority"); 

但是,在lon克運行,使用實體框架將更加可維護。

+0

然後這會關閉它嗎?即沒有維護 – Doomsknight

+0

是的,儘管你應該把'數據庫'放在'using'塊中。 – SLaks

+0

你也可以在LINQ中使用它。 – SLaks

1

如果您要訪問一個數據庫表中獲取幾行,你有幾個選擇:

  • 的LINQ到SQL
  • 實體框架
  • 的DataSet/TableAdapter的
  • 原始SQL與你自己的連接/命令。

我覺得最後的選擇是最簡單的。您的代碼會是這個樣子:

string queryString = 
     "SELECT OrderID, CustomerID FROM dbo.Orders;"; 
    using (SqlConnection connection = new SqlConnection(
       connectionString)) 
    { 
     SqlCommand command = new SqlCommand(
      queryString, connection); 
     connection.Open(); 
     SqlDataReader reader = command.ExecuteReader(); 
     try 
     { 
      while (reader.Read()) 
      { 
       Console.WriteLine(String.Format("{0}, {1}", 
        reader[0], reader[1])); 
      } 
     } 
     finally 
     { 
      // Always call Close when done reading. 
      reader.Close(); 
     } 
    } 

定義您的連接字符串到數據庫,並傳遞它然後建立你的SQL查詢語句,打開連接,構建命令,然後讀取槽返回的行。

+3

使用''而不是'finally'。 – SLaks

+0

那就是我現在正在做的事情,而在閱讀器循環中,我填充了一個自定義班級列表。但是,謝謝。要研究其他方法,你和其他人建議 – Doomsknight

1

最快的解決辦法:

  1. 創建一個新的LINQ to SQL模型(並打開它)。
  2. Priority表拖放到模型上(並保存)。
  3. 像這樣查詢模型:(new MyDataContext()).Priorities
1

Microsoft企業庫擁有「數據訪問應用程序塊」,可以非常容易地連接到數據。這些信息可以在這裏http://msdn.microsoft.com/en-us/library/ff664408(v=PandP.50).aspx

發現你可以(從http://www.4guysfromrolla.com/articles/070203-1.aspx)創建一個連接並獲取使用此代碼數據

string strSql = "select * from products where categoryid = 1"; 
string strConnTxt = "Server=(local);Database=Northwind;Integrated Security=True;"; 

DataGrid4.DataSource = SqlHelper.ExecuteReader(strConnTxt, CommandType.Text, strSql); 
DataGrid4.DataBind(); 
1

你可以使用NHibernate也許Dapper最接近聽起來你在找什麼。 從他們的示例頁面被盜:

public class Dog 
{ 
    public int? Age { get; set; } 
    public Guid Id { get; set; } 
    public string Name { get; set; } 
    public float? Weight { get; set; } 

    public int IgnoredProperty { get { return 1; } } 
}    

var guid = Guid.NewGuid(); 
var dog = connection.Query<Dog>("select Age = @Age, Id = @Id", new { Age = (int?)null, Id = guid }); 

dog.Count() 
    .IsEqualTo(1); 

dog.First().Age 
    .IsNull(); 

dog.First().Id 
    .IsEqualTo(guid); 
相關問題