C#讲义(数据库部分).doc_第1页
C#讲义(数据库部分).doc_第2页
C#讲义(数据库部分).doc_第3页
C#讲义(数据库部分).doc_第4页
C#讲义(数据库部分).doc_第5页
免费预览已结束,剩余30页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

膅肆莅螆肁肅蒈薈羇肅薀螄袃肄芀薇蝿膃莂螂肈膂蒄薅羄膁薆螁羀膀莆薃袆腿蒈衿螂腿薁蚂肀膈芀袇羆膇莃蚀袂芆蒅袅螈芅薇蚈肇芄芇蒁肃芄葿蚇罿芃薂蕿袅节芁螅螁芁莄薈聿芀蒆螃羅荿薈薆袁莈芈螁螇莈莀薄膆莇薂袀肂莆蚅蚂羈莅莄袈袄羁蒇蚁螀羁蕿袆聿肀艿虿羅聿莁袅袁肈蒃蚇袇肇蚆蒀膅肆莅螆肁肅蒈薈羇肅薀螄袃肄芀薇蝿膃莂螂肈膂蒄薅羄膁薆螁羀膀莆薃袆腿蒈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈蚁螁膀芈莀羇肆芇蒃螀羂莆薅羅袈莅蚇螈膇莄莇薁肃莃蕿螆聿莂蚁虿羅莂莁袅袁莁蒃蚇腿莀薆袃肅葿蚈蚆羁蒈莈袁袇蒇蒀蚄芆蒇蚂袀膂蒆螅螂肈蒅蒄羈羄肁薇螁袀肀虿羆膈肀荿蝿肄腿蒁羄羀膈薃螇袆膇螅薀芅膆蒅袅膁膅薇蚈肇膄蚀袄羃膄荿蚇衿芃蒂袂膈节薄蚅肄芁蚆袀羀芀蒆蚃羆艿薈罿袂芈 第8章 数据库应用开发ado.net是以.net framework为基础的全新的数据库操作模型。是专门为.net平台上访问数据库而开发的。更适用于分布式和internet访问等大型应用程序开发。为程序设计人员提供方便、快捷、直观的存取数据。8.1 ado.net的基本概念应用程序访问数据库的一般过程:a、建立数据库连接b、发出sql语句c、数据库响应并返回结果上述访问数据库的三个步骤分别由不用的对象来完成,使用ado.net访问数据库的对象如下图所示: 图81ado.net的两个核心组件:dataset和.net framework数据提供程序,后者是一组包括connection、command、datareader和dataadapter对象在内的组件。ado.net dataset是ado.net的断开式结构的核心组件。dataset可以用于多种不同的数据源,以及xml数据。dataset包含一个或多个datatable对象的集合以及数据的关系信息等。ado.net结构的另一个核心元素是.net framework数据提供程序,数据提供程序是为了实现数据操作和对数据的快速、只进、只读访问。connection对象提供与数据源的连接。command对象使您能够访问用于返回数据、修改数据、运行存储过程以及发送或检索参数信息的数据库命令。datareader从数据源中提供高性能的数据流。dataadapter提供连接dataset对象和数据源的桥梁。dataadapter使用command对象在数据源中执行sql命令,以便将数据加载到dataset中,并使对dataset中数据的更改与数据源保持一致。.net framework提供了四个.net framework数据提供程序:sql server.net framework数据提供程序、ole db.net framework数据提供程序、odbc.net framework数据提供程序和oracle .net framework数据提供程序。使用ado.net开发数据库应用程序的一般步骤为:(1)根据使用的数据源,确定使用的数据提供程序。(2)建立与数据源的连接,需要使用connection对象。(3)执行对数据源的操作命令,通常是sql命令,需要使用command对象。(4)使用数据集对获得的数据进行操作,需要使用datareader(连接模型)、dataset(无连接模型)等对象。(5)向用户显示数据,需要使用数据控件。(6)关闭连接。8.2 connection对象8.2.1 主要连接对象connection负责应用程序与数据库的连接。对于不同的数据库主要有以下两种connection对象。1、sqlconnection,表示sql server数据库的连接,连接sql server专用,速度和性能都有很大的改善。使用该类必须引入命名空间:system.data.sqlclient。2、oledbconnection类,连接到提供ole db数据库驱动程序的数据库,包括sql server、access、vfp等数据库。使用该类必须引入命名空间:system.data.oledb。3、odbc:连接odbc数据源。使用该类必须引入命名空间:system.data.odbc。本章中我们以连接sql sever数据库为例。8.2.2 连接对象的成员 构造函数构造函数有以下两种形式:public oledbconnection();/初始化oledbconnection类的新实例。public oledbconnection(string);/ 使用指定的连接字符串初始化oledbconnection类的新实例。如果仅适用于sql server数据库的连接,可使用sqlconnection对象。public sqlconnection();public sqlconnection(string); 公共属性connectionstring获取或设置用于打开数据库的字符串。connectiontimeout获取在尝试建立连接时终止尝试并生成错误之前所等待的时间。database/initial catalog获取当前数据库或连接打开后要使用的数据库的名称。datasource/server获取或设置数据源的服务器名或ip地址,若为sqlconnection,则为相应的服务器名及sql实例名。provider获取在连接字符串的“provider =”子句中指定的ole db提供程序的名称。若使用sqlconnection,则无需指定。serverversion获取包含客户端所连接到的服务器的版本的字符串。state获取连接的当前状态。返回connectionstate枚举的值。若使用专用连接,可不指定数据提供者。例1:使用oledbconnection连接到本机的northwind数据库string cstring=”provider=sqloledb;data source=(local)gj;initial catalog=northwind;integrated security=sspi;”oledbconnection myconn=new oledbconnection(cstring);myconn.open();messagebox.show(myconn.state.tostring();注意:当服务器为本地服务器时,可使用(local)、localhost、“.”等。data source=(local)或data source=localhost当然也可直接使用机器名称,如:data source=jsjgj例2:使用sqlconnection对象连接到本机的northwind数据库sqlconnection myconn=new sqlconnection();myconn.connectionstring=”data source=(local)gj;initial catalog=northwind;integrated security=sspi;”;myconn.open();例3:连接到northwind数据库的另一种方式sqlconnection myconn=new sqlconnection();myconn.connectionstring=”server=(local)gj;database=northwind;integrated security=sspi;”;myconn.open();messagebox.show(myconn.state.tostring();例4:连接到access数据库oledbconnection dbcon=new oledbconnection();dbcon. connectionstring=”provider=microsoft.jet.oledb.4.0; data source=c:binlocalaccess40.mdb”例5:对sql server连接时数据库的安全性控制对数据库的安全性连接,主要有以下两种方式:(1)windows身份验证,即使用当前的windows帐户凭据进行身份验证。使用集成安全性建立与sql server间受信任的连接。这将允许使用连接字符串,该字符串免除在连接字符串中保存密码的需要。该连接方式常用方式有:integrated security=true/sspi;trusted_connection=true/sspi;如: “data source=mysqlserver;integrated security=sspi;initial catalog=mydb”或:”server=(local);database=sm;trusted_connection=yes;”;(2)sql server身份验证,使用合法的用户名及口令。如:“data source=mysqlserver;uid=sa;pwd=;initial catalog=mydb” 公共方法begintransaction 已重载。开始数据库事务。changedatabase 为打开的connection更改当前数据库。close 关闭与数据库的连接。这是关闭任何打开连接的首选方法。createcommand 创建并返回一个与connection关联的command对象。dispose已重载。释放由component占用的资源。open 使用connectionstring所指定的属性设置打开数据库连接。tostring 返回表示当前object的string。如将myconn连接改为pubs数据库。myconn.changedatabase(“pubs”);messagebox.show(myconn.state.tostring()+” “+myconn.database.tostring();可视化连接演示注意:ado.net可使用连接池对已创建的连接进行管理。连接池可减少新连接需要打开的次数。池进程保持物理连接的所有权。通过为每个给定的连接配置保留一组活动连接来管理连接。只要用户在连接上调用open,池进程就会检查池中是否有可用的连接。如果某个池连接可用,会将该连接返回给调用者,而不是打开新连接。应用程序在该连接上调用close时,池进程会将连接返回到活动连接池集中,而不是真正关闭连接。连接返回到池中之后,即可在下一个open调用中重复使用。8.3 command对象表示要对数据源执行的sql语句(查、删、改、插)或存储过程(sql命令集合)。有两种类型的command类:1、sqlcommand类:表示要对sql server数据库执行的一个transact-sql语句或存储过程。(操作sql server数据库专用)2、oledbcommand类:表示要对数据源执行的sql语句或存储过程。只要提供相应的oledb数据库驱动程序,就能对任何数据库操作。以oledbcommand类为例:8.3.1 构造函数1、public sqlcommand();/初始化sqlcommand类的新实例。2、public sqlcommand(string);/初始化具有查询文本的sqlcommand类的新实例。3、public sqlcommand(string,sqlconnection);/初始化具有查询文本和sqlconnection的sqlcommand类的新实例。4、public sqlcommand(string,sqlconnection,sqltransaction);/初始化具有查询文本、sqlconnection和transaction的sqlcommand类的新实例。8.3.2 常用公共(public)属性1、commandtext:获取或设置要对数据源执行的sql语句或存储过程。commandtext的类型由commandtype属性指定。2、commandtimeout:获取或设置在终止对执行命令的尝试并生成错误之前的等待时间。3、commandtype:获取或设置一个指示如何解释commandtext属性的值。其值取: storedprocedure :表示commandtext中存储的是存储过程的名称。 tabledirect :将commandtext属性设置为要访问的一个或多个表的名称。多个表之间使用逗号分隔,不能有空格或空白。 text:sql文本命令。(默认)4、connection:获取或设置sqlcommand的此实例使用的sqlconnection。5、parameters:获取或设置sqlparametercollection。(后面讲解)6、transaction:获取或设置将在其中执行sqlcommand的sqltransaction。8.3.3 常用方法1、executenonquery:执行sql insert、delele和update语句等命令,并返回受影响的行数。一般用于执行无须返回结果的命令。如需异步执行,则应用beginexecutenonquery执行,endexecutenonquery完成该语句的异步执行。例:添加操作private void button1_click(object sender, eventargs e) string strconn, strsql; strconn = “data source=(local);initial catalog=stuman;integrated security=sspi;”; sqlconnection cn = new sqlconnection(strconn); cn.open(); strsql = “insert into student values(111,张三丰,男,1970-06-02,武当,湖北省,null);”; sqlcommand cmd = new sqlcommand(); cmd.connection = cn; cmd.commandtext = strsql; cmd.executenonquery(); 2、executereader:执行返回行的命令(如select),将commandtext发送到connection并生成一个datareader类型的对象。一般用于执行有返回结果(表)的命令。如需异步执行,则应用beginexecutereader执行,endexecutereader完成该语句的异步执行。例:private void button1_click(object sender, eventargs e) try string strconn, strsql; strconn = “data source=(local);initial catalog=stuman;integrated security=sspi;”; sqlconnection cn = new sqlconnection(strconn); cn.open(); strsql = “select * from student”; sqlcommand cmd = new sqlcommand(strsql, cn); sqldatareader dr = cmd.executereader(); datatable dt = new datatable(); dt.load(dr); dr.close(); datagridview1.datasource = dt; catch (exception ee) messagebox.show(ee.message); 3、executescalar:执行查询,并返回查询所返回的结果集中第一行的第一列或空引用。忽略额外的列或行。常用于从数据库中检索单个值(例如:仅检索某行的其中一列的值或一个聚合值)。此功能完全可以由executereader代替,但是此命令的优点是代码较少,简洁。如需异步执行,则应用beginexecutescalar执行,endexecutescalar完成该语句的异步执行。private void button1_click(object sender, eventargs e) try string strconn, strsql; strconn = “data source=(local);initial catalog=stuman;integrated security=sspi;”; sqlconnection cn = new sqlconnection(strconn); cn.open(); strsql = “select count(*) from student”; sqlcommand cmd = new sqlcommand(strsql, cn); textbox1.text =cmd.executescalar().tostring(); catch (exception ee) messagebox.show(ee.message); 8.3.4 执行参数化查询有时我们需要执行带条件查询,而且条件值不固定,如“查询学号为n的学生信息”,其中学号不固定,此时便可以使用参数化查询方式。参数化查询使用sqlcommand.parameters属性即可实现。l 使用参数化查询,必须在查询语句中使用参变量。例如:select * from customers where customerid = id l parameters属性实际上是一个sqlparametercollection集合,它的元素是sqlparameter类的实例,分别对应着命令中设置的变量,因此向sqlparametercollection添加sqlparameter对象的顺序必须直接对应于该参数的变量在命令文本中的位置,如果集合中的参数不匹配要执行的查询的要求,则可能会导致错误。 sqlparameter类的常用成员parametername:指定参数名称。sqldbtype:为参数指定sqldb数据类型。value:指定参数值。sourcecolumn:获取或设置源列的名称,该源列映射到dataset并用于加载或返回value。add(参数名,参数类型,对数宽度)方法:用于添加参数。其中:参数名:以开头。参数类型为sqldbtype类型 举例例1:单参数查询using system;using system.data.sqlclient;class class1static void main(string args)string strconn,strsql;strconn=”data source=(local);initial catalog=stuman;integrated security=sspi;”;sqlconnection cn=new sqlconnection(strconn);cn.open();strsql=”select xh,xm,xb from student where xm=?”;sqlcommand cmd=new oledbcommand

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论