3

我来自 PHP,最终我会深入研究 NHibernate 或 Microsoft Entity Framework 之类的东西,但现在我真的很喜欢 PHP 的 PDO 等简单的东西来连接数据库:

$db = new PDO('sqlite:database');
$db->exec('delete from users');

PDO 抽象了数据库上的连接(不管它是什么,而不仅仅是 sqlite),并提供了一些常用的方法来执行准备好的语句和东西。.NET 中有这么简单的东西吗?

obs:我刚开始使用 C#,所以如果您可以非常具体地说明如何将库链接到项目或其他设置步骤(如果需要),我将非常感激(:~我正在使用 VS2012

4

2 回答 2

7

在 .NET 中,允许您查询关系数据库的技术称为ADO.NET。例如:

using (var conn = new SQLiteConnection("Your connection string comes here"))
using (var cmd = conn.CreateCommand())
{
    conn.Open();
    cmd.CommandText = "DELETE * FROM users";
    cmd.ExecuteNonQuery();
}

在此示例中,我使用了 SQLite 的 ADO.NET 提供程序,您可以使用它download from here

因此,第一步是让您从上述网站下载 .NET 的托管提供程序。

下一步是System.Data.SQLite.dll通过右键单击解决方案资源管理器中的“引用”节点并选择程序集来引用项目中的程序集。请小心,因为 SQLite 有 x86 和 x64 程序集,因此请确保选择最适合您的目标体系结构的程序集。

引用程序集后,SQLiteConnection我在示例中显示的类型以及覆盖 ADO.NET 基类的类型将可用于您的代码,并且您可以直接使用它来查询数据库。引用程序集后,不要忘记向using System.Data.SQLite;文件添加指令以将这些类纳入范围。

如果您不想经历下载、提取等所有痛苦……SQLite 依赖项,您可以简单地安装可用的System.Data.SQLite NuGet

了解 ADO.NET 是如何工作的,是了解未来 NHibernate 和 Entity Framework 等 ORM 框架如何工作的基础,所以从基础入手真的很重要。

于 2012-12-25T15:50:54.840 回答
0
PDO in dotNET
[enter link description here][1]
  [1]: https://www.nuget.org/packages/SDO_dotNET/1.0.2


    The SDO_dotNET Class Library is a high level wrapper around the ODBC, OLEDB, SQLServer and SQLite.

Example:
using SqlDB;

/******************************************************************
Sql Server
*******************************************************************/

string server      = @"INSTANCE\SQLEXPRESS";
string database = "DEMODB";
string username = "sa";
string password = "";

string connectionString = @"Data Source=" + server + ";Initial Catalog=" + database + "; Trusted_Connection=True;User ID=" + username + ";Password=" + password + "";
SDO db_conn = new SDO(connectionString);

Console.WriteLine("isConnected: " + db_conn.isConnected());
if (db_conn == null || !db_conn.isConnected())
{
    Console.WriteLine("Connessione non valida.");
    return;
}

string sql = "SELECT ID, Message FROM Logs ORDER BY IDLic;";
DataTable dtLogs = db_conn.SelectTable(sql);

if (dtLogs == null || dtLogs.Rows.Count == 0)
    return;

// Loop with the foreach keyword.
foreach (DataRow dr in dtLogs.Rows)
{
    Console.WriteLine("Message: " + dr["Message"].ToString().Trim());
}



/******************************************************************
SQLite
*******************************************************************/

string database = @"C:\Users\Utente\mydb.sqlite";

string connectionString = @"Data Source=" + database + "; Version=3; New=True; Compress=True;"; // local
SDO db_conn = new SDO(connectionString);

Console.WriteLine("isConnected: " + db_conn.isConnected());
if (db_conn == null || !db_conn.isConnected())
{
    Console.WriteLine("Connessione non valida.");
    return;
}

string sql = "SELECT firstname, surname FROM users ORDER BY firstname;";
DataTable dtLogs = db_conn.SelectTable(sql);

if (dtLogs == null || dtLogs.Rows.Count == 0)
    return;

// Loop with the foreach keyword.
foreach (DataRow dr in dtLogs.Rows)
{
    Console.WriteLine("Name: " + dr["firstname"].ToString().Trim() + " " + dr["surname"].ToString().Trim());
}`enter code here`
于 2018-12-13T00:33:55.373 回答