.NET类似于PHP的PDO?

时间:2012-12-25 15:48:01

标签: c# php database pdo

我来自PHP,最终我将深入研究NHibernate或Microsoft Entity Framework之类的东西,但是现在我真的只想像PHP的PDO那样简单地连接到数据库:

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

PDO抽象数据库上的连接(无论是什么,而不仅仅是sqlite),并提供一些常用方法来执行预处理语句和内容。在.NET中有这么简单吗?

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

2 个答案:

答案 0 :(得分: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框架如何工作的基础,因此从基础知识开始非常重要。

答案 1 :(得分: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`