PetaPoco 基礎操作


//初始化數據庫連接
var db=new PetaPoco.Database("connectionStringName");


//查詢單個值
long count=db.ExecuteScalar<long>("SELECT Count(*) FROM articles");


//返回一條記錄
var a = db.SingleOrDefault<article>("SELECT * FROM articles WHERE article_id=@0", 123));

//返回一條記錄,可以省略select,用where開頭,會自動查詢出全部字段(不是*號)
var a=db.SingleOrDefault<article>("WHERE article_id=@0", 123);

//返回一條記錄,可以From開頭,會自動查詢出全部字段(不是*號)
var a = db.SingleOrDefault<article>("FROM whatever WHERE id=@0", 123);

//如果有主鍵,可以這樣寫
var a = db.SingleOrDefault<article>(some_id);

//分頁,分頁的代碼會自動生成
var result=db.Page<article>(1, 20,"SELECT * FROM articles WHERE category=@0 ORDER BY date_posted DESC", "coolstuff");


// 逐行查詢每條記錄,一次只從數據庫表中取一條數據
foreach (var a in db.Query<article>("SELECT * FROM articles"))
{
    Console.WriteLine("{0} - {1}", a.article_id, a.title);
}

//動態查詢,返回dynamic,這種方式不支持自動添加Select
foreach (var a in db.Fetch<dynamic>("SELECT * FROM articles"))
{
    Console.WriteLine("{0} - {1}", a.article_id, a.title);
}
//查詢單個字段,返回非Poco對象,支持所有的Type.IsValueType,字符串和byte數組
foreach (var x in db.Query<long>("SELECT article_id FROM articles"))
{
    Console.WriteLine("Article ID: {0}", x);
}

//檢查主鍵是否存在
if (db.Exists<article>(23)) 
    db.Delete <article>(23);



//執行Sql,不返回值
db.Execute("DELETE FROM articles WHERE draft<>0");

//插入記錄
// Create the article
var a=new article();
a.title="My new article";
a.content="PetaPoco was here";
a.date_created=DateTime.UtcNow;
// Insert it
db.Insert(a);



//修改記錄
// Get a record
var a=db.SingleOrDefault<article>("SELECT * FROM articles WHERE article_id=@0", 123);
// Change it
a.content="PetaPoco was here again";
// Save it
db.Update(a);

//修改一個屬性更簡潔的寫法
db.Update("articles", "article_id", new { title="New title" }, 123);

//更新的另一種寫法
db.Update<article>("SET title=@0 WHERE article_id=@1", "New Title", 123);

//更新指定的字段
a.Update(new string[] { "title" });
//也可以這樣更新
db.Update<user>(u, new string[] { "title" });


//刪除記錄
//通過主鍵刪除
db.Delete(a);

//自定義刪除
db.Delete<article>("WHERE article_id=@0", 123);


//事務,而且事物可以嵌套哦
using(var scope = db.GetTransaction())
{
    //todo: Do transacted updates here

    // Commit
    scope.Complete();

}


//支持存儲過程,還不支持out 參數?
db.Query<type>("CALL storedproc")     // MySQL stored proc
db.Query<type>("EXECUTE stmt")        // MySQL prepared statement
db.Query<type>("EXECUTE storedproc")  // SQL Server


//執行Sql
databaseQuery.Execute("insert into temp1 (t) values (@0)", 
                new SqlParameter() { SqlDbType = SqlDbType.VarBinary, Value = DbNull.Value });




//組裝Sql
var id=123;
var a=db.Query<article>(PetaPoco.Sql.Builder
    .Append("SELECT * FROM articles")
    .Append("WHERE article_id=@0", id)
    .Append("AND date_created<@0", DateTime.UtcNow)
)


//動態組裝Sql
var id=123;
var sql=PetaPoco.Sql.Builder
    .Append("SELECT * FROM articles")
    .Append("WHERE article_id=@0", id);

if (start_date.HasValue)
    sql.Append("AND date_created>=@0", start_date.Value);

if (end_date.HasValue)
    sql.Append("AND date_created<=@0", end_date.Value);

var a=db.Query<article>(sql)

//通過命名的參數來組裝Sql
sql.Append("AND date_created>=@start AND date_created<=@end", 
                new 
                { 
                    start=DateTime.UtcNow.AddDays(-2), 
                    end=DateTime.UtcNow 
                }
            );

//組裝Sql還可以這樣
var sql=PetaPoco.Sql.Builder()
            .Select("*")
            .From("articles")
            .Where("date_created < @0", DateTime.UtcNow)
            .OrderBy("date_created DESC");

//還可以更復雜
var sql = Sql.Builder
    .Select("*")
    .From("articles")
    .LeftJoin("comments").On("articles.article_id=comments.article_id");

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM