//初始化數據庫連接 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");