for beginners - ado.net
DESCRIPTION
TRANSCRIPT
![Page 1: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/1.jpg)
INTRODUCTION TO ADO.NET
![Page 2: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/2.jpg)
Introductions: Stephen Walch
• Microsoft technologies developer – 12 years• Notes developer - 11 years
• Built 9 products• Presented at 2 Lotuspheres, 1 MEC, others
• Proposion, Inc.• Started January 2002• Integrating Microsoft .NET with Notes and Domino
![Page 3: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/3.jpg)
Proposion Products
(Q1 2005)
![Page 4: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/4.jpg)
Agenda• Basic principles of ADO.NET• Introduction to Proposion N2N• Programming with ADO.NET classes• Lab #1: Web Contact List• Programming with ADO.NET DataSets• Proposion N2N Specifics• Lab #2: Notes Data Integrator
![Page 5: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/5.jpg)
ADO.NET Basic principles (1)• All data providers implement the same set of standard interfaces:• DataConnection• DataCommand• DataParameter• DataReader• DataAdapter
![Page 6: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/6.jpg)
ADO.NET Basic principles (2)• Microsoft ships some data providers:• SQL Server• Oracle• OleDb• ODBC
• But third parties can implement their own:• IBM (for DB2)• Proposion N2N (for Notes/Domino)
![Page 7: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/7.jpg)
Basic principles (3)• ADO.NET includes common classes for representing in-memory data:• DataSet, DataTable, DataView
• May include schema and constraints• Designed to work with .NET XML classes• Great for caching or transporting data• Able to track state changes• Typed DataSets may be auto-generated
![Page 8: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/8.jpg)
Basic principles (4)• Data binding allows DataSets (etc.) to be “plugged in” to user interface components• Data grids, List boxes, Text boxes• Third-party components (charts, etc.)• Windows, Web, Mobile
• Support for development tools part of the plumbing• Visual Studio.NET, etc.
![Page 9: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/9.jpg)
So what about Notes/Domino?• NSF databases are loosely structured collections of documents/objects (“notes”)• Notes have named data elements (“items”)• Usually typed (text, number, date)• Can be multi-valued or binary (attachments)• Rich text and MIME
• Notes can be linked in as parent/child• Views & Folders select and index notes
![Page 10: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/10.jpg)
More “weird” Notes stuff
• No schema or guarantee of data consistency!• Forms allow entry/display of notes• Agents and actions• Full-text search• Security• Database ACLs, roles, groups, encryption• Per-note reader and author restrictions
![Page 11: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/11.jpg)
Introducing…
![Page 12: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/12.jpg)
About Proposion N2N• Data driver for connecting toLotus Notes/Domino data and services• Managed ADO.NET data provider• Use any .NET language• Plug into ADO.NET components• Leverage data binding• Direct access to Notes core interfaces• Managed C++ and Notes C API• Extremely fast and robust
![Page 13: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/13.jpg)
Proposion N2N features
• Read/write/delete/mail documents• Navigate views/folders, Use full-text search• Use Forms to select data or validate inputs• Access Rich text, Attachments, Images• Run LotusScript agents, Use @Formulas• Unread marks, parent/response hierarchies• Access to design information
![Page 14: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/14.jpg)
Alternatives•COM interfaces and .NET COM Interop• Familiar to LotusScript developers•Good option for Windows apps•Not good for robust, scaleable, multi-threaded web apps or web services
•NotesSQL data driver and ODBC data provider• Slow and buggy• Feature poor•Notes C API and PInvoke•Web Services
![Page 15: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/15.jpg)
Agenda• Basic principles of ADO.NET• Introduction to Proposion N2N• Programming with ADO.NET classes• Lab #1: Web Contact List• Programming with ADO.NET DataSets• Proposion N2N Specifics• Lab #2: Notes Data Integrator
![Page 16: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/16.jpg)
ADO.NET Data Connection• Represents an open connection to a data source• IDbConnection → NsfConnection• Properties• ConnectionString• Methods• Open()• Close()• BeginTransaction() *
![Page 17: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/17.jpg)
ADO.NET Data Command•Represents a command statement that is executed while connected to a data source• IDbCommand → NsfCommand•Properties• Connection• CommandType, CommandText• Parameters•Methods• ExecuteNonQuery()• ExecuteReader()
![Page 18: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/18.jpg)
ADO.NET Data Reader•Provides a means of reading a forward-only stream of results from a command• IDataReader, IDataRecord → NsfDataReader•Properties• FieldCount• Item[“name”], Item[index]•Methods• Read()•GetName(index)•GetValue(index), GetString(index)…•GetEnumerator()
![Page 19: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/19.jpg)
Sample: Query with Data Reader• Create a connection• Create an SELECT command• Navigate the data• Create an INSERT command
• Also:• Try/Finally, Using• Using visual data components
![Page 20: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/20.jpg)
Building a Data Access Layer• Best practice to separate raw data access from application logic• Encapsulate use of ADO.NET classes• Results in reusable classes that can be called from multiple applications• Optional: Encapsulate all business rules• Optional: Design to be remotable via COM+, XML Web Services, or .NET Remoting
![Page 21: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/21.jpg)
Sample: Data Access Layers• Create a new data access component• Implement data access method• Use the component in a Web Service
![Page 22: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/22.jpg)
LAB #1: Web Contact List• Create ASP.NET project• Add reference to Proposion N2N• Populate a data grid from Notes• Post a web form• Send an email
![Page 23: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/23.jpg)
Agenda• Basic principles of ADO.NET• Introduction to Proposion N2N• Programming with ADO.NET classes• Lab #1: Web Contact List• Programming with ADO.NET DataSets• Proposion N2N Specifics• Lab #2: Notes Data Integrator
![Page 24: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/24.jpg)
ADO.NET DataSet•Represents an in-memory cache of data.•A class, not an interface!•Properties•DataSetName• Tables //Data and schema• Relations•Methods• Clear(), Copy(), Merge()•GetChanges(), AcceptChanges(), RejectChanges()• ReadXml(), WriteXml()
![Page 25: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/25.jpg)
ADO.NET DataTable•Properties• TableName• Columns //DataColumn• Constraints //Constraint• Rows //DataRow•DefaultView //DataView• ParentRelations, ChildRelations•Methods•NewRow(), ImportRow()• Select(“expression”), Compute(“expression”)
![Page 26: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/26.jpg)
ADO.NET Data Adapter•Represents a set of methods and mappings to read/write a DataSet from/to a data source• IDbDataAdapter → NsfDataAdapter•Properties• SelectCommand, InsertCommand• UpdateCommand, DeleteCommand• TableMappings
•Methods• Fill(DataSet)• Update(DataSet)
![Page 27: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/27.jpg)
Sample: Data Adapters• Configure a DataAdapter• Fill a DataSet• Navigate a DataSet• Bind to a DataGrid• Using visual tools to create an adapter• Dealing with the fact that Notes database do not have
schema!
• Read/Write data
![Page 28: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/28.jpg)
Schemas and Typed DataSets• DataSets can have schemas • Data types, constraints, relations• Rules are enforced when loading data• Typed DataSets can be generated• Classes derived from DataSet• Schema information compiled in• Adds type-safe properties and methods • Based on XSD standard• Tools can use schema at design time
![Page 29: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/29.jpg)
Sample: Schemas and Typed DataSets• Generating schema and Typed DataSet• Using a Typed DataSet in your code• Binding to Typed DataSets
![Page 30: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/30.jpg)
Agenda• Basic principles of ADO.NET• Introduction to Proposion N2N• Programming with ADO.NET classes• Lab #1: Web Contact List• Programming with ADO.NET DataSets• Proposion N2N Specifics• Lab #2: Notes Data Integrator
![Page 31: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/31.jpg)
N2N: Selecting columns (1)• Basic:• SELECT “item1”, ITEM(“item2”), ITEM(“item3”) AS “name3”
• Strong typing:• SELECT ITEM(“item1”, STRING), ITEM(“item2”, DATE) …
• View/Folder Columns:• SELECT COLUMN(“name”), COLUMN(0, STRING)…
•Multi-valued items:• Select ITEM(“item1”, STRING, MULTI), ITEM(“item2”, FLAT) …
•Notes identifiers• SELECT NOTEID(), UNID(), ISREAD() …
![Page 32: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/32.jpg)
N2N: Selecting columns (2)• Parent documents:• SELECT PARENTNOTEID(), PARENTUNID(), PARENTITEM(“item1”)• Formulas• SELECT FORMULA(“@Created”), PARENTFORMULA(“@Created”)…• Rich Text:• SELECT RICHTEXT(“body”), RICHTEXT(“body”, XML),
RICHTEXT(“body”, MIME)…• Render with form:• SELECT RENDER(“form1”, XML)• Attachments:• SELECT ATTACHMENT(“body”, 0), ATTACHMENTID(“body”, 0),
ATTACHMENTNAME(“body”, 0)…• Images:• SELECT IMAGE(“body”, 0), IMAGETYPE(“body”, 0)
![Page 33: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/33.jpg)
N2N: Selecting rows• Use a View/Folder index:• SELECT … FROM “view”• Lookups:• SELECT … FROM “view” WHERE KEY(“value”)• SELECT … FROM “view” WHERE BEGIN(“val1”) AND END(“val2”)• Lookup by ID• SELECT … WHERE NOTEID(1234)• SELECT … WHERE UNID(“0ae462f6663…”)• Full-Text Search:• SELECT … WHERE SEARCH(“expression”, FUZZY, VARIANTS)• Dynamic Selection Formula• SELECT … WHERE FORMULA(“@DocumentLength > 100”)• Paging• SELECT … SKIP 100 LIMIT 10• Unread documents• SELECT … UNREADONLY
![Page 34: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/34.jpg)
N2N: Updating data• Basic update:• UPDATE FROM “view1” SET item1=“value”, item2=@param2,
item3+=“value”, item4=“value”/ENCRYPT WHERE KEY(@param4)
• Form validation• UPDATE … VALIDATE•Unread marks• UPDATE … MARKREAD• Response documents• UPDATE … MAKERESPONSE(5678)• Insert• INSERT INTO “form1” SET “item1”=value1…• INSERT … RETURN NOTEID()
![Page 35: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/35.jpg)
N2N: Updating data (2)•Email• INSERT INTO “Memo” SET SendTo="Stephen Walch", Subject="Product“… SEND• UPDATE … SENDONLY
•Delete•DELETE FROM “Discussion” WHERE SEARCH(“VIM”)
•Run an agent:• AGENT “agent1”• AGENT “agent1” SET input=“value” RETURN output
![Page 36: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/36.jpg)
N2N: Security issues• By default, N2N uses credentials using local Notes ID file• N2N allows .NET apps to validate Domino names and passwords• N2N allows .NET apps to impersonate other users (requires R6 if remote)• N2N allows .NET apps to create/validate Domino Sign-On (LTPA) Tokens
![Page 37: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/37.jpg)
LAB #2: Notes Data Integrator• Create .NET Windows Forms project• Using Windows Grid and Tab controls• Visually creating DataAdapters for Notes and SQL Server• Typed DataSets• Implementingdata transferroutines
![Page 38: For Beginners - Ado.net](https://reader037.vdocuments.net/reader037/viewer/2022103111/54be78f64a7959ee098b460e/html5/thumbnails/38.jpg)
For more information
• Ask Steve• [email protected]• .NET development• http://www.msdn.com• Visual Studio.NET Help• Proposion N2N• Proposion web site http://www.proposion.com