2009-11-01 2 views
1

Я пытаюсь использовать SQLite в своем приложении, и он был ухабистым. Несколько вещей, во-первых.Связанный с SQLite SQLite источник данных?

  1. Из-за наличия VS 2008 Express поддержка времени разработки SQLite отсутствует. Я сделал некоторое чтение, и я довольно смущен тем, как использовать командные SQL-соединения со стандартными элементами управления данными, то есть gridview. Если представления запрашивают источники данных, какой источник данных я могу использовать для использования своих пользовательских операторов SQL? И как это выбрать, учитывая, что я не могу использовать поддержку времени разработки?

Спасибо,

Камерон

ответ

1

Я никогда не использовал поддержку проектирования в Visual Studio и с SQLite Интересно, если это вообще возможно, так что я хотел бы предложить вам, чтобы попасть в кодирования: -) Вот пример, иллюстрирующий основные идеи. Вы начинаете с создания базы данных:

Global.asax:

public class Global : System.Web.HttpApplication 
{ 
    public string GetDbFile() 
    { 
     return Path.Combine(Server.MapPath("~/App_Data"), "data.db3"); 
    } 

    public string GetConnectionString() 
    { 
     return "Data Source=" + GetDbFile() + ";Version=3;"; 
    } 

    protected void Application_Start(object sender, EventArgs e) 
    { 
     var dbFile = GetDbFile(); 
     if (File.Exists(dbFile)) 
     { 
      File.Delete(dbFile); 
     } 
     ExecuteCommand("create table users (usr_id integer primary key, usr_name string)"); 
     ExecuteCommand("insert into users (usr_id, usr_name) values (1, 'user 1')"); 
     ExecuteCommand("insert into users (usr_id, usr_name) values (2, 'user 2')"); 
    } 

    public void ExecuteCommand(string sql) 
    { 
     using (var connection = new SQLiteConnection(GetConnectionString())) 
     using (var command = connection.CreateCommand()) 
     { 
      connection.Open(); 
      command.CommandText = sql; 
      command.ExecuteNonQuery(); 
     } 
    } 
} 

Конечно, вы можете пропустить этот шаг, если у вас уже есть файл базы данных SQLite. Вам не нужно будет воссоздавать его каждый раз, когда запускается ваше приложение :-)

Как только у вас есть база данных, заполненная данными, вы можете показать ее в сетке.

default.aspx:

<%@ Page Language="C#" %> 
<%@ Import Namespace="System.Linq" %> 
<%@ Import Namespace="System.Collections.Generic" %> 
<%@ Import Namespace="System.Data.SQLite" %> 

<script type="text/C#" runat="server"> 
    private class User 
    { 
     public int Id { get; set; } 
     public string Name { get; set; } 
    } 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      usersGrid.DataSource = GetUsers(); 
      usersGrid.DataBind(); 
     } 
    } 

    private IEnumerable<User> GetUsers() 
    { 
     using (var connection = new SQLiteConnection(ApplicationInstance.GetConnectionString())) 
     using (var command = connection.CreateCommand()) 
     { 
      connection.Open(); 
      command.CommandText = "select usr_id, usr_name from users"; 
      using (var reader = command.ExecuteReader()) 
      { 
       while (reader.Read()) 
       { 
        yield return new User { Id = reader.GetInt32(0), Name = reader.GetString(1) }; 
       } 
      } 
     } 
    } 
</script> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:GridView ID="usersGrid" runat="server" /> 
    </div> 
    </form> 
</body> 
</html> 
Смежные вопросы