diff --git a/.vs/ProjectSettings.json b/.vs/ProjectSettings.json new file mode 100644 index 0000000..f8b4888 --- /dev/null +++ b/.vs/ProjectSettings.json @@ -0,0 +1,3 @@ +{ + "CurrentProjectSetting": null +} \ No newline at end of file diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json new file mode 100644 index 0000000..617c51e --- /dev/null +++ b/.vs/VSWorkspaceState.json @@ -0,0 +1,7 @@ +{ + "ExpandedNodes": [ + "" + ], + "SelectedNode": "\\sql2.sln", + "PreviewInSolutionExplorer": false +} \ No newline at end of file diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite new file mode 100644 index 0000000..03fbaee Binary files /dev/null and b/.vs/slnx.sqlite differ diff --git a/.vs/sql2/FileContentIndex/3987d9e6-69a7-463e-b23e-0123093a7cc4.vsidx b/.vs/sql2/FileContentIndex/3987d9e6-69a7-463e-b23e-0123093a7cc4.vsidx new file mode 100644 index 0000000..f8ae502 Binary files /dev/null and b/.vs/sql2/FileContentIndex/3987d9e6-69a7-463e-b23e-0123093a7cc4.vsidx differ diff --git a/.vs/sql2/FileContentIndex/789594ef-c490-4115-9cdb-574fd9614ff4.vsidx b/.vs/sql2/FileContentIndex/789594ef-c490-4115-9cdb-574fd9614ff4.vsidx new file mode 100644 index 0000000..acd4449 Binary files /dev/null and b/.vs/sql2/FileContentIndex/789594ef-c490-4115-9cdb-574fd9614ff4.vsidx differ diff --git a/.vs/sql2/FileContentIndex/833ad78b-4e9a-42bb-90d5-653b185fc33c.vsidx b/.vs/sql2/FileContentIndex/833ad78b-4e9a-42bb-90d5-653b185fc33c.vsidx new file mode 100644 index 0000000..7c749f6 Binary files /dev/null and b/.vs/sql2/FileContentIndex/833ad78b-4e9a-42bb-90d5-653b185fc33c.vsidx differ diff --git a/.vs/sql2/FileContentIndex/b01098b4-13b7-44e1-ac97-3e22daf806ad.vsidx b/.vs/sql2/FileContentIndex/b01098b4-13b7-44e1-ac97-3e22daf806ad.vsidx new file mode 100644 index 0000000..ebfd883 Binary files /dev/null and b/.vs/sql2/FileContentIndex/b01098b4-13b7-44e1-ac97-3e22daf806ad.vsidx differ diff --git a/.vs/sql2/FileContentIndex/ca25dbab-aca9-44b7-8324-83bff7949e14.vsidx b/.vs/sql2/FileContentIndex/ca25dbab-aca9-44b7-8324-83bff7949e14.vsidx new file mode 100644 index 0000000..92285cb Binary files /dev/null and b/.vs/sql2/FileContentIndex/ca25dbab-aca9-44b7-8324-83bff7949e14.vsidx differ diff --git a/.vs/sql2/v17/.suo b/.vs/sql2/v17/.suo new file mode 100644 index 0000000..82280c2 Binary files /dev/null and b/.vs/sql2/v17/.suo differ diff --git a/.vs/sql2/v17/.wsuo b/.vs/sql2/v17/.wsuo new file mode 100644 index 0000000..118fe79 Binary files /dev/null and b/.vs/sql2/v17/.wsuo differ diff --git a/.vs/sql2/v17/DocumentLayout.json b/.vs/sql2/v17/DocumentLayout.json new file mode 100644 index 0000000..bcf1944 --- /dev/null +++ b/.vs/sql2/v17/DocumentLayout.json @@ -0,0 +1,447 @@ +{ + "Version": 1, + "WorkspaceRootPath": "D:\\source\\sql2\\", + "Documents": [ + { + "AbsoluteMoniker": "D:0:0:{20A35319-9577-418B-BF43-512CDB3AD0EF}|sql2\\sql2.csproj|d:\\source\\sql2\\sql2\\forms\\form3.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form", + "RelativeMoniker": "D:0:0:{20A35319-9577-418B-BF43-512CDB3AD0EF}|sql2\\sql2.csproj|solutionrelative:sql2\\forms\\form3.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form" + }, + { + "AbsoluteMoniker": "D:0:0:{20A35319-9577-418B-BF43-512CDB3AD0EF}|sql2\\sql2.csproj|d:\\source\\sql2\\sql2\\forms\\form3.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{20A35319-9577-418B-BF43-512CDB3AD0EF}|sql2\\sql2.csproj|solutionrelative:sql2\\forms\\form3.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{20A35319-9577-418B-BF43-512CDB3AD0EF}|sql2\\sql2.csproj|d:\\source\\sql2\\sql2\\forms\\form3.designer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{20A35319-9577-418B-BF43-512CDB3AD0EF}|sql2\\sql2.csproj|solutionrelative:sql2\\forms\\form3.designer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{20A35319-9577-418B-BF43-512CDB3AD0EF}|sql2\\sql2.csproj|D:\\source\\sql2\\sql2\\app.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}", + "RelativeMoniker": "D:0:0:{20A35319-9577-418B-BF43-512CDB3AD0EF}|sql2\\sql2.csproj|solutionrelative:sql2\\app.config||{FA3CD31E-987B-443A-9B81-186104E8DAC1}" + }, + { + "AbsoluteMoniker": "D:0:0:{20A35319-9577-418B-BF43-512CDB3AD0EF}|sql2\\sql2.csproj|d:\\source\\sql2\\sql2\\forms\\form2.resx||{FF4D6ACA-9352-4A5F-821E-F4D6EBDCAB11}", + "RelativeMoniker": "D:0:0:{20A35319-9577-418B-BF43-512CDB3AD0EF}|sql2\\sql2.csproj|solutionrelative:sql2\\forms\\form2.resx||{FF4D6ACA-9352-4A5F-821E-F4D6EBDCAB11}" + }, + { + "AbsoluteMoniker": "D:0:0:{20A35319-9577-418B-BF43-512CDB3AD0EF}|sql2\\sql2.csproj|d:\\source\\sql2\\sql2\\database\\database.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{20A35319-9577-418B-BF43-512CDB3AD0EF}|sql2\\sql2.csproj|solutionrelative:sql2\\database\\database.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{20A35319-9577-418B-BF43-512CDB3AD0EF}|sql2\\sql2.csproj|d:\\source\\sql2\\sql2\\forms\\form1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form", + "RelativeMoniker": "D:0:0:{20A35319-9577-418B-BF43-512CDB3AD0EF}|sql2\\sql2.csproj|solutionrelative:sql2\\forms\\form1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form" + }, + { + "AbsoluteMoniker": "D:0:0:{20A35319-9577-418B-BF43-512CDB3AD0EF}|sql2\\sql2.csproj|d:\\source\\sql2\\sql2\\forms\\form3.resx||{FF4D6ACA-9352-4A5F-821E-F4D6EBDCAB11}", + "RelativeMoniker": "D:0:0:{20A35319-9577-418B-BF43-512CDB3AD0EF}|sql2\\sql2.csproj|solutionrelative:sql2\\forms\\form3.resx||{FF4D6ACA-9352-4A5F-821E-F4D6EBDCAB11}" + }, + { + "AbsoluteMoniker": "D:0:0:{20A35319-9577-418B-BF43-512CDB3AD0EF}|sql2\\sql2.csproj|d:\\source\\sql2\\sql2\\forms\\form2.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form", + "RelativeMoniker": "D:0:0:{20A35319-9577-418B-BF43-512CDB3AD0EF}|sql2\\sql2.csproj|solutionrelative:sql2\\forms\\form2.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form" + }, + { + "AbsoluteMoniker": "D:0:0:{20A35319-9577-418B-BF43-512CDB3AD0EF}|sql2\\sql2.csproj|d:\\source\\sql2\\sql2\\forms\\form2.designer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{20A35319-9577-418B-BF43-512CDB3AD0EF}|sql2\\sql2.csproj|solutionrelative:sql2\\forms\\form2.designer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{20A35319-9577-418B-BF43-512CDB3AD0EF}|sql2\\sql2.csproj|d:\\source\\sql2\\sql2\\forms\\form2.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{20A35319-9577-418B-BF43-512CDB3AD0EF}|sql2\\sql2.csproj|solutionrelative:sql2\\forms\\form2.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{20A35319-9577-418B-BF43-512CDB3AD0EF}|sql2\\sql2.csproj|d:\\source\\sql2\\sql2\\forms\\form1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{20A35319-9577-418B-BF43-512CDB3AD0EF}|sql2\\sql2.csproj|solutionrelative:sql2\\forms\\form1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{20A35319-9577-418B-BF43-512CDB3AD0EF}|sql2\\sql2.csproj|D:\\source\\sql2\\sql2\\Program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{20A35319-9577-418B-BF43-512CDB3AD0EF}|sql2\\sql2.csproj|solutionrelative:sql2\\Program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\source\\sql2\\sql2\\DataBase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:sql2\\DataBase.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\source\\sql2\\sql2\\RegistrationForm.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:sql2\\RegistrationForm.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\source\\sql2\\sql2\\LoginForm.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:sql2\\LoginForm.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{20A35319-9577-418B-BF43-512CDB3AD0EF}|sql2\\sql2.csproj|D:\\source\\sql2\\sql2\\Properties\\Resources.resx||{FF4D6ACA-9352-4A5F-821E-F4D6EBDCAB11}", + "RelativeMoniker": "D:0:0:{20A35319-9577-418B-BF43-512CDB3AD0EF}|sql2\\sql2.csproj|solutionrelative:sql2\\Properties\\Resources.resx||{FF4D6ACA-9352-4A5F-821E-F4D6EBDCAB11}" + }, + { + "AbsoluteMoniker": "D:0:0:{20A35319-9577-418B-BF43-512CDB3AD0EF}|sql2\\sql2.csproj|D:\\source\\sql2\\sql2\\Properties\\Settings.Designer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{20A35319-9577-418B-BF43-512CDB3AD0EF}|sql2\\sql2.csproj|solutionrelative:sql2\\Properties\\Settings.Designer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{20A35319-9577-418B-BF43-512CDB3AD0EF}|sql2\\sql2.csproj|D:\\source\\sql2\\sql2\\\u041E\u0442\u0447\u0435\u0442_\u043E\u043F\u043B\u0430\u0442\u044B_\u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F_\u043E\u0431\u0443\u0447\u0430\u044E\u0449\u0438\u0445\u0441\u044FDataSet.Designer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{20A35319-9577-418B-BF43-512CDB3AD0EF}|sql2\\sql2.csproj|solutionrelative:sql2\\\u041E\u0442\u0447\u0435\u0442_\u043E\u043F\u043B\u0430\u0442\u044B_\u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F_\u043E\u0431\u0443\u0447\u0430\u044E\u0449\u0438\u0445\u0441\u044FDataSet.Designer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\source\\sql2\\sql2\\Form3.Designer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:sql2\\Form3.Designer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\source\\sql2\\sql2\\Form2.Designer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:sql2\\Form2.Designer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\source\\sql2\\sql2\\Form3.resx||{FF4D6ACA-9352-4A5F-821E-F4D6EBDCAB11}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:sql2\\Form3.resx||{FF4D6ACA-9352-4A5F-821E-F4D6EBDCAB11}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\source\\sql2\\sql2\\Form2.resx||{FF4D6ACA-9352-4A5F-821E-F4D6EBDCAB11}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:sql2\\Form2.resx||{FF4D6ACA-9352-4A5F-821E-F4D6EBDCAB11}" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\source\\sql2\\sql2\\Form3.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:sql2\\Form3.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\source\\sql2\\sql2\\form2.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:sql2\\form2.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form" + }, + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\source\\sql2\\sql2\\form1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:sql2\\form1.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form" + } + ], + "DocumentGroupContainers": [ + { + "Orientation": 0, + "VerticalTabListWidth": 256, + "DocumentGroups": [ + { + "DockedWidth": 200, + "SelectedChildIndex": 5, + "Children": [ + { + "$type": "Bookmark", + "Name": "ST:0:0:{74946827-37a0-11d2-a273-00c04f8ef4ff}" + }, + { + "$type": "Document", + "DocumentIndex": 1, + "Title": "Form3.cs", + "DocumentMoniker": "D:\\source\\sql2\\sql2\\forms\\Form3.cs", + "RelativeDocumentMoniker": "sql2\\forms\\Form3.cs", + "ToolTip": "D:\\source\\sql2\\sql2\\forms\\Form3.cs*", + "RelativeToolTip": "sql2\\forms\\Form3.cs*", + "ViewState": "AQIAABQAAAAAAAAAAAASwCQAAAAAAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-05-17T20:54:29.869Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 4, + "Title": "Form2.resx", + "DocumentMoniker": "D:\\source\\sql2\\sql2\\forms\\Form2.resx", + "RelativeDocumentMoniker": "sql2\\forms\\Form2.resx", + "ToolTip": "D:\\source\\sql2\\sql2\\forms\\Form2.resx", + "RelativeToolTip": "sql2\\forms\\Form2.resx", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001005|", + "WhenOpened": "2024-05-17T20:54:15.267Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 7, + "Title": "Form3.resx", + "DocumentMoniker": "D:\\source\\sql2\\sql2\\forms\\Form3.resx", + "RelativeDocumentMoniker": "sql2\\forms\\Form3.resx", + "ToolTip": "D:\\source\\sql2\\sql2\\forms\\Form3.resx*", + "RelativeToolTip": "sql2\\forms\\Form3.resx*", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001005|", + "WhenOpened": "2024-05-17T20:53:38.659Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 2, + "Title": "Form3.Designer.cs", + "DocumentMoniker": "D:\\source\\sql2\\sql2\\forms\\Form3.Designer.cs", + "RelativeDocumentMoniker": "sql2\\forms\\Form3.Designer.cs", + "ToolTip": "D:\\source\\sql2\\sql2\\forms\\Form3.Designer.cs*", + "RelativeToolTip": "sql2\\forms\\Form3.Designer.cs*", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAA8AAAAyAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-05-17T20:53:33.696Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 0, + "Title": "Form3.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", + "DocumentMoniker": "D:\\source\\sql2\\sql2\\forms\\Form3.cs", + "RelativeDocumentMoniker": "sql2\\forms\\Form3.cs", + "ToolTip": "D:\\source\\sql2\\sql2\\forms\\Form3.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]*", + "RelativeToolTip": "sql2\\forms\\Form3.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]*", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-05-17T20:53:29.561Z", + "EditorCaption": " [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]" + }, + { + "$type": "Document", + "DocumentIndex": 6, + "Title": "Form1.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", + "DocumentMoniker": "D:\\source\\sql2\\sql2\\forms\\Form1.cs", + "RelativeDocumentMoniker": "sql2\\forms\\Form1.cs", + "ToolTip": "D:\\source\\sql2\\sql2\\forms\\Form1.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", + "RelativeToolTip": "sql2\\forms\\Form1.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-05-17T20:53:27.33Z", + "EditorCaption": " [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]" + }, + { + "$type": "Document", + "DocumentIndex": 9, + "Title": "Form2.Designer.cs", + "DocumentMoniker": "D:\\source\\sql2\\sql2\\forms\\Form2.Designer.cs", + "RelativeDocumentMoniker": "sql2\\forms\\Form2.Designer.cs", + "ToolTip": "D:\\source\\sql2\\sql2\\forms\\Form2.Designer.cs", + "RelativeToolTip": "sql2\\forms\\Form2.Designer.cs", + "ViewState": "AQIAAAwAAAAAAAAAAAAAAAAAAAAAAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-05-17T20:53:25.178Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 8, + "Title": "Form2.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", + "DocumentMoniker": "D:\\source\\sql2\\sql2\\forms\\Form2.cs", + "RelativeDocumentMoniker": "sql2\\forms\\Form2.cs", + "ToolTip": "D:\\source\\sql2\\sql2\\forms\\Form2.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", + "RelativeToolTip": "sql2\\forms\\Form2.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-05-17T20:53:24.974Z", + "EditorCaption": " [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]" + }, + { + "$type": "Document", + "DocumentIndex": 10, + "Title": "Form2.cs", + "DocumentMoniker": "D:\\source\\sql2\\sql2\\forms\\Form2.cs", + "RelativeDocumentMoniker": "sql2\\forms\\Form2.cs", + "ToolTip": "D:\\source\\sql2\\sql2\\forms\\Form2.cs", + "RelativeToolTip": "sql2\\forms\\Form2.cs", + "ViewState": "AQIAAAMAAAAAAAAAAAAAACoAAAAqAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-05-17T20:52:17.117Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 3, + "Title": "App.config", + "DocumentMoniker": "D:\\source\\sql2\\sql2\\App.config", + "RelativeDocumentMoniker": "sql2\\App.config", + "ToolTip": "D:\\source\\sql2\\sql2\\App.config", + "RelativeToolTip": "sql2\\App.config", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000601|", + "WhenOpened": "2024-05-17T20:30:05.431Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 11, + "Title": "Form1.cs", + "DocumentMoniker": "D:\\source\\sql2\\sql2\\forms\\Form1.cs", + "RelativeDocumentMoniker": "sql2\\forms\\Form1.cs", + "ToolTip": "D:\\source\\sql2\\sql2\\forms\\Form1.cs", + "RelativeToolTip": "sql2\\forms\\Form1.cs", + "ViewState": "AQIAABgAAAAAAAAAAAASwCYAAAAtAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-05-17T20:51:56.394Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 5, + "Title": "DataBase.cs", + "DocumentMoniker": "D:\\source\\sql2\\sql2\\database\\DataBase.cs", + "RelativeDocumentMoniker": "sql2\\database\\DataBase.cs", + "ToolTip": "D:\\source\\sql2\\sql2\\database\\DataBase.cs", + "RelativeToolTip": "sql2\\database\\DataBase.cs", + "ViewState": "AQIAAAAAAAAAAAAAAAAAABYAAAAJAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-05-17T20:51:12.726Z", + "EditorCaption": "" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{cce594b6-0c39-4442-ba28-10c64ac7e89f}" + }, + { + "$type": "Document", + "DocumentIndex": 16, + "Title": "Resources.resx", + "DocumentMoniker": "D:\\source\\sql2\\sql2\\Properties\\Resources.resx", + "RelativeDocumentMoniker": "sql2\\Properties\\Resources.resx", + "ToolTip": "D:\\source\\sql2\\sql2\\Properties\\Resources.resx", + "RelativeToolTip": "sql2\\Properties\\Resources.resx", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001005|", + "WhenOpened": "2024-05-17T20:29:33.351Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 17, + "Title": "Settings.Designer.cs", + "DocumentMoniker": "D:\\source\\sql2\\sql2\\Properties\\Settings.Designer.cs", + "RelativeDocumentMoniker": "sql2\\Properties\\Settings.Designer.cs", + "ToolTip": "D:\\source\\sql2\\sql2\\Properties\\Settings.Designer.cs", + "RelativeToolTip": "sql2\\Properties\\Settings.Designer.cs", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-05-17T20:29:32.532Z" + }, + { + "$type": "Document", + "DocumentIndex": 19, + "Title": "Form3.Designer.cs", + "DocumentMoniker": "D:\\source\\sql2\\sql2\\Form3.Designer.cs", + "RelativeDocumentMoniker": "sql2\\Form3.Designer.cs", + "ToolTip": "D:\\source\\sql2\\sql2\\Form3.Designer.cs", + "RelativeToolTip": "sql2\\Form3.Designer.cs", + "ViewState": "AQIAACIBAAAAAAAAAAAAAAAAAAAAAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-05-17T19:51:12.439Z" + }, + { + "$type": "Document", + "DocumentIndex": 18, + "Title": "\u041E\u0442\u0447\u0435\u0442_\u043E\u043F\u043B\u0430\u0442\u044B_\u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F_\u043E\u0431\u0443\u0447\u0430\u044E\u0449\u0438\u0445\u0441\u044FDataSet.Designer.cs", + "DocumentMoniker": "D:\\source\\sql2\\sql2\\\u041E\u0442\u0447\u0435\u0442_\u043E\u043F\u043B\u0430\u0442\u044B_\u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F_\u043E\u0431\u0443\u0447\u0430\u044E\u0449\u0438\u0445\u0441\u044FDataSet.Designer.cs", + "RelativeDocumentMoniker": "sql2\\\u041E\u0442\u0447\u0435\u0442_\u043E\u043F\u043B\u0430\u0442\u044B_\u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F_\u043E\u0431\u0443\u0447\u0430\u044E\u0449\u0438\u0445\u0441\u044FDataSet.Designer.cs", + "ToolTip": "D:\\source\\sql2\\sql2\\\u041E\u0442\u0447\u0435\u0442_\u043E\u043F\u043B\u0430\u0442\u044B_\u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F_\u043E\u0431\u0443\u0447\u0430\u044E\u0449\u0438\u0445\u0441\u044FDataSet.Designer.cs", + "RelativeToolTip": "sql2\\\u041E\u0442\u0447\u0435\u0442_\u043E\u043F\u043B\u0430\u0442\u044B_\u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F_\u043E\u0431\u0443\u0447\u0430\u044E\u0449\u0438\u0445\u0441\u044FDataSet.Designer.cs", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAAIAAAAZAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-05-17T19:51:00.14Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 12, + "Title": "Program.cs", + "DocumentMoniker": "D:\\source\\sql2\\sql2\\Program.cs", + "RelativeDocumentMoniker": "sql2\\Program.cs", + "ToolTip": "D:\\source\\sql2\\sql2\\Program.cs", + "RelativeToolTip": "sql2\\Program.cs", + "ViewState": "AQIAAAYAAAAAAAAAAAAAABMAAAAJAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-05-17T19:50:58.627Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 20, + "Title": "Form2.Designer.cs", + "DocumentMoniker": "D:\\source\\sql2\\sql2\\Form2.Designer.cs", + "RelativeDocumentMoniker": "sql2\\Form2.Designer.cs", + "ToolTip": "D:\\source\\sql2\\sql2\\Form2.Designer.cs", + "RelativeToolTip": "sql2\\Form2.Designer.cs", + "ViewState": "AQIAAAMAAAAAAAAAAAAAAAAAAAAAAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-05-17T19:50:52.742Z" + }, + { + "$type": "Document", + "DocumentIndex": 15, + "Title": "LoginForm.cs", + "DocumentMoniker": "D:\\source\\sql2\\sql2\\LoginForm.cs", + "RelativeDocumentMoniker": "sql2\\LoginForm.cs", + "ToolTip": "D:\\source\\sql2\\sql2\\LoginForm.cs", + "RelativeToolTip": "sql2\\LoginForm.cs", + "ViewState": "AQIAACkAAAAAAAAAAAAIwCoAAAArAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-05-16T13:36:10.442Z" + }, + { + "$type": "Document", + "DocumentIndex": 13, + "Title": "DataBase.cs", + "DocumentMoniker": "D:\\source\\sql2\\sql2\\DataBase.cs", + "RelativeDocumentMoniker": "sql2\\DataBase.cs", + "ToolTip": "D:\\source\\sql2\\sql2\\DataBase.cs", + "RelativeToolTip": "sql2\\DataBase.cs", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-05-15T22:26:48.996Z" + }, + { + "$type": "Document", + "DocumentIndex": 14, + "Title": "RegistrationForm.cs", + "DocumentMoniker": "D:\\source\\sql2\\sql2\\RegistrationForm.cs", + "RelativeDocumentMoniker": "sql2\\RegistrationForm.cs", + "ToolTip": "D:\\source\\sql2\\sql2\\RegistrationForm.cs", + "RelativeToolTip": "sql2\\RegistrationForm.cs", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAAoAAAAAAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-05-16T13:34:45.442Z" + }, + { + "$type": "Document", + "DocumentIndex": 21, + "Title": "Form3.resx", + "DocumentMoniker": "D:\\source\\sql2\\sql2\\Form3.resx", + "RelativeDocumentMoniker": "sql2\\Form3.resx", + "ToolTip": "D:\\source\\sql2\\sql2\\Form3.resx", + "RelativeToolTip": "sql2\\Form3.resx", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001005|", + "WhenOpened": "2024-05-17T19:50:57.806Z" + }, + { + "$type": "Document", + "DocumentIndex": 22, + "Title": "Form2.resx", + "DocumentMoniker": "D:\\source\\sql2\\sql2\\Form2.resx", + "RelativeDocumentMoniker": "sql2\\Form2.resx", + "ToolTip": "D:\\source\\sql2\\sql2\\Form2.resx", + "RelativeToolTip": "sql2\\Form2.resx", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001005|", + "WhenOpened": "2024-05-17T19:50:49.948Z" + }, + { + "$type": "Document", + "DocumentIndex": 23, + "Title": "Form3.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", + "DocumentMoniker": "D:\\source\\sql2\\sql2\\Form3.cs", + "RelativeDocumentMoniker": "sql2\\Form3.cs", + "ToolTip": "D:\\source\\sql2\\sql2\\Form3.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", + "RelativeToolTip": "sql2\\Form3.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-05-15T19:16:07.997Z" + }, + { + "$type": "Document", + "DocumentIndex": 24, + "Title": "Form2.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", + "DocumentMoniker": "D:\\source\\sql2\\sql2\\Form2.cs", + "RelativeDocumentMoniker": "sql2\\Form2.cs", + "ToolTip": "D:\\\u0445\u0443\u0438\u0442\u0430\\visual studio\\visual X3\\sql2\\sql2\\Form2.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", + "RelativeToolTip": "..\\..\\\u0445\u0443\u0438\u0442\u0430\\visual studio\\visual X3\\sql2\\sql2\\Form2.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-05-15T20:08:02.277Z" + }, + { + "$type": "Document", + "DocumentIndex": 25, + "Title": "Form1.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", + "DocumentMoniker": "D:\\source\\sql2\\sql2\\Form1.cs", + "RelativeDocumentMoniker": "sql2\\Form1.cs", + "ToolTip": "D:\\\u0445\u0443\u0438\u0442\u0430\\visual studio\\visual X3\\sql2\\sql2\\Form1.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", + "RelativeToolTip": "..\\..\\\u0445\u0443\u0438\u0442\u0430\\visual studio\\visual X3\\sql2\\sql2\\Form1.cs [\u041A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440]", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2024-05-15T19:34:59.679Z" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/sql2.sln b/sql2.sln new file mode 100644 index 0000000..2b900c0 --- /dev/null +++ b/sql2.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.9.34728.123 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "paymentLogs", "sql2\paymentLogs.csproj", "{20A35319-9577-418B-BF43-512CDB3AD0EF}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {20A35319-9577-418B-BF43-512CDB3AD0EF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {20A35319-9577-418B-BF43-512CDB3AD0EF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {20A35319-9577-418B-BF43-512CDB3AD0EF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {20A35319-9577-418B-BF43-512CDB3AD0EF}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {940BBE73-9BBB-4A29-86C3-38FE7FEB8A8C} + EndGlobalSection +EndGlobal diff --git a/sql2/App.config b/sql2/App.config new file mode 100644 index 0000000..5c155bb --- /dev/null +++ b/sql2/App.config @@ -0,0 +1,13 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/sql2/Database/DataBase.cs b/sql2/Database/DataBase.cs new file mode 100644 index 0000000..73d774f --- /dev/null +++ b/sql2/Database/DataBase.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Data.SqlClient; +using MySql.Data.MySqlClient; + +namespace PaymentLogs +{ + internal class DataBase + { + private string _server = "mysql3.joinserver.xyz"; + private string _user = "u45925_kkOETa8Au9"; + private string _pass = "S^Xv9WH9PM!a@.cWHCRJVr.Z"; + private string _db = "s45925_easystartup"; + private MySqlConnection mySqlConnection; + + //SqlConnection sqlConnection = new SqlConnection(@"Data Source=DESKTOP-QN8TL8D\SQLEXPRESS;Initial Catalog=Отчет оплаты обучения обучающихся;Integrated Security=True"); + + public void openConnection() + { + mySqlConnection = new MySqlConnection($"Server={_server}; Port=3306; Uid={_user}; Pwd={_pass}; Database={_db}"); + if (mySqlConnection.State == System.Data.ConnectionState.Closed) + { + mySqlConnection.Open(); + } + } + + public void closeConnection() + { + if (mySqlConnection.State ==System.Data.ConnectionState.Closed) + { + mySqlConnection.Open(); + } + } + + public MySqlConnection getConnection() + { + return mySqlConnection; + } + + + } +} diff --git a/sql2/Domain/Course.cs b/sql2/Domain/Course.cs new file mode 100644 index 0000000..54eeec9 --- /dev/null +++ b/sql2/Domain/Course.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace PaymentLogs.Domain +{ + internal class Course + { + public int Id { get; set; } + public string Name { get; set; } + public string Type { get; set; } + public int Cost { get; set; } + public int Duration { get; set; } + public int StudentsCount { get; set; } + } +} diff --git a/sql2/Domain/Payment.cs b/sql2/Domain/Payment.cs new file mode 100644 index 0000000..59d2acf --- /dev/null +++ b/sql2/Domain/Payment.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace PaymentLogs.Domain +{ + internal class Payment + { + public int Id { get; set; } + public string FCs { get; set; } + public int CourseId { get; set; } + public int CoursePrice { get; set; } + public int Paid { get; set; } + public int Debt { get; set; } + } +} diff --git a/sql2/Domain/Student.cs b/sql2/Domain/Student.cs new file mode 100644 index 0000000..641522b --- /dev/null +++ b/sql2/Domain/Student.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace PaymentLogs.Domain +{ + internal class Student + { + public int Id { get; set; } + public string FCs { get; set; } + public DateTime dateOfBirth { get; set; } + public string Address { get; set; } + public int CourseId { get; set; } + public int Paid { get; set; } + } +} diff --git a/sql2/Domain/User.cs b/sql2/Domain/User.cs new file mode 100644 index 0000000..ab992ea --- /dev/null +++ b/sql2/Domain/User.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Security; +using System.Text; +using System.Threading.Tasks; + +namespace PaymentLogs.Domain +{ + internal class User + { + public string Login { get; set; } + public SecureString PasswordHash { get; set; } + } +} diff --git a/sql2/Forms/DataForm.Designer.cs b/sql2/Forms/DataForm.Designer.cs new file mode 100644 index 0000000..1dcf495 --- /dev/null +++ b/sql2/Forms/DataForm.Designer.cs @@ -0,0 +1,246 @@ +namespace PaymentLogs +{ + partial class DataForm + { + /// + /// Обязательная переменная конструктора. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Освободить все используемые ресурсы. + /// + /// истинно, если управляемый ресурс должен быть удален; иначе ложно. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Код, автоматически созданный конструктором форм Windows + + /// + /// Требуемый метод для поддержки конструктора — не изменяйте + /// содержимое этого метода с помощью редактора кода. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DataForm)); + this.dataGridView1 = new System.Windows.Forms.DataGridView(); + this.отчетоплатыобученияобучающихсяDataSetBindingSource = new System.Windows.Forms.BindingSource(this.components); + this.label1 = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.button1 = new System.Windows.Forms.Button(); + this.label2 = new System.Windows.Forms.Label(); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.toolStrip1 = new System.Windows.Forms.ToolStrip(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripButton1 = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripButton2 = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); + this.toolStripLabel1 = new System.Windows.Forms.ToolStripLabel(); + this.toolStripButton3 = new System.Windows.Forms.ToolStripTextBox(); + this.button2 = new System.Windows.Forms.Button(); + this.button3 = new System.Windows.Forms.Button(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.отчетоплатыобученияобучающихсяDataSetBindingSource)).BeginInit(); + this.toolStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // dataGridView1 + // + this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dataGridView1.Location = new System.Drawing.Point(18, 40); + this.dataGridView1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.dataGridView1.Name = "dataGridView1"; + this.dataGridView1.RowHeadersWidth = 62; + this.dataGridView1.Size = new System.Drawing.Size(968, 634); + this.dataGridView1.TabIndex = 0; + this.dataGridView1.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellContentClick); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.label1.Location = new System.Drawing.Point(1119, 203); + this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(66, 25); + this.label1.TabIndex = 1; + this.label1.Text = "ФИО:"; + // + // textBox1 + // + this.textBox1.Location = new System.Drawing.Point(1124, 232); + this.textBox1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(366, 26); + this.textBox1.TabIndex = 2; + // + // button1 + // + this.button1.Location = new System.Drawing.Point(1204, 423); + this.button1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(204, 78); + this.button1.TabIndex = 3; + this.button1.Text = "Поиск"; + this.button1.UseVisualStyleBackColor = true; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.label2.Location = new System.Drawing.Point(1119, 291); + this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(203, 22); + this.label2.TabIndex = 4; + this.label2.Text = "Наименование курсов:"; + // + // textBox2 + // + this.textBox2.Location = new System.Drawing.Point(1124, 318); + this.textBox2.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.textBox2.Name = "textBox2"; + this.textBox2.Size = new System.Drawing.Size(366, 26); + this.textBox2.TabIndex = 5; + // + // toolStrip1 + // + this.toolStrip1.ImageScalingSize = new System.Drawing.Size(24, 24); + this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripSeparator1, + this.toolStripButton1, + this.toolStripSeparator2, + this.toolStripButton2, + this.toolStripSeparator3, + this.toolStripLabel1, + this.toolStripButton3}); + this.toolStrip1.Location = new System.Drawing.Point(0, 0); + this.toolStrip1.Name = "toolStrip1"; + this.toolStrip1.Padding = new System.Windows.Forms.Padding(0, 0, 3, 0); + this.toolStrip1.Size = new System.Drawing.Size(1593, 34); + this.toolStrip1.TabIndex = 6; + this.toolStrip1.Text = "toolStrip1"; + // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + this.toolStripSeparator1.Size = new System.Drawing.Size(6, 34); + // + // toolStripButton1 + // + this.toolStripButton1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton1.Image"))); + this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton1.Name = "toolStripButton1"; + this.toolStripButton1.Size = new System.Drawing.Size(121, 29); + this.toolStripButton1.Text = "Обновить"; + // + // toolStripSeparator2 + // + this.toolStripSeparator2.Name = "toolStripSeparator2"; + this.toolStripSeparator2.Size = new System.Drawing.Size(6, 34); + // + // toolStripButton2 + // + this.toolStripButton2.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton2.Image"))); + this.toolStripButton2.ImageTransparentColor = System.Drawing.Color.Magenta; + this.toolStripButton2.Name = "toolStripButton2"; + this.toolStripButton2.Size = new System.Drawing.Size(126, 29); + this.toolStripButton2.Text = "Сохранить"; + // + // toolStripSeparator3 + // + this.toolStripSeparator3.Name = "toolStripSeparator3"; + this.toolStripSeparator3.Size = new System.Drawing.Size(6, 34); + // + // toolStripLabel1 + // + this.toolStripLabel1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripLabel1.Image"))); + this.toolStripLabel1.Name = "toolStripLabel1"; + this.toolStripLabel1.Size = new System.Drawing.Size(87, 29); + this.toolStripLabel1.Text = "Поиск"; + // + // toolStripButton3 + // + this.toolStripButton3.Font = new System.Drawing.Font("Segoe UI", 9F); + this.toolStripButton3.Name = "toolStripButton3"; + this.toolStripButton3.Size = new System.Drawing.Size(127, 34); + this.toolStripButton3.Click += new System.EventHandler(this.toolStripButton3_Click); + // + // button2 + // + this.button2.Location = new System.Drawing.Point(1124, 571); + this.button2.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(165, 63); + this.button2.TabIndex = 7; + this.button2.Text = "Информация об учениках"; + this.button2.UseVisualStyleBackColor = true; + // + // button3 + // + this.button3.Location = new System.Drawing.Point(1326, 571); + this.button3.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(165, 63); + this.button3.TabIndex = 8; + this.button3.Text = "Информация о дисциплинах"; + this.button3.UseVisualStyleBackColor = true; + // + // DataForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1593, 706); + this.Controls.Add(this.button3); + this.Controls.Add(this.button2); + this.Controls.Add(this.toolStrip1); + this.Controls.Add(this.textBox2); + this.Controls.Add(this.label2); + this.Controls.Add(this.button1); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.label1); + this.Controls.Add(this.dataGridView1); + this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.Name = "DataForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Главная"; + this.Load += new System.EventHandler(this.Form1_Load); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.отчетоплатыобученияобучающихсяDataSetBindingSource)).EndInit(); + this.toolStrip1.ResumeLayout(false); + this.toolStrip1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.DataGridView dataGridView1; + private System.Windows.Forms.BindingSource отчетоплатыобученияобучающихсяDataSetBindingSource; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.ToolStrip toolStrip1; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; + private System.Windows.Forms.ToolStripButton toolStripButton1; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; + private System.Windows.Forms.ToolStripButton toolStripButton2; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator3; + private System.Windows.Forms.ToolStripLabel toolStripLabel1; + private System.Windows.Forms.ToolStripTextBox toolStripButton3; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.Button button3; + } +} + diff --git a/sql2/Forms/DataForm.cs b/sql2/Forms/DataForm.cs new file mode 100644 index 0000000..ae805e2 --- /dev/null +++ b/sql2/Forms/DataForm.cs @@ -0,0 +1,54 @@ +using MySqlX.XDevAPI.Relational; +using PaymentLogs.Domain; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace PaymentLogs +{ + public partial class DataForm : Form + { + public DataForm() + { + InitializeComponent(); + + } + + private void Form1_Load(object sender, EventArgs e) + { + + dataGridView1.Columns.Add("id", "Номер"); + dataGridView1.Columns.Add("fcs", "ФИО"); + dataGridView1.Columns.Add("course", "Курс"); + dataGridView1.Columns.Add("course_price", "Цена"); + dataGridView1.Columns.Add("debt", "Долг"); +/* BindingList list1 = new BindingList(); + dataGridView1.DataSource = list1;*/ + foreach (Payment payment in Program.PaymentRepository.All()) + { + dataGridView1.Rows.Add(payment.Id.ToString(), payment.FCs, Program.CourseRepository.ById(payment.CourseId).Name, payment.CoursePrice.ToString(), payment.Debt.ToString()); + } + } + + private void toolStripSplitButton1_ButtonClick(object sender, EventArgs e) + { + + } + + private void toolStripButton3_Click(object sender, EventArgs e) + { + + } + + private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) + { + + } + } +} diff --git a/sql2/Forms/DataForm.resx b/sql2/Forms/DataForm.resx new file mode 100644 index 0000000..5dfd700 --- /dev/null +++ b/sql2/Forms/DataForm.resx @@ -0,0 +1,633 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 329, 17 + + + 703, 17 + + + + + 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 + uDRFyyHLwjwAAAAASUVORK5CYII= + + + \ No newline at end of file diff --git a/sql2/Forms/LoginForm.Designer.cs b/sql2/Forms/LoginForm.Designer.cs new file mode 100644 index 0000000..f2b4b87 --- /dev/null +++ b/sql2/Forms/LoginForm.Designer.cs @@ -0,0 +1,237 @@ +namespace PaymentLogs +{ + partial class LoginForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LoginForm)); + this.label1 = new System.Windows.Forms.Label(); + this.button1 = new System.Windows.Forms.Button(); + this.textBoxLogin = new System.Windows.Forms.TextBox(); + this.textBoxPassword = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.pictureBox2 = new System.Windows.Forms.PictureBox(); + this.linkLabel1 = new System.Windows.Forms.LinkLabel(); + this.pictureBox3 = new System.Windows.Forms.PictureBox(); + this.pictureBox4 = new System.Windows.Forms.PictureBox(); + this.pictureBoxClear = new System.Windows.Forms.PictureBox(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox3)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox4)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxClear)).BeginInit(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 30F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.label1.Location = new System.Drawing.Point(430, 194); + this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(393, 69); + this.label1.TabIndex = 0; + this.label1.Text = "Авторизация"; + // + // button1 + // + this.button1.Cursor = System.Windows.Forms.Cursors.Hand; + this.button1.Location = new System.Drawing.Point(543, 475); + this.button1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(177, 63); + this.button1.TabIndex = 1; + this.button1.Text = "Войти"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // textBoxLogin + // + this.textBoxLogin.Location = new System.Drawing.Point(442, 317); + this.textBoxLogin.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.textBoxLogin.Name = "textBoxLogin"; + this.textBoxLogin.Size = new System.Drawing.Size(378, 26); + this.textBoxLogin.TabIndex = 2; + this.textBoxLogin.TextChanged += new System.EventHandler(this.textBox1_TextChanged); + // + // textBoxPassword + // + this.textBoxPassword.Location = new System.Drawing.Point(442, 397); + this.textBoxPassword.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.textBoxPassword.Name = "textBoxPassword"; + this.textBoxPassword.Size = new System.Drawing.Size(378, 26); + this.textBoxPassword.TabIndex = 3; + this.textBoxPassword.UseSystemPasswordChar = true; + this.textBoxPassword.TextChanged += new System.EventHandler(this.password_TextChanged); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.label2.Location = new System.Drawing.Point(435, 274); + this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(107, 37); + this.label2.TabIndex = 4; + this.label2.Text = "Логин:"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.label3.Location = new System.Drawing.Point(435, 354); + this.label3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(133, 37); + this.label3.TabIndex = 5; + this.label3.Text = "Пароль:"; + // + // pictureBox1 + // + this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image"))); + this.pictureBox1.Location = new System.Drawing.Point(363, 274); + this.pictureBox1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(70, 72); + this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBox1.TabIndex = 6; + this.pictureBox1.TabStop = false; + // + // pictureBox2 + // + this.pictureBox2.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox2.Image"))); + this.pictureBox2.Location = new System.Drawing.Point(363, 354); + this.pictureBox2.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.pictureBox2.Name = "pictureBox2"; + this.pictureBox2.Size = new System.Drawing.Size(70, 74); + this.pictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBox2.TabIndex = 7; + this.pictureBox2.TabStop = false; + // + // linkLabel1 + // + this.linkLabel1.AutoSize = true; + this.linkLabel1.Cursor = System.Windows.Forms.Cursors.Hand; + this.linkLabel1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.linkLabel1.Location = new System.Drawing.Point(524, 594); + this.linkLabel1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.linkLabel1.Name = "linkLabel1"; + this.linkLabel1.Size = new System.Drawing.Size(205, 25); + this.linkLabel1.TabIndex = 8; + this.linkLabel1.TabStop = true; + this.linkLabel1.Text = "Зарегистрироваться"; + this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked); + // + // pictureBox3 + // + this.pictureBox3.Cursor = System.Windows.Forms.Cursors.Hand; + this.pictureBox3.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox3.Image"))); + this.pictureBox3.Location = new System.Drawing.Point(831, 394); + this.pictureBox3.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.pictureBox3.Name = "pictureBox3"; + this.pictureBox3.Size = new System.Drawing.Size(45, 34); + this.pictureBox3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBox3.TabIndex = 9; + this.pictureBox3.TabStop = false; + this.pictureBox3.Click += new System.EventHandler(this.pictureBox3_Click); + // + // pictureBox4 + // + this.pictureBox4.Cursor = System.Windows.Forms.Cursors.Hand; + this.pictureBox4.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox4.Image"))); + this.pictureBox4.Location = new System.Drawing.Point(831, 394); + this.pictureBox4.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.pictureBox4.Name = "pictureBox4"; + this.pictureBox4.Size = new System.Drawing.Size(45, 34); + this.pictureBox4.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBox4.TabIndex = 10; + this.pictureBox4.TabStop = false; + this.pictureBox4.Click += new System.EventHandler(this.pictureBox4_Click); + // + // pictureBoxClear + // + this.pictureBoxClear.Cursor = System.Windows.Forms.Cursors.Hand; + this.pictureBoxClear.Image = ((System.Drawing.Image)(resources.GetObject("pictureBoxClear.Image"))); + this.pictureBoxClear.Location = new System.Drawing.Point(885, 394); + this.pictureBoxClear.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.pictureBoxClear.Name = "pictureBoxClear"; + this.pictureBoxClear.Size = new System.Drawing.Size(45, 34); + this.pictureBoxClear.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBoxClear.TabIndex = 11; + this.pictureBoxClear.TabStop = false; + this.pictureBoxClear.Click += new System.EventHandler(this.pictureBoxClear_Click); + // + // LoginForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1200, 692); + this.Controls.Add(this.pictureBoxClear); + this.Controls.Add(this.pictureBox4); + this.Controls.Add(this.pictureBox3); + this.Controls.Add(this.linkLabel1); + this.Controls.Add(this.pictureBox2); + this.Controls.Add(this.pictureBox1); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.textBoxPassword); + this.Controls.Add(this.textBoxLogin); + this.Controls.Add(this.button1); + this.Controls.Add(this.label1); + this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.Name = "LoginForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Вход"; + this.Load += new System.EventHandler(this.Form1_Load); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox3)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox4)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxClear)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.TextBox textBoxLogin; + private System.Windows.Forms.TextBox textBoxPassword; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.PictureBox pictureBox1; + private System.Windows.Forms.PictureBox pictureBox2; + private System.Windows.Forms.LinkLabel linkLabel1; + private System.Windows.Forms.PictureBox pictureBox3; + private System.Windows.Forms.PictureBox pictureBox4; + private System.Windows.Forms.PictureBox pictureBoxClear; + } +} \ No newline at end of file diff --git a/sql2/Forms/LoginForm.cs b/sql2/Forms/LoginForm.cs new file mode 100644 index 0000000..b2fc2ae --- /dev/null +++ b/sql2/Forms/LoginForm.cs @@ -0,0 +1,106 @@ +using MySql.Data.MySqlClient; +using PaymentLogs.Domain; +using PaymentLogs.Utils; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Data.SqlClient; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace PaymentLogs +{ + public partial class LoginForm : Form + { + + + public LoginForm() + { + InitializeComponent(); + } + + private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + ///Form2 f2 = new Form2(); + /// f2.ShowDialog(); + this.Hide(); + var form2 = new RegisterForm(); + form2.Closed += (s, args) => this.Close(); + form2.Show(); + } + + private void button1_Click(object sender, EventArgs e) + { + var loginUser = textBoxLogin.Text; + var passUser = textBoxPassword.Text; + + try + { + User user = Program.UserRepository.GetUser(loginUser); + string hash = StringUtils.SHA256_hash(passUser); + if (hash.Equals(StringUtils.SecureStringToString(user.PasswordHash))) + { + MessageBox.Show("Вы успешно вошлши!", "Успешно!", MessageBoxButtons.OK, MessageBoxIcon.Information); + Program.CurrentUser = user; + this.Hide(); + (new DataForm()).Show(); + } else MessageBox.Show("Пароль неверный!", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error); + } catch (NullReferenceException ex) + { + MessageBox.Show("Такого пользователя не существует!", "Пользователя не существует!", MessageBoxButtons.OK, MessageBoxIcon.Warning); + } + + + + + + } + + private void password_TextChanged(object sender, EventArgs e) + { + + } + + private void Form1_Load(object sender, EventArgs e) + { + pictureBox3.Visible = false; + textBoxLogin.MaxLength = 50; + textBoxPassword.MaxLength = 50; + } + + private void textBox1_TextChanged(object sender, EventArgs e) + { + + } + + private void pictureBoxClear_Click(object sender, EventArgs e) + { + textBoxLogin.Text = ""; + textBoxPassword.Text = ""; + } + + private void pictureBox3_Click(object sender, EventArgs e) + { + textBoxPassword.UseSystemPasswordChar = !textBoxPassword.UseSystemPasswordChar; + pictureBox3.Visible = false; + pictureBox4.Visible = true; + } + + private void pictureBox4_Click(object sender, EventArgs e) + { + textBoxPassword.UseSystemPasswordChar = !textBoxPassword.UseSystemPasswordChar; + pictureBox3.Visible = true; + pictureBox4.Visible = false; + } + + private void button2_Click(object sender, EventArgs e) + { + this.Close(); + (new LoginForm()).Show(); + } + } +} diff --git a/sql2/Forms/LoginForm.resx b/sql2/Forms/LoginForm.resx new file mode 100644 index 0000000..764dca8 --- /dev/null +++ b/sql2/Forms/LoginForm.resx @@ -0,0 +1,1258 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + 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 + bi3van23AAAAAElFTkSuQmCC + + + + + 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 + SUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wQAADsEBuJFr7QAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAADNcSURBVHhe7d0J + uK5zufjxnXmeZVZmZaZUSJQUKilKSSeaKFKnE+c0Og3nKOdUu1GhgQaaVJxM0SFlSDIWScqYcZs3ov// + e6c6G/dee631rrXe53c/3+91fa6ry5Vtr/cZ3nc972+YZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm + ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm + ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ9bFEsieWw+t/+98IwMzOzhnsyXor340s4HufiGszE/5uNv+Am + XIrTcAT+FS/HqjAzM7OOFL/Nvwwfx+m4Hdmb+0S4AcchPhRsA58amJmZTWHx2P5NiN/s70f2Zj0V4r99 + Kg7AE2FmZmYT3Ap4D36L7M142P6MU/BmLAUzMzMbZ3NhO3wLDyJ74+2ieDJwFNaHmZmZjbIF8c+4Gtkb + bCtiUOHJ2AFPgJmZmSXNi31wHbI31JbFzIIdYWZmZn8rHvXvhiuRvXlWEtMLN4GZmVmv2woXI3uzrOph + xPoEK8HMzKxXxep7RyK+J8/eJPvgLrwBZmZmvShG9l+L7E2xj07EijAzMyvZfJiOPv/WPzuxBPHOMDMz + K1WspX8Osjc//Z/DEB+UzMzMmm9r3IrsDU+PF3sauJqgmZk13e4YaQc+5WJK5DowMzNrroORvblpdOKp + STw9MTMza6J5cDiyNzWNTewrENsdm5mZdbqFENv0Zm9mGp+HsAfMzMw62TJwpP/kiO2GfRJgZmadazVc + juzNSxPjATwfZmZmnWhT3IjsTUsT605sDDMzs6H2PMSbUvZmpclxPWJhJTMzs6H0GjyI7E1Kk+tSLAEz + M7Mp7QDEtrbZm5OmRqwY6LLBZmY2JT0BhyJ7Q9LUiy2VzczMJrX5cQyyNyINz7thZmY2KcX3zWcgewPS + cMX2ynvCzMxsQlsRFyJ781E3xBoBMSPDzMxsQloP1yB701G33IZ1YWZmNlDPgvv4t+X3WA5mZmbjahfc + h+xNRt32CywMMzOzMbU/nOPfttiRcW6YmZnNsZjjfzCyNxS15+MwMzMbsVhR7mvI3kjUrrfBzMwsbRGc + iOwNRG2Lr3JiPIeZmdmjWh6/RPbmoRpiMOczYWZm9tfWwJXI3jRUy81YE2Zm1vM2R7wpZG8WqunXWBJm + ZtbTXox7kb1JqLbYzyE2dTIzs571RjyE7M2hT+7BjbgdfVvw6GjElE8zM+tJfZ3jH2vkfwN7Y1MshMe2 + LLbCOxEzImJznezPquKDMDOz4s2Dw5G9EVT2Y7wM82KsxfbH++G3yP7sCvaCmZkVLX7bjWVhszeAqs7D + 1piIYjnd1+MGZP+tlj2I7WBmZsWKx9rnILv5V3Q//hmTsQZ+PBGouFLiHVgfZmZWpNVxBbKbfkXxG3ps + XzzZvRl/RvZ3aNUfsSLMzKzxYqBbjHDPbvYVXYZVMVXtgHjakP1dWhWrQcaS0GZm1mjb4y5kN/mKfoql + MNXFWgrxHXr2d2rVCXALYTOzBtsT1d6URvJ9LIhhFdMKs79Xy74IMzNrqAMQO79lN/WKjkBMbxx2H0H2 + 92vZv8DMzDperOh2KLIbeUV/QSxo1JXi9T8K2d+1VfEavxpmZtbRYk33Y5DdxCuK0fexlHHXmg+nIfs7 + t2omtoCZmXWs2NUtNnbJbt4Vxdr9O6KrxUDEy5H93Vt1K9aGmZl1pJizfSGym3ZF8UY0FXP8B201/AnZ + z9Cqq/BEmJnZkFsP1yC7WVcUb0BroZWehnhakf0srToX2QZKZmY2RW2DGchu0hXFmv4t/vb5IlTbcvlb + mAtmZjbF7YIYmJXdnCs6BYui1d6B7Odq2SEwM7MpbH/0aY7/VzCeLXy71nRkP1/L3gozM5vkYo55zHnP + bsRVxW+Z8XNXKB6ZH4fs52xVfLXxEpiZ2SQVc8srbj87O/HGsi+qFUsVn43sZ27V3dgEZmY2wcWubCci + u/lWFDvr7YaqLYsrkf3srYrtl6dyB0Yzs/Itj9iaNbvpVnQ7tkL1noL4WbPXoFWxDfMSMDOzAVsD1X5T + HMnVWBd9aWvE047stWjVTxBfV5mZ2TjbHDcju8lWdAlWRt/aHbHZTvaatOpImJnZOIpR1fciu7lWdDoW + R1/7ALLXpWXvhZmZjaG9ELvcZTfVir6DBdDnYprjl5G9Pq2Kpxp7wszMRtFByG6mVcXCOC4n+0ix0FGs + dpi9Tq16EM+DmZnNprlxGLKbaEXx2+GBsEe3GC5C9pq16g6sDzMze0wL43hkN8+KHsCrYHkr4Vpkr12r + YnbHcjAzs7+1FH6G7KZZ0V3YHjZymyJW18tew1b9AvFh18ys962Gy5HdLCuKleI2ho2uHVBtMOgJiK+7 + zMx624a4DtlNsqJfw2Vix94bkb2eLfsEzMx6WYyKvhPZzbGi2PhmGdj4OhTZ69qyA2Bm1qtiXnRMjcpu + ihXF1rex+52Nv1gj4OvIXt9WPYxdYGbWi+K3nrjxZTfEio7APLDBi4WSqg0WvQ/PhJlZ2WLQ02eQ3QQr + ijn+B8MmtqVxBbLXvFW3YE2YmZVrfhyL7OZXUYxaj4FrNjnF7pA3IXvtW/UbLAkzszLFTe0MZDe9iu7B + jrDJLXaJrLZRVFwn8WHZzKz5VsSFyG52Ff0Jm8Gmpt1QbTzJNxEDHs3Mmm09XIPsJlfRVVgLNrVV3Djq + gzAza7JtMAPZza2i8/BE2HCqOLh0H5iZNVXMa56J7KZWUWxduyhseMUMkx8gOz6tinUy3C/CzJrpbejT + HP+vIPavt+EXH8IuQHacWhWbRm0EM7POFoOWYs57dhOr6hA4WKtbrYA/IjterYq9MlaGmVnnmg/Vlmgd + yUPYF9bNYvBptfEnF2NxmJl1pkVwIrKbVkX3Y1dYt9sWDyA7hq36EVxS2sw60fL4JbKbVUW3YytYG+2N + 7Di27HCYmQ21WIr1SmQ3qYquxrqwtvowsuPZsgNhZjaUYgnWm5HdnCq6BA7CarMYpHkUsuPaqthkag+Y + mU1pL0G19ddHchocfNV2MU3zx8iOb6tinY0tYWY2Je2F2OUuuyFV9B3E/vPWfvEhLp7kZMe5VbdibZiZ + TWoV11sfyXTMBavTaojNmrLj3arYf8IlqM1sUoolVr+A7OZTUXy/6iCruj0NsV1zduxbdS4WgpnZhLUw + jkd206ko5o3vDqvdixCLOWXnQKu+DZ9YmdmEtBR+huxmU1Gsue7GK/3p7cjOg5Z9FGZmAxXflV6O7CZT + 0Q3YGNavYpxHdj60bD+YmY2rDXE9sptLRZdhVVj/ikfm30N2XrQqvtrYGWZmY+p5uBPZjaWis7EMrL8t + iDgPsvOjVbFORyzWZWY2qvbEg8huKBUdh7j5m8WHwGrLWsfXWk+CmdmIHYCY/pbdSCo6Au6qZrP2FMRm + T9n50qr4emsJmJk9rpjj/xlkN4+K4kPOwTDL2hqx3XN27rTqJ5gPZmb/aH4ci+ymUVEsYfwGmI1UrANR + 7WnYl2Bm9teWxBnIbhYVxcpvO8JsNL0f2XnUsvfBzHreirgI2U2iolj7fTOYjaXPIzufWhVPNV4LM+tp + 6+EaZDeIimKjlLVgNtZiC+FTkJ1XrYpZPjHV18x61jaYgezGUNF5cJc0G6TFUO1pWazzsQHMrCe9DDOR + 3RAqit/cFoXZoK2Ea5GdZ626GsvBzIr3NjyM7EZQ0VcQj2/NJqpNcDey861V5yN2+zSzgj0BMec9u/ir + OgTxc5tNdDsgppJm512rTkCsBWJmhYqFP76O7KKvKDZA2Qdmk9kbkZ1/LTsMZlakRXAisou9oli5bVeY + TUUfQ3YetiyWAjezxlseFyC7yCu6DVvBbKqKr5iqPV2LMUIxUNjMGm0NVNvRbCQxknldmE11C+AsZOdl + q+7Ds2BmjfUM3Izswq7oEqwMs2G1NK5Adn626hasCTNrpJfgXmQXdEWnYXGYDbvVcROy87RVv8FSMLOO + tzeqTU0aybcRj1/NutLmqPYB/EzEbqFm1tEOQnbxVjUdc8Gsa+2GaottHQPX1DDrWLFwxxeQXbQVxS5m + B8Ksy1X8QP4hmFlHiqU7Y/Wu7GKt6AHsDrMW+gyy87hl+8LMhlyMOv4Zsou0oruwPcxaKZ7O/QDZ+dyq + 2ELY69BsiK2GalOORnIDNoZZa8VKnNUW44oP4xvBzKa4p+FPyC7Mii7DqjBrtRXwR2Tnd6uuxyowsylq + O9yJ7IKs6GwsA7PWeypmIDvPWxULcLkGh9kU9FrE92/ZhVjRcVgQZlXaBjGQNTvfWxUbjc0DM5ukYneu + mP6WXYAVxehp5/hbxWKxruycb9nhMLMJLkYRV5xKNDvxIedgmFUu5tNn53/LYt0DM5ugYunNY5FdbBXF + EsZvgFn1YkW9o5BdB62KD+97wMwGbEnE+tvZhVbRPdgBZn1pXvwY2fXQqhjfsC3MbJytiIuQXWAVxZTG + zWDWt2IEfYykz66LVt2KdWBmY2wDXIfswqrot4gtVM36WizqVW1djyvh9F2zMRRThO5AdkFVdB6eCLO+ + F4t7xddg2XXSqrPgFsJmo+hlmInsQqroFCwKM3uknfAQsuulVV+GmY3Q21Ft7/CRHAEXDjF7fLHeR3bN + tGwfmNljiqlAMec9u2iqOgTxc5tZ3ieRXTutuh+bwMz+1nz4BrILpqJ4tPkmmNnIxeJfsQx2dh216nIs + DLPeF9uDnoTsQqkoxjbsCjMbXbEHRmyElV1PrfoYzHrd8qi2N/hIbsNWMLOxFdPoYjpddl21KFb63BRm + vWxNVLqg5+RqrAszG19x/dyO7Ppq0S8QX3GY9apn4GZkF0VFF2NlmNlgbY0YSJddZy2KWU9mvWln3Ifs + YqjoVCwGM5uYYpOdKtuB341VYFa+2Ps7vvvKLoSKvo0FYGYT2/uQXXMtOgxmZevjHP/pmAtmNjl9Htm1 + 15oHEXsgmJUrBrl8AdmJX1E8mnwXzGxyiy2ET0Z2HbbGpwBWrljs4gRkJ3xFsf/37jCzqSn20LgQ2fXY + Ep8CWKmWRexwl53sFc1A7GBoZlNbDKK7Htl12ZJ4UmrWfPFJ9gpkJ3lFN2BjmNlw2gCtbx8eq4QuCbNm + i728/4TsBK/oMqwKMxtuO6D1WUZvhVmTbYc7kZ3YFcX65LFEqZl1ozcgu1ZbcT7Mmuu1iIEs2UldUexQ + FpuUmFm3io12smu2FX6daE11AKqszDUan4Zz/M26Waw78jVk124LPgmzzhdz/D+L7CSuKD7k/CvMrNvF + CpxnIbuOu+4WuEmQdbr5cSyyE7iiGFwU3y+aWRstjVZnI20Os04WU1XORHbiVnQPYoSxmbXV6rgJ2XXd + Ze+FWedaERchO2kriimNm8HM2ix+m74X2fXdVfELllmnWh/XIDthK7oKa8HM2m43PIzsOu+i+MpxcZh1 + om3R+kpbY3EOYjljM6tRbNKVXetdtTPMht4rcT+yk7Si2MAoNjIys1p9Gdk130X/CbOh9g609OhsUEdg + HphZvWJ64AXIrv2uiV9EzIZSLKZxMLITs6pDED+3mdVtQ7SwaukfYDblzYdvIDspK3oIb4KZ9aNYbS+7 + F3RJLDzmQECb0hbBSchOyIpiC85dYWb9aXm0MDVwC5hNSTHH/0JkJ2JFt+JZMLP+9QVk94UueSPMJr2n + IL5zyk7Ciq7GOjCzfvYMZPeGLnkfzCa1uBBiA4rsBKzoYqwMM+t3XV/YbDrMJq2X4j5kJ19Fp2IxmJl9 + Cdl9oiu+DrNJaW/EkpPZiVfRtxHzgM3Morcgu1d0xckwm9BirvuHkJ1wVX0MzvE3s1nbGtn9oit+CbMJ + K1a56/pjr4kUqxgeADOzx7YmsvtGV1wJswkp1rf/EbITraLYvyB2ATMzy1oK2b2jKy6H2cAtjZ8hO8kq + moHnwMxsdnX9A8AlMBuoNRCPkrITrKJrsQHMzEYqVgTM7iFdEQuzmY27p+EmZCdXRZdhVZiZzalNkd1H + uuIXMBtXL8TdyE6sis7EkjAzG00vR3Yv6YqzYTbmXocWtrycKN+Bc/zNbCx9BNn9pCtiYzazMfUexFaS + 2QlV0acxF8zMxtIZyO4pXXEEzEbV3PgsshOpoviQczDMzMZazIzq+kqoH4DZHFsQ30N2ElUUX2/sCTOz + 8dT1ZYDD62E2YjGX9SxkJ1BFd2F7mJmNp1gWPHYFze4vXfICmM22J+HXyE6eiv6EmLpjZjbedkF2f+ma + p8AsbUNcj+zEqei3WB1mZuNtPvwG2T2mS2Kb9ti7xexxbYs7kJ04FZ2HJ8LMbJA+jOwe0zXxta7Z49od + sdFNdtJUdDxiIyMzs0GK/UG6PvL/7z4Js0f1DsQWt9kJU1HMg/UxmJkNWuyJcguy+0wX7QGzvxajVg9B + dqJUFT9v/NxmZoMUg6V/j+w+01Vrweyvg1a+iewkqeghvAlmZoO2Hq5Bdq/pqpvhLz82bRHEetDZSVLR + TOwKM7NBeyZaeuz/d0fCet4KuADZCVLRbdgKZmaD9lLEVLrsXtN1L4H1uFgA4g/ITo6Krsa6MDMbtP3Q + 6mDp+NCyEKynPQMtPrYar1iScyWYmQ1SfG8eG4Rl95lWHAfraS0/thqPU7EozMwGaV4chew+05K9YD1s + b7SySMVEOBoxw8HMbJBisPSPkN1nWhIbnS0G61EVHluN1XTMBTOzQVoe5yO7z7TmM7AeNTe+iOxkqOgv + eBfMzAYtVveLTcKye02LNoD1pFjf/gRkJ0JFsX9B7GNgZjZoT0csmJPda1r0E1hPWho/R3YiVDQDsRGH + mdmgbY/4vjy717RqN1gPWhNXIjsJKroW68PMbNDegGqDpX+HmMVgxXsabkJ2ElR0GVaFmdmgHYTsPtO6 + V8KKtx2qPbYaydmIrzrMzAYpBkt/Htl9pnUXwhlRxXstHkR2AlQUq1ktCDOzQYplcY9Hdp+pIH4xtKLF + J7sPIqa/ZQe/ok/DT7RmNmjLIJ4kZveZCmIlVCtaPLb6KrIDX1F8yInv6MzMBm01XIHsXlNBPBHeCFaw + ePz9PWQHvqI4mfeEmdmgbYIbkd1rqvgArGBL4kxkB72iu7EDzMwG7bm4E9m9popfwWl/BYttbS9CdtAr + ik/pm8HMbNBegweQ3WuqiJ9vQ1ixYrGbWPQmO+gVXYW1YGY2aAfgYWT3mkreCytWPLa6A9kBr+gcxAhd + M7NBihlDn0J2n6kmvhqeB1aol2MmsgNe0clYFGZmgzQ/jkF2n6kmvi5dEVaod6APj63+7nD4CdbMBm0J + nIHsPlNN/IL4LFiRnoBDkB3squLnNTMbtPhNOJbAze4z1cT6KDG40YoUj62+iexgV/QQ3ggzs0Hr22Dp + A2FFWgQnITvQFcWjq11hZjZo8Rj8VmT3moo+DitSnx5bhVvwTJiZDVr8ItGnwdLTYUV6Cv6A7EBXdDXW + gZnZoO2PPg2Wjg3RYpyYFegZiN+GswNd0cWIFQ3NzAYp3gQPRnafqcrB0oXaGfchO9AVnYbFYGY2SDFd + +Ahk95mKYrD0W2BF2ht/RnawKzoa88HMbJBisPSJyO4zFd2PV8AKFI+tPozsQFcVo1X9zsrMBm15XIDs + PlPRbdgSVqC58UVkB7qyExA/u5nZeFsDVyK7x1R0HdzZr0gLI94IswPdB5+Amdl42hw3I7u3VHQJVoYV + aGn8HNmB7pPYktPMbCy9GPciu6dUdDoWhxVoNVyB7ED3TczV3QVmZqPpdejTYOnvYAFYgZ6Gm5Ad6L6K + aY/uXGVmc+ogZPeQqmJ1v7lgBdoOdyE70H0XCx+tCTOzxxYDhg9Ddu+oKHb0iw87VqTX4kFkB1uP+A2W + hJnZ31sIxyO7Z1T0AF4FK1IMdItPdNnB1qOdgdj+2MxsKZyF7F5R0d14AaxA8djqs8gOtGbvGLhIkFm/ + i8HSlyO7R1R0AzaBFSh+i/0WsgOtOfsgzKyfbYBY9Ca7N1T0azwJVqD4HvtMZAdao7cPzKxfPQ93Irsn + VHQOloEVKD7FxWC27EBrbGLQ5PYws360J/o0WPr7WBBWoPVxLbIDrfGJaZMbwcxqF4OlY2Gw7D5Q0ZGI + LYytQNviDmQHWoOJ7wJXgZnVKwb8Hors2q8oZoQdDCvSyzET2cHWxIiNMFwL26xWMVg6Zv1k13xFD+GN + sCL17bHVMP0IPjIzq1EMlo51P7JrvaJ7sBOsQPHY6hBkB1qT53CYWdutiAuRXeMV3Qr3OynSfPgGsgOt + yXcgzKzN1sM1yK7tiq7C2rACLYKTkR1oTY0YRLMHzKyttsEMZNd1RefhibACrYBfITvQmlox6HJLmFkb + 7YI+DZY+FYvCCvQU/AHZgdZwxPdqPloz635vQ58GS38V88IK9EzEfvXZgdZwxfdrPmIz62YxWDrmvGfX + blXT4WZmRdoZ9yE70OqG+J4t9gw3s+4Ug6W/huyarSjm+O8LK9Le+DOyg61u+TbmgpkNvxgsfSKya7Wi + +7EbrEB9fGxVwcdgZsNtefwS2TVa0e14NqxAsdLcF5EdaHXffjCz4bQGrkR2bVYUA8PXhRWob4+tYkrO + 2Y/5Z62L7+FcbtNs6ouV7mJmTnZdVhQrGcaKhlagpfFzZAe6oliM4zmIvairfQi4F5vDzKamlyCuu+x6 + rOh0uDlZkVbHFcgOdEXXY9Y99pdBtcd2N+BJMLPJbS/0abD0d7AArEBPx03IDnRFl2FVPLZY6CgGs2T/ + TqviZ10CZjY5HYTs2qsq5vg726hIz8ddyA50RfEVR3zVMbu2Rkxnyf7dVv0EMR/ZzCauufEFZNdcRbH/ + iJuQFeq1eBDZwa7oe4jv++fU7oiTPfszWvUlmNnEtDCOR3atVfQAXgUr0gGo9iY3kk9hLI+t3ofsz2lZ + /ExmNlhL4WfIrrGK7sb2sALFY6vPITvQFcWHnFjQaDx9Htmf2ap4LeKpj5mNr9VwObLrq6IYSLwxrEDz + 41vIDnRFMSr39RhvsZPVKcj+7FbFVz7Pg5mNrQ0Rs4ey66qiXyMbLG0NtiR+iuxAVxSPrV6IQVsMsdhF + 9t9o1Z3YAGY2uuJDc1w32fVUUayLElOjrUAxFzw+zWUHuqIbsQkmqlVQ7ZP/1VgOZjZyDpa2Znsyfo/s + QFf0O6yJiS4+UMRThey/2arzEaOZzSyvb4Olj0DsBWMFWhvXIjvQFZ2LZTFZ7YBqq32dgBgYamb/V1wT + n0F2zVQ0yGBp62DroE8DVn6IhTDZvQHZf79lh8HMHikGSx+L7FqpKH6peSOsSLE1Y0zfyA52RV/GVD62 + ij33s79Hy94Os74Xg6XPQHaNVHQPdoQVKbZm7NNj/0Mw1T0BX0P292nVw3gZzPpa3DsvQnZ9VBTbFsf2 + xVakGLl5HrKDXU3sef9mDKvYCessZH+3Vt0HbwjWx9bDNciui4quwlqwIsVvpccgO9jVxJ7bL8Kwi02F + qm2hfAsmYxaFWVfbBncgux4qil8Snwgr1IeRHexqbsOW6Eqro9pWyldiMmdTmHWl+NprJrLroKJY2XRR + WKF2Qx/mqsZ6BjG1sWvFB5JqN5EYCBWjoc2qFgNfY+xLdv5XdCSc41+sGLgSvxVnB7ySi7ESulp8CKt2 + M4mvlOKrJbNKxTkdc96zc76qGCzttVysOKD/g+yAV/JjxJr8Xe9AZH//lsVXS2ZVmg9fR3auVxSDpfeF + FSxGwWcHvZKjEbvytVLF1cO8gViFFsGJyM7xiu7HrrCCxb7UdyE78FVMx1xoqVhC9PvIfp5WxUYo28Os + 1ZbHBcjO74pux1awop2K7MBXEN+l749Wi980qt1sYivU2A/drLViZdTY/TI7ryuKnzV+ZitaLN2YHfgK + 4rHVK9F6K+CPyH7GVsXeErE1slkrPQM3IzufK7oEK8OKFo/Ef4Xs4LduBrZGlZ6K+Jmyn7VVcYNZHGZd + 7yWIRcOy87ii0+C1Wby9kR381sVvlxuhWrHK2APIfuZWxUAq5xNbl4v7ZLWtu0fyHcTy5Fa4WOu/4nrV + l6Lyo+W9kP3cLTsCZl2rj3P8WxwsbePonchOgJb9L5ZA9T6I7Odv2UEw60rxVOpLyM7VimKwtNt496SY + XhZL4WYnQqu+h3iq0YfiN5OvInsdWhXLT78GZsNuYZyA7DytKL5W3B3Wk3ZBdiK06lPo22OrWNAoVjXM + Xo9WxY1oW5gNq9iV82fIzs+KYv0X1+XoWacjOxlaE781xnd0fS1G6ca+Btlr06pbsQ7MprpYEK3altwj + uQEbw3rUeqiw21/8trgH+t6T8Sdkr1Gr4usp9xi3qexpqHYdjeQyrArrWYchOyFaEivJbQd7pKej2hzl + n6MvYzpsuL0QdyM7Dys6E0vCelYM/mt9JasbsSns0e2E2K0re81a9W04Jckms9ci9qfIzr+KjoMfrHta + DLDKTopW/A5rwvIq7uh4KMwmowNQ4evQ0YrdRf1A3eNitHx2YrTgXCwLG7lPInv9WrYfzCaqeBL6WWTn + WkV9HyxtFHPHW91Q5odYCDbn4hP+d5G9jq2KrzZ2htmgzY9jkZ1nFcUSxm+A9bwY5ZqdIF0Xq3G5VvzY + iu/4YhBd9nq2KgY5xm5sZuMtBr7FALjs/KroHuwAs2nvQXaSdNkHYONrOVRb7THmLT8JZmMtprzF1Lfs + vKoopjRuBrO/Fo/RsxOlq+IDiw3WurgN2evbqriJO4XJxtL6qLjx2exchbVg9o9aWuTiQ7CJ6Tm4H9nr + 3KpYAjmWQjabUzHz6Q5k51FFDpa2xxWPTbOTpYu+jxiwaBNXrJhYbbrTV+B5YiMVG9xU+/A7ktjAKDYy + MntUr0R2wnRNLFLkErCT03uRveYtez/MsmKOf2xxm503FcUHYp+KWdp/ITtpuubVsMnrSGSve6viqUas + 5Gb29+Kp0H8jO1+q+nf4NMxm2/HITpwuuRCuUjW5xW8IJyN7/VsVy7i6L4RF8+HryM6TimJ9jH1gNmLx + 5pqdQF3yCtjktyhaOB/GIjaH2gDW3xbBScjOj4pmYleYzbHYYz07iboiNvjx+6upaxVcj+xYtOoPWB7W + v1ZEtQ+1I4n7+bNgNsdiCd3sJOqS2KTCpraYG11tetT5iN8ErT89BfHhLzsfKroasb6H2ahaG9mJ1CUu + Vzmc4nWPtcKzY9KqWPAqNnux+m2JagtdjeRXWAFmo+65yE6mroiR3K7sNrwqbiH8aVjtXor7kB3/ik7F + YjAbUy9GdkJ1RaxXb8Pto8iOTcveAavZvogR8Nlxr+hriBkOZmPuZchOqq44HTbcYg5x3GSy49OqWAQm + zn2rU5ynsa99dryrmg6nR9u4i+l12YnVFbE3tw2/BXAWsmPUqnhE/ExY+8WW4F9Gdpwrig+wsZqh2UDF + OvDZCdYVR8G60dK4HNlxatUtcGe0tov17WOd++z4VhT7F8Q+BmYD90/ITrKuiEfP1p3WRLxpZseqVfGh + ZilYe8XeIOchO64VzUDs4Gk2Ie2N7ETrihNh3WoLVBthfSbmh7VTfBi9EtnxrOhauKKlTWgvR3aydcUl + sO4Vy4xW203tG3DTlDZ6Om5CdhwruhSxQqfZhLY1shOuK2IzF6e4dLN3ITtmLfsIrNvF5k53ITt+FZ2N + ZWA24T0V2UnXJc+AdbNYVCc7Zi2LeeTWzWJ75/ilIDtuFR2HBWE2KS2L7MTrkvfDulksq1ttBHYsf/wC + WLd6D2Jl0OyYVRQfrp3jb5Na3MC7vmrWZbDuFhtKnYvs2LUqHjFvDBt+cY/6HLLjVFF8yIkFjcympNhu + NzsRu8QFW7pdbELyR2THrlUx6nol2PCKx9/xGDw7PhXF1xt7wmzK+jGyk7FLvg/rdjGeJOYpZ8evVTH6 + enHY1BebgMX0zOy4VHQ33PnUpryPIzshuyQeizkYsPvFCO1qg7ROQiw1a1PXk/BrZMejongKuynMpry9 + kJ2UXXMR5oV1u1ej2mCtI2BT0/qIr1+y41DRVXA5ahtamyE7MbvoQ7Du9+/Ijl/L/g02uT0XdyB7/Ss6 + B87xt6EWA21a2T87Vp97MazbxYp6sZFTdgxbFU813IRl8noVHkD22ld0PGIGjdnQ+yWyk7SLYrCMU7S6 + X6zgeDqyY9iq2Int2bCJ7Z/Rpzn+h8NxJdaZYgnU7ETtquvh2tjdbzFcjOwYtuo2rAMbvHhS9FFkr3NV + h8CsU3V9T4CMU7Ta6MloYa2Jsfg9loONv3hCFBswZa9vRfE16z4w61zxOKrFOdyxXbCP0rpfDDS9B9kx + bFXsQ78wbOwtgpORva4VzUTsoGnW2b6D7OTtOqdotdFOaGWw6WjFQK5YqtZGX6wa+Stkr2dF8ZXRljDr + dK9HdgK3ILamte63P7Lj17L/ho2uWC2y2pLRI4mvihwvYk0U36ffi+xE7roYQRwL0Fj3+wSyY9iy+GBj + Ixf7edyC7PWrKAa/upeENVXLc7fje7YtYN0utjj9LrJj2KpYn+KlsLydcR+y166i0xAzYMya6jnITuhW + xG8YLqvZ/WLxqZ8jO4atijc496t4fPHV4p+RvWYVHY2Y4WDWZL9BdmK34ndwec3uF8fot8iOYatiumNs + ZGOPzPGPfe2z16mq6YgnXGbNdhCyk7slsY3o/LButwZuRnYMWxW72MVWtn0upuZ+EdnrU1GMQfoXmDXf + 0rgL2YnekngUF7+FWLeLRahiid3sGLYqvgPu62PgmOMf63Nkr0tFce46x99K9WFkJ3trYlc6636vRLW1 + 4L+Jvn0AjV8eqo3tGEksnhbjpsxKtQRuR3bStyTeVP4J1v3eg+wYtiy+A+9Lq6PamI6RxH4kG8GsZFUG + 8DyI7WDd73PIjmGr4gPo61C9p+MmZK9BRZdhVZiVLRYGimUsswugNXdiA1i3mxcnITuGrYoPoM9H1eJn + qzBmaLTiK474qsOsfLFPd3YRtMgd3NooFlC5CNkxbFV8V7weqrUX+jTH/9tYAGa9KDY6OR/ZxdCiX8Ad + 3LrfirgG2TFs1XVYGVWK6cLVBm6O5FNwjr/1rhjoEo8xs4uiRe7g1kbr4w5kx7BVv0RMk2u5uHaqjdUY + SXzI6dNgTrPHdSiyi6NV/wXrfi9EtUfM/4NYKKfFYnGteAye/VwVxbkXSxmb9bqFEEvsZhdJq/aDdb+W + t6menS+gtWJ1w58i+3kquhs7wMzo2aj0VcBD2AnW/f4T2TFs2TvRSk9G63uEjEXs6bApzGyW3o7sgmnV + vdgc1u1iRb1Y2jk7hq2K75Zfha4XYzGuRfYzVBRPOteEmSV9FdmF06ob4KIe3S/W1j8d2TFs1Uxsga72 + XFQbiDmSc7EszGw2xTS6S5BdQK26FLHwkXW7WIDlcmTHsFW3Yi10rZcjPqBkf+eKfogY62Rmc2htVPvN + IHYwa3V0dp+quIXwFejS6nIxPqFPc/xj62KvfbMxtC0eQHZBteoIWPeLtedj/EZ2DFsVI+yHvcpcjLX4 + KLK/X1WHwMzGUcUpWgfCul/swf4wsmPYqm9hWKvNxRiL2MI4+3tVFLOA3gwzG6BqU7Ti0eerYd3vX5Ad + w5b9B6a6RXEysr9PRfH06EUwswGLx4ZfQ3ahtarro7Pt/4o12rNj2LK3YKpaAb9C9veoKHY43RJmNkHF + d5dnIbvgWtXV0dn26GJt+u8jO4atisfTL8Zk91T8EdnfoaLYEXQdmNkEF6OYYzRzduG1KhYFcV5w94vp + W+cgO4atij32N8Zk9Uzcguy/XdHFWAlmNklVnKJ1JmITFOt28Sj7D8iOYauux2QsUvVS3Ifsv1nRj7EY + zGyS2wr3I7sQW3UMYqyDdbt4pH07smPYqlikaglMVG9FtdkTI4klpOeFmU1Rr0C1hUT+Hdb9noNqH0Bj + CeSYpjdI8QE29rXP/vyqpmNY0yrNet17kV2UrYoPNK+Ddb/YZKfaB9AjMd5ilbvDkf25FcWxjymiZjbE + Po/sAm1VbIe8Haz7Vfxt990Ya7F3x4+Q/XkVxdOfV8LMhlx893YKsgu1VXdiA1i3i0feX0F2DFsVv9nu + idG2HM5H9mdVNANbw8w6Uoy+vQjZBduqqxE3V+t28QH0VGTHsFWx/0Zs0zunVsdvkf0ZFcWMiY1gZh0r + 5t9eh+zCbVX8ZhWPV63bxQfQmAOeHcNWxWp2Iy1oE5sl3YTs360oZkqsAjPraJvhHmQXcKuOR6xEZ91u + ZVT7ABqr2mVPoZ6PWEQo+3cq+jm6tJWymc2mnRDLnGYXcqv+G9b94gPo3ciOYat+gVmfQv0TYqBq9v+t + 6HtYEGbWSG9HdjG3bH9Y99sRf0Z2DFv196dQB6Ha1MeRxCZQzvE3a7BqO7jFUw23F22j/ZAdw5bFd+DZ + P68oPuS8C2bWaPHJ/ThkF3irYo/xzWHd7+PIjqG6LWZA7AEza7z47q7aDm43YDI2b7GJLT6AfhfZMVQ3 + xfiNF8LMilRxB7eJ3rzFJqf4ABojyLNjqG65EZvCzIoVO7jFCl7Zhd+qkxDrr1u3WwZ9WiynRb/DmjCz + om2D+H4vuwG06ghY91sDNyM7hhquc7EszKx4eyO7CbTsQFj3ezaqbSHcuh9iIZhZT/pPZDeDVsWUJUct + t9Er8DCy46ip9SX4FZpZz4od3I5GdlNo1UxsAet+sd1udgw1dQ6BmfW0+XA6sptDq27FWrDu9zlkx1CT + KxbTejPMrOfF5h5XILtRtCpGMzugqfvFsrrx/XN2DDU5YhEtV9I0s38U+5lXG519JuaHdbtF8Stkx1AT + K7Y23hJmZo9qK8R36NmNo1XHIMY6WLdbEdcgO4aaGLGl8TowM0uL0dnVdjn7IKz7rYc7kB1DDeYirAQz + sxF7D7KbSMsc8NRGL0C1LYSH7cdYDGZmo+rzyG4mrXoQz4d1v9cjO4Yau6MwL8zMRl3cNE5BdlNp1Z3Y + ANb9/gPZMdToTUfsxGhmNubisWF8d5jdXFp1NZaHdbuKi1RNlRjD806YmQ1UDBy6FtmNplXnY2FYt4tF + qk5DdgyViz0WYiCvmdmEFHuD34PshtOqExCL0Fi3WwqXIzuGerTbsTXMzCa0nRDLh2Y3nlZ9HNb9VsOf + kB1DPeJ6bAQzs0npAGQ3n5btD+t+T0e1p1AT5VKsAjOzSS1GFmc3oVbFU42dYd3vxaj2FGpQP8ESMDOb + 9GJa0XHIbkatis1RNod1vxjdnh3DPvoeFoCZ2ZS1IM5BdlNq1Q1YFdb9PoXsGPaJc/zNbGjFXPo/ILs5 + teoy+Di1+1V8CjVaMcf/YJiZDbWnYgayG1WrTkfMP7duV/Ep1Jw8gFfDzKwTxfr6sc5+dsNq1Rdh3W4Z + 9OkDQCxjvR3MzDrV3shuWi07CNbNnow+LQ50I2IxLjOzTlZt85b4rnUPWLeKzZyuQ3bMKvod1oSZWWer + uHnLTGwB60bPRTwKz45VRfEVx7IwM+t8MXguBtFlN7NW3Yq1YcPtNYhBcNkxqugHWAhmZs20NK5AdlNr + VTyG9Tex4RVLUD+M7NhU9CXMAzOz5lodNyG7ubXqp5gfNnXF10qHIjseVR0CM7Om2wrxHXp2k2vVsYg3 + JZv84sPWMciOQ0Wxx8GbYGZWot1Q7dHth2CTW6zG+L/IXv+KYpfD2G7bzKxU70Z202vZm2GT04q4ENnr + XtFtcKaJmZXt88hufq2KlQ9jBUSb2NbDH5G95hX9HuvAzKxs8+IUZDfBVsV89A1hE9OzEFMus9e6ol9g + OZiZlW8xXITsZtiq2A0xdkW0wdoF9yF7jSs6FXE9mJn1ppVwLbKbYqvOx8Kw8bU/+jTH/yjEEzEzs94V + m5rcjezm2KoTMDds9MV0ytjXPns9q5oOp5GaWa/bETHvObtJtuoTsNEVq9wdgex1rCjO9bfCzMwoptJl + N8uWxeNsG7lF8CNkr19F9+MVMDOzWYpHotlNs1XxXfbOsLwYMPlLZK9dRbfj2TAzs8c0F45DdvNs1b3Y + HPbo1sCVyF6ziq6H00TNzEZoQZyN7CbaqhvwJNgjxQeim5G9VhVdilVgZmZzKB4Nx5z67GbaqssQa9r3 + vRcjnopkr1FFP8HiMDOzUfZUzEB2U21VvBnMh772OvwZ2WtT0XexAMzMbIxtgweQ3VxbdST62EHIXo+q + YkBrjGkxM7NxtheyG2zL/hV9KRZEOgzZ61DRXxALGpmZ2QT0EWQ321bFm8QeqN5COB7Za1BRPK16NczM + bIKK5VKPRnbTbdVMbImqLYWzkP3sFcVy1i+AmZlNcDF47nRkN99WxXa3a6Naq+FyZD9zRTdiE5iZ2SS1 + NKq9sfwOy6JKG+A6ZD9rRbGY0ZowM7NJbnXchOxm3KqfosJ0sefhTmQ/Y0XnoNKHNzOzzhcryVVbTOZY + tLw17GvwILKfraLvIwY5mpnZFLcbYrOd7Obcqg+jxQ5AtWMxkljLIbYwNjOzIfVvyG7QLdsHrRRPLA5F + 9nNU5Bx/M7MO9TlkN+tWxWP056PrzY9jkP0MFT2EN8HMzDrSvDgZ2U27VTGQrstbx8amRmcg+7tXdA92 + gpmZdaxFcRGym3erYirdSuhaK+JCZH/nimKthi1gZvaP4ua8J2LTj5NwAa7S0FTcX/42ZD/rMPVpml+4 + HdnrIGk44r023nM/iXgPnrJflBbBW3EuspuFJEmaWrEmx1sQ79ETXizS8l7Eb2TZf1ySJA1XfGX3bkzY + wmqxJ30s15r9xyRJUrfEEt1bY9zFHOf3I6b/ZP8BSZLUTfHe/R6MeYXVufFFZH+oJElqw1cx6pU749NC + LPWZ/UGSJKktR2NUTwJiPfbsD5AkSW2a4zLeL0CfNjWRJKkP4r19O6TFanLXIvsXJUlS265BulbAR5H9 + C5IkqYaP4FEtjbuR/Z8lSVINsbnXMvhH70P2f5QkSbXE+gD/6Apk/ydJklTLb/HXaYGb/O0fSJKkftgQ + 0945yz+QJEn1vR3Tjp3lH0iSpPq+iWkXzfIPJElSfRdg2i2z/ANJklTfzZh2/yz/QJIk1TcT0x6c5R9I + kqT64r1/2oxZ/oEkSarvNky7fJZ/IEmS6vs1pv1wln8gSZLqOw7TDp7lH0iSpPrej2nbzPIPJElSfVth + 2ryI+YDZ/0GSJNVyE+bBX/sUsv+TJEmqZTr+0Rp4CNn/UZIk1RDv9WvjUX0D2f9ZkiTVcBQe1yq4G9m/ + IEmS2nYXVkLafsj+JUmS1LZ9MduegO8i+xclSVKbvoU5thDOQvYHSJKktpyLhTGqlkb8C9kfJEmS2nAO + lsKYWgTuEyBJUptivf9R/+b/2GJMwDsxE9kfLkmSuuU+vAPxHj5wsVDQD/AXZP8xSZI0XPEeHb/1r44J + bxMcjXuQ/cclSdLUivfkWOBnY0x6i+Ll+AxisOAMZH8pSZI0seI9Nwb3xXvwyxBj9obaglgW8ehBkiRN + rHiPjfdaMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMz + MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzM7P2mjbt/wPr + 6ANLNPtJEQAAAABJRU5ErkJggg== + + + \ No newline at end of file diff --git a/sql2/Forms/RegisterForm.Designer.cs b/sql2/Forms/RegisterForm.Designer.cs new file mode 100644 index 0000000..091cebf --- /dev/null +++ b/sql2/Forms/RegisterForm.Designer.cs @@ -0,0 +1,243 @@ +namespace PaymentLogs +{ + partial class RegisterForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RegisterForm)); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.textBoxLog1 = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.textBoxPass2 = new System.Windows.Forms.TextBox(); + this.buttonCreate = new System.Windows.Forms.Button(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.pictureBox2 = new System.Windows.Forms.PictureBox(); + this.pictureBox3 = new System.Windows.Forms.PictureBox(); + this.pictureBox4 = new System.Windows.Forms.PictureBox(); + this.pictureBoxCleare5 = new System.Windows.Forms.PictureBox(); + this.label4 = new System.Windows.Forms.Label(); + this.button1 = new System.Windows.Forms.Button(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox3)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox4)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxCleare5)).BeginInit(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 30F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.label1.Location = new System.Drawing.Point(405, 128); + this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(384, 69); + this.label1.TabIndex = 0; + this.label1.Text = "Регистрация"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.label2.Location = new System.Drawing.Point(452, 260); + this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(285, 37); + this.label2.TabIndex = 1; + this.label2.Text = "Придумайте логин:"; + // + // textBoxLog1 + // + this.textBoxLog1.Location = new System.Drawing.Point(417, 303); + this.textBoxLog1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.textBoxLog1.Name = "textBoxLog1"; + this.textBoxLog1.Size = new System.Drawing.Size(374, 26); + this.textBoxLog1.TabIndex = 2; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.label3.Location = new System.Drawing.Point(452, 342); + this.label3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(310, 37); + this.label3.TabIndex = 3; + this.label3.Text = "Придумайте пароль:"; + this.label3.Click += new System.EventHandler(this.label3_Click); + // + // textBoxPass2 + // + this.textBoxPass2.Location = new System.Drawing.Point(417, 385); + this.textBoxPass2.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.textBoxPass2.Name = "textBoxPass2"; + this.textBoxPass2.Size = new System.Drawing.Size(374, 26); + this.textBoxPass2.TabIndex = 4; + this.textBoxPass2.UseSystemPasswordChar = true; + // + // buttonCreate + // + this.buttonCreate.Location = new System.Drawing.Point(496, 460); + this.buttonCreate.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.buttonCreate.Name = "buttonCreate"; + this.buttonCreate.Size = new System.Drawing.Size(214, 78); + this.buttonCreate.TabIndex = 5; + this.buttonCreate.Text = "Зарегистрироваться"; + this.buttonCreate.UseVisualStyleBackColor = true; + this.buttonCreate.Click += new System.EventHandler(this.buttonCreate_Click); + // + // pictureBox1 + // + this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image"))); + this.pictureBox1.Location = new System.Drawing.Point(802, 382); + this.pictureBox1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(45, 34); + this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBox1.TabIndex = 6; + this.pictureBox1.TabStop = false; + this.pictureBox1.Click += new System.EventHandler(this.pictureBox1_Click); + // + // pictureBox2 + // + this.pictureBox2.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox2.Image"))); + this.pictureBox2.Location = new System.Drawing.Point(802, 382); + this.pictureBox2.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.pictureBox2.Name = "pictureBox2"; + this.pictureBox2.Size = new System.Drawing.Size(45, 34); + this.pictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBox2.TabIndex = 7; + this.pictureBox2.TabStop = false; + this.pictureBox2.Click += new System.EventHandler(this.pictureBox2_Click); + // + // pictureBox3 + // + this.pictureBox3.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox3.Image"))); + this.pictureBox3.Location = new System.Drawing.Point(338, 262); + this.pictureBox3.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.pictureBox3.Name = "pictureBox3"; + this.pictureBox3.Size = new System.Drawing.Size(70, 72); + this.pictureBox3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBox3.TabIndex = 8; + this.pictureBox3.TabStop = false; + // + // pictureBox4 + // + this.pictureBox4.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox4.Image"))); + this.pictureBox4.Location = new System.Drawing.Point(338, 342); + this.pictureBox4.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.pictureBox4.Name = "pictureBox4"; + this.pictureBox4.Size = new System.Drawing.Size(70, 74); + this.pictureBox4.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBox4.TabIndex = 9; + this.pictureBox4.TabStop = false; + // + // pictureBoxCleare5 + // + this.pictureBoxCleare5.Image = ((System.Drawing.Image)(resources.GetObject("pictureBoxCleare5.Image"))); + this.pictureBoxCleare5.Location = new System.Drawing.Point(856, 382); + this.pictureBoxCleare5.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.pictureBoxCleare5.Name = "pictureBoxCleare5"; + this.pictureBoxCleare5.Size = new System.Drawing.Size(45, 34); + this.pictureBoxCleare5.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBoxCleare5.TabIndex = 10; + this.pictureBoxCleare5.TabStop = false; + this.pictureBoxCleare5.Click += new System.EventHandler(this.pictureBox5_Click); + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.label4.Location = new System.Drawing.Point(452, 603); + this.label4.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(0, 37); + this.label4.TabIndex = 11; + this.label4.Click += new System.EventHandler(this.label4_Click); + // + // button1 + // + this.button1.Location = new System.Drawing.Point(13, 14); + this.button1.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(76, 29); + this.button1.TabIndex = 12; + this.button1.Text = "Назад"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // RegisterForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1200, 692); + this.Controls.Add(this.button1); + this.Controls.Add(this.label4); + this.Controls.Add(this.pictureBoxCleare5); + this.Controls.Add(this.pictureBox4); + this.Controls.Add(this.pictureBox3); + this.Controls.Add(this.pictureBox2); + this.Controls.Add(this.pictureBox1); + this.Controls.Add(this.buttonCreate); + this.Controls.Add(this.textBoxPass2); + this.Controls.Add(this.label3); + this.Controls.Add(this.textBoxLog1); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); + this.Name = "RegisterForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Регистрация"; + this.Load += new System.EventHandler(this.Form2_Load); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox3)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox4)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBoxCleare5)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox textBoxLog1; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox textBoxPass2; + private System.Windows.Forms.Button buttonCreate; + private System.Windows.Forms.PictureBox pictureBox1; + private System.Windows.Forms.PictureBox pictureBox2; + private System.Windows.Forms.PictureBox pictureBox3; + private System.Windows.Forms.PictureBox pictureBox4; + private System.Windows.Forms.PictureBox pictureBoxCleare5; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Button button1; + } +} \ No newline at end of file diff --git a/sql2/Forms/RegisterForm.cs b/sql2/Forms/RegisterForm.cs new file mode 100644 index 0000000..2768700 --- /dev/null +++ b/sql2/Forms/RegisterForm.cs @@ -0,0 +1,83 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.Data.SqlClient; +using MySql.Data.MySqlClient; + +namespace PaymentLogs +{ + public partial class RegisterForm : Form + { + + public RegisterForm() + { + InitializeComponent(); + } + + private void Form2_Load(object sender, EventArgs e) + { + pictureBox1.Visible = false; + } + + private void pictureBox5_Click(object sender, EventArgs e) + { + textBoxLog1.Text = ""; + textBoxPass2.Text = ""; + } + + private void buttonCreate_Click(object sender, EventArgs e) + { + + var login = textBoxLog1.Text; + var password = textBoxPass2.Text; + + if (Program.UserRepository.HasUser(login)) + { + label4.Text = "Пользователь уже сущесвует"; + } + else + { + Program.UserRepository.RegisterUser(login, password); + label4.Text = "Пользователь зарегистрирован"; + Program.UserRepository.Load(); + } + } + + + + private void pictureBox1_Click(object sender, EventArgs e) + { + textBoxPass2.UseSystemPasswordChar = !textBoxPass2.UseSystemPasswordChar; + pictureBox1.Visible = false; + pictureBox2.Visible = true; + } + + private void pictureBox2_Click(object sender, EventArgs e) + { + textBoxPass2.UseSystemPasswordChar = !textBoxPass2.UseSystemPasswordChar; + pictureBox1.Visible = true; + pictureBox2.Visible = false; + } + + private void label3_Click(object sender, EventArgs e) + { + + } + private void label4_Click(object sender, EventArgs e) + { + + } + + private void button1_Click(object sender, EventArgs e) + { + this.Hide(); + (new LoginForm()).Show(); + } + } +} diff --git a/sql2/Forms/RegisterForm.resx b/sql2/Forms/RegisterForm.resx new file mode 100644 index 0000000..73229a7 --- /dev/null +++ b/sql2/Forms/RegisterForm.resx @@ -0,0 +1,1258 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + 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 + SUVORK5CYII= + + + + + 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 + bi3van23AAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL + DAAACwwBP0AiyAAAHFhJREFUeF7t3QvQrXdZ3uHNMZwCRGmQtBBhQIHQljNFEY0cCigKDmkJRWjHKShy + 0IEO1SImIOdCZbQiCggUsDCDQsGOigIWrCDqlKMCJQiIEMQqAcIhkPb+FzpYeEL2l3yH53nXdc38ZpiQ + 7Ozs913/de9vf2utYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByiq6brpVumW6c7f7l7pDO+3Prf/++v + r7/nFmn9M+ufBQCaOSmtJ+z7pH+T/mP6jfTW9BfpM+l/X8rWj7F+rPVjrh/759Oj0vp3rn/3NRMAcAAu + m26a7puelF6dPpiqJ+yj6ANp/ZyemNbP8SbpMgkA2IOrpDukR6SXpb9K1RNv585Lr0lnpfVHC+u/CQD4 + KjdI6wl/PWl+NlVPqpO7IL0xPTrdKvkKAQA76QrpbumX0odS9aS55dYfYTw73TVdPgHAZq0/y19f2n9m + +miqnhh3sb9OL0z3TGsYAcAmfGt6Wjo3VU+A+kofSU9JN0oAMM4Jab3Gfv2Z/oWperLT1++P0oOSbyAE + oL1rp8enj6fqSU17b70K4nHp5AQArawvWa8/2z8/VU9iuvR9Lq3vFTgtAcCRunl6ZfJl/sPri+nX0j9K + AHCo1rvdrd+Nriej6klKB98aXa9K/zgBwIH65vSi5Im/T19Ia4ytDzACgH21vhN9va2tP+Pv27o2T04n + JgC4VNZb1q6X860PvKmedNSvD6f18sH1xksAsGfrE/h+P1VPMurfG9KNEwAcl/V2tOtDa7b4oTy71ufT + +mOB9cZMAHCRbp/ekaonE83tbel2CQD+P+sT6dY3+a3vKK+eQDS/dW3XVwN84BAA/9d6ad/6rPrqSUPb + 683phgmAHfZD6ZOpeqLQdjsvPTABsGOulJ6TqicH7U7rDYSunADYAddNf5iqJwTtXn+Srp8A2LDT07mp + eiLQ7rY+vvmuCYANWu8Od0GqngCk9SqBhyYANmK9ne96iV916Etf3TOTtxEGGG59iM8rUnXQSxfVr6V1 + 7wAw0Dem9Zrv6oCXLq7/nk5KAAxy7fTWVB3s0vH2znSdBMAA68D2fv7ar/4s/YMEQGM3SOek6iCXLmnv + S94rAKCp9bs0T/46qD6YTk0ANHJy+tNUHdzSfvWe5HsCAJq4VvJn/jqs3pbWK0wAOEJXT3+cqoNaOqjW + Z0lcLQFwBK6QfitVB7R00P3XdPkEwCH7hVQdzNJh9csJgEP0k6k6kKXD7lEJgENwRrowVYexdNh9Md07 + AXCAbpw+kaqDWDqqPplumgA4ACemd6XqAJaOuvWWwddIAOyj9Zn+L0/VwSt1aX309LpXAdgnP5GqA1cX + 3V+m9ZG2L00/n85OD08PSg9M63spVut/r7+2/r/196y/d/0zf5A+kqofWxfdIxMA++C26fOpOmx17Nhn + 0hvSM9K/TLdMV077Zf1Yt0r/Kq1/xxvTZ1P1c9GxY59L6xoAcCmsd1t7b6oO2l3tgrSe8NdLIW+frpgO + 2wnp29Jj0hoEX0jVz3VXW59LcZUEwCX03FQdsLvW+h33f0n3TyelbtbP6QfTq9L6HXD137Br/WIC4BL4 + gVQdrLvUH6UHp2umKdYY+OHkMxqOHfu+BMAefEP6aKoO1a23frf/vLSFP0de/w3PT7v6VYH1jZiTxhvA + kVtPgNWBuuXWGxw9MW3x8+ZPSU9K56Xqv33L/VIC4DicnnbprX4/lZ6Zrp22bn2O/llpl97Ncd3Ld0oA + fB3rO6ffl6qDdGut95Bf3+T4TWnXrK9yrD8aWL8G1a/N1np32s+XZgJszuNTdYBurfUGPV4rfuzYbdKb + U/VrtLUemwAoXDd9OlWH51Za/32PTpdLfMll03onwq1/f8D56dQEwFdZbz9bHZxb6XXJE8BF++b031L1 + a7eVXpwA+DvWu8pt9Rv/1jv3rW9887v+i7e+GvCItNWXDa57/A4JgFifnrbe8KY6MKf3ofRPEnvz7enD + qfo1nd6bkk8MBIitvuPf69MuvLTvoKxXR2z1jwS8QyCw89aXfN+aqkNycuvPeq+QuHTWBx39aqp+jSf3 + trTufYCddWaqDsjJ/VxyuO+f9eXyf5+qX+vJ3ScB7KT1TXHrY1Orw3Fi6xu81jf7cTDWyye39I2i70yG + IrCT7puqg3Fi6/PwfyhxsP51Wr/W1TWYmK8CADvpLak6FKe1fle6Pgufw/GAtJWvBKxXBADslO9K1YE4 + sUcmDtdDU3UtJuZ9AYCd8qpUHYbTWh9xy9F4WqquybR+PQHshBunLXwK3POSN3Q5OuvX/gWpujaTWo+F + b0kAm/cfUnUQTurV6fKJo7Xea+E3U3WNJvX0BLBpJ6S/StUhOKX3pGskejgpvT9V12pKH0/rsQGwWf8i + VQfglD6ZTkv0crv0+VRdsyn9swSwWev98avDb0rrJWj0tN4oqLpmU3pNAtikG6XJr99+aaKv9U2Bv5Gq + azeh9di4fgLYnJ9K1cE3ob9I68+a6e1a6S9TdQ0n9BMJYHPekapDb0L3Ssxwv1Rdwwn9jwSwKTdL1YE3 + IV/6n+d3U3UtJ3STBLAZZ6fqsOveeek6iVnWk+jnUnVNu/fYBLAZ70rVYde9f5uY6cmpuqbde3sC2IQb + pOqg69456UqJma6aPpCqa9u9UxPAeD+aqkOuez7id74Hp+radm/9vAHGm/jJf+9O3ut/vvX2uuslnNU1 + 7pxPCATGWwfwp1J1yHXuzMQ2/FiqrnHn1jefXjEBjHXnVB1wnVsfLON3/9txlfSxVF3rzn1XAhjr8ak6 + 3Dr3iMS2/GSqrnXnvBwQGO13UnW4de0T6cTEtlw9rS+rV9e8a7+VAEZaX0ZfH59bHW5de1Zim345Vde8 + a2uMXi4BjHOrVB1snbtlYptul6pr3rmbJ4BxHpaqQ61rPohl+6Z9INV6Dw2AcZ6fqkOtaz6KdfumfST1 + cxPAOH+SqkOtazdMbNu3pOrad+0tCWCU9Q2An0nVodYxX/7fHevDdqp7oGOfTr4REBjltFQdaF17YmI3 + PC1V90DXvjUBjHHfVB1mXbtjYjfcKVX3QNfukwDG+OlUHWYdW+9VcIXEbljvsb++tF7dCx17TAIYY9Ir + ANa7FbJbXp+qe6Fjz0kAY0w6YM9O7JYnpOpe6NjvJoAx/jxVh1nH7pHYLd+bqnuhY+ckgBHWn6d/IVWH + WcdOSeyW66bqXujYBcnHUwMjnJqqg6xjH0/spr9J1T3RsTVYANq7daoOsY69LrGb3pCqe6JjPqQKGOHu + qTrEOuY7rHfXC1J1T3Tsrgmgvfun6hDr2PpwGHbTWam6Jzp2ZgJo7+GpOsQ69oOJ3fTAVN0THXtoAmjv + cak6xDrmS6u7626puic6tr5aAdDe01N1iHXsFondNOmbVZ+aANr7uVQdYh27XmI3XT9V90THnpkA2nt2 + qg6xjp2U2E3XStU90bFnJYD2fiVVh1jHrprYTSem6p7o2PMSQHsvTtUh1jEfA7y71scCV/dEx16UANp7 + WaoOsY6x26p7omPrMQXQngHAFNU90TEDABjBAGCK6p7omAEAjGAAMEV1T3TMAABGMACYoronOmYAACMY + AExR3RMdMwCAEQwApqjuiY4ZAMAIBgBTVPdExwwAYAQDgCmqe6JjBgAwggHAFNU90TEDABjBAGCK6p7o + mAEAjGAAMEV1T3TMAABGMACYoronOmYAACMYAExR3RMdMwCAEQwApqjuiY4ZAMAIBgBTVPdExwwAYAQD + gCmqe6JjBgAwggHAFNU90TEDABjBAGCK6p7omAEAjGAAMEV1T3TMAABGMACYoronOmYAACMYAExR3RMd + MwCAEQwApqjuiY4ZAMAIBgBTVPdExwwAYAQDgCmqe6JjBgAwggHAFNU90TEDABjBAGCK6p7omAEAjGAA + MEV1T3TMAABGMACYoronOmYAACMYAExR3RMdMwCAEQwApqjuiY4ZAMAIBgBTVPdExwwAYAQDgCmqe6Jj + BgAwggHAFNU90TEDABjBAGCK6p7omAEAjGAAMEV1T3TMAABGMACYoronOmYAACMYAExR3RMdMwCAEQwA + pqjuiY4ZAMAIBgBTVPdExwwAYAQDgCmqe6JjBgAwggHAFNU90TEDABjBAGCK6p7omAEAjGAAMEV1T3TM + AABGMACYoronOmYAACMYAExR3RMdMwCAEQwApqjuiY4ZAMAIBgBTVPdExwwAYAQDgCmqe6JjBgAwggHA + FNU90TEDABjBAGCK6p7omAEAjGAAMEV1T3TMAABGMACYoronOmYAACMYAExR3RMdMwCAEQwApqjuiY4Z + AMAIBgBTVPdExwwAYAQDgCmqe6JjBgAwggHAFNU90TEDABjBAGCK6p7omAEAjGAAMEV1T3TMAABGMACY + oronOmYAACMYAExR3RMdMwCAEQwApqjuiY4ZAMAIBgBTVPdExwwAYM+unG6Wvj/9WHpCenp6dnpJWgfL + fvehVB1iHat+/tqdqnuiY+sxVf38L23rDFhnwToTfiatM+L70mlpnR3AEJdPt04PT/85/XmqDhNJOp7W + GfKr6WHpVmmdMUATV0r3TC9Mf5uqB7Ek7Ud/k9ZXDh6QrpqAI3DbtJ70P5mqB6okHWTr7HlBuk0CDtgV + 0v3Tm1P1gJSko+gP0v3SOqOAfXSZdEZ6T6oefJLUoXendVatMwu4lO6Y/jBVDzZJ6tib0nck4BK4Snpy + +mKqHmCS1LkL03qJ4YkJOE53SV7CJ2kLvT/dKQFfx/pzs0cnv+uXtKXWVwPWVzQvm4CvcrX08lQ9eCRp + C706XSMBX/b309tT9YCRpC21zrpTEuy866X3puqBIklbbH1fwPUT7KxT0/tS9QCRpC23vtH5Bgl2zslp + reDqgSFJu9D6DdDfS7Azrphen6oHhCTtUm9MJyTYCetDfKoHgiTtYs9PsHk/mqoHgCTtcg9OsFnrG158 + fK8kfW2fSjdMsDnrHbB+L1U3viTpS98PcLkEm/KwVN3wkqSv9JAEm7He5vfcVN3skqSv9LF09QSbcHaq + bnRJ0tf20wnGW2/44xv/JOn4Oy95gyDG+6lU3eCSpIvu3yUYa33n/3q/6+rmliRddB9IXhHAWPdM1Y0t + Sbr47pFgpF9P1U0tSbr4Xp5gnPXhFr75T5IueevdAX1QEOPcJVU3tCTp+PvuBKM8PVU3syTp+HtqglH+ + OFU3syTp+HtLgjHWS1fOT9XNLEk6/j6d1kuqYYQbpepGliTtvfVR6jDCvVJ1E0uS9t56TxUY4ZGpuokl + SXvvxxOM8LhU3cSSpL13VoIRfjZVN7Ekae89I8EIz0vVTSxJ2nvPSTDCS1N1E0uS9t46U2GEl6XqJpYk + 7b11psIIBoAk7V8GAGMYAJK0fxkAjDFpAAC7qzoTOmYAMIYBAExQnQkdMwAYwwAAJqjOhI4ZAIxhAAAT + VGdCxwwAxjAAgAmqM6FjBgBjGADABNWZ0DEDgDEMAGCC6kzomAHAGAYAMEF1JnTMAGAMAwCYoDoTOmYA + MIYBAExQnQkdMwAYwwAAJqjOhI4ZAIxhAAATVGdCxwwAxjAAgAmqM6FjBgBjGADABNWZ0DEDgDEMAGCC + 6kzomAHAGAYAMEF1JnTMAGAMAwCYoDoTOmYAMIYBAExQnQkdMwAYwwAAJqjOhI4ZAIxhAAATVGdCxwwA + xjAAgAmqM6FjBgBjGADABNWZ0DEDgDEMAGCC6kzomAHAGAYAMEF1JnTMAGAMAwCYoDoTOmYAMIYBAExQ + nQkdMwAYwwAAJqjOhI4ZAIxhAAATVGdCxwwAxjAAgAmqM6FjBgBjGADABNWZ0DEDgDEMAGCC6kzomAHA + GAYAMEF1JnTMAGAMAwCYoDoTOmYAMIYBAExQnQkdMwAYwwAAJqjOhI4ZAIxhAAATVGdCxwwAxjAAgAmq + M6FjBgBjGADABNWZ0DEDgDEMAGCC6kzomAHAGAYAMEF1JnTMAGAMAwCYoDoTOmYAMIYBAExQnQkdMwAY + wwAAJqjOhI4ZAIxhAAATVGdCxwwAxjAAgAmqM6FjBgBjGADABNWZ0DEDgDEMAGCC6kzomAHAGAYAMEF1 + JnTMAGAMAwCYoDoTOmYAMIYBAExQnQkdMwAYwwAAJqjOhI4ZAIxhAAATVGdCxwwAxjAAgAmqM6FjBgBj + GADABNWZ0DEDgDEMAGCC6kzomAHAGAYAMEF1JnTMAGAMAwCYoDoTOmYAMIYBAExQnQkdMwAYwwAAJqjO + hI4ZAIxhAAATVGdCxwwAxjAAgAmqM6FjBgBjGADABNWZ0DEDgDEMAGCC6kzomAHAGAYAMEF1JnTMAGAM + A4BOrpzulH4mvSL9afpf6fNfbv3v9dfW//f4tP7e9c+wfdWZ0DEDgDEMADr49vT8dF6qrv3Xa/0zv5K+ + LbFd1bXvmAHAGAYAR+k70u+l6npfkl6f1phge6rr3TEDgDEMAI7CSWn9jv/CVF3rS9P6MZ+XrpnYjupa + d8wAYAwDgMN22/T+VF3j/eycdOvENlTXuGMGAGMYAByme6bzU3V9D6LPph9IzFdd344ZAIxhAHBY7pMu + SNW1PcjWv9MImK+6th0zABjDAOAwnJ7W78ar63oYfSZ9Z2Ku6rp2zABgDAOAg/ZN6SOpuqaH2bnplMRM + 1TXtmAHAGAYAB+ky6bWpup5H0WsSM1XXs2MGAGMYABykB6TqWh5lZybmqa5lxwwAxjAAOChXSh9O1bU8 + yj6UTkjMUl3LjhkAjGEAcFB+JFXXsUMPSsxSXceOGQCMYQBwUN6equvYoXckZqmuY8cMAMYwADgI6x34 + qmvYqZsn5qiuYccMAMYwADgI66N6q2vYqbMSc1TXsGMGAGMYAByEN6bqGnZqfQohc1TXsGMGAGMYAOy3 + y6bDfL//S9qn0/q5MkN1DTtmADCGAcB+u36qrl/HrpeYobp+HTMAGMMAYL/dMVXXr2N3SMxQXb+OGQCM + YQCw374nVdevY3dPzFBdv44ZAIxhALDf7p2q69ex9XNlhur6dcwAYAwDgP32T1N1/Tp2l8QM1fXrmAHA + GAYA++12qbp+HbtNYobq+nXMAGAMA4D99g2pun4dWz9XZqiuX8cMAMYwADgI56bqGnbqI4k5qmvYMQOA + MQwADsLLU3UNO+WgnqW6hh1zXzGGAcBBeEiqrmGnHpyYo7qGHTMAGMMA4CCcnC5I1XXs0Pq5XTsxR3Ud + O2YAMIYBwEF5VaquY4demZiluo4dMwAYwwDgoHR+S2BvATxPdR07ZgAwhgHAQXptqq7lUfbbiXmqa9kx + A4AxDAAO0mnp86m6nkfR59JNEvNU17NjBgBjGAActLNTdT2PoscmZqquZ8cMAMYwADhol0uvS9U1Pcx+ + J62fCzNV17RjBgBjGAAchm9M70rVdT2M3pm87e9s1XXtmAHAGAYAh+V66b2purYH2XvSdROzVde2YwYA + YxgAHKb1BkFvSdX1PYjenNa/k/mq69sxA4AxDAAO2wnpmam6xvvZC9OVE9tQXeOOGQCMYQBwVE5PB/F9 + AeuPGe6W2JbqWnfMAGAMA4CjtL4a8CPp/am65nvpnLQ+4OeKie2prnnHDADGMADoYL087+7pReljqbr+ + Veem/5TW7/i9xG/bquvfMQOAMQwAurlM+ofpfums9ItpDYPV+t/rr52Z1t+z/l52Q3UmdMwAYAwDAJig + OhM6ZgAwhgEATFCdCR0zABjDAAAmqM6EjhkAjGEAABNUZ0LHDADGMACACaozoWMGAGMYAMAE1ZnQMQOA + MQwAYILqTOiYAcAYBgAwQXUmdMwAYAwDAJigOhM6ZgAwhgEATFCdCR0zABjDAAAmqM6EjhkAjGEAABNU + Z0LHDADGMACACaozoWMGAGMYAMAE1ZnQMQOAMQwAYILqTOiYAcAYBgAwQXUmdMwAYAwDAJigOhM6ZgAw + hgEATFCdCR0zABjDAAAmqM6EjhkAjGEAABNUZ0LHDADGMACACaozoWMGAGMYAMAE1ZnQMQOAMQwAYILq + TOiYAcAYBgAwQXUmdMwAYAwDAJigOhM6ZgAwhgEATFCdCR0zABjDAAAmqM6EjhkAjGEAABNUZ0LHDADG + MACACaozoWMGAGMYAMAE1ZnQMQOAMQwAYILqTOiYAcAYBgAwQXUmdMwAYAwDAJigOhM6ZgAwhgEATFCd + CR0zABjDAAAmqM6EjhkAjGEAABNUZ0LHDADGMACACaozoWMGAGMYAMAE1ZnQMQOAMQwAYILqTOiYAcAY + BgAwQXUmdMwAYAwDAJigOhM6ZgAwhgEATFCdCR0zABjDAAAmqM6EjhkAjGEAABNUZ0LHDADGMACACaoz + oWMGAGMYAMAE1ZnQMQOAMQwAYILqTOiYAcAYBgAwQXUmdMwAYAwDAJigOhM6ZgAwhgEATFCdCR0zABjD + AAAmqM6EjhkAjGEAABNUZ0LHDADGMACACaozoWMGAGMYAMAE1ZnQMQOAMQwAYILqTOiYAcAYBgAwQXUm + dMwAYAwDAJigOhM6ZgAwhgEATFCdCR0zABjDAAAmqM6EjhkAjGEAABNUZ0LHDADGMACACaozoWMGAGMY + AMAE1ZnQMQOAMQwAYILqTOiYAcAYkwbAGZJ2tupM6JgBwBiTBoAkdc8AYAwDQJL2LwOAMQwASdq/DADG + eEmqbmJJ0t5bZyqM8OxU3cSSpL33rAQjPC1VN7Ekae89JcEIj03VTSxJ2nuPSTDCQ1J1E0uS9t4PJxjh + 9FTdxJKkvXfHBCOcnKqbWJK0966VYIyPpepGliQdfx9NMMpvp+pmliQdf7+ZYJRHpepmliQdfz+eYJSb + pepmliQdfzdJMM4HUnVDS5Iuvg8mGOlnU3VTS5IuvmckGOnG6cJU3diSpK/fTROM9fpU3diSpIvutQlG + u2+qbm5J0kX3zxOMdrn0zlTd4JKkr+3P0uUTjHfvVN3kkqSv7fsTbMbvp+pGlyR9pTelyyTYjNunL6Tq + hpckfemMvG2CzXlKqm56SdKxY09IsEknpLel6saXpF1ufbP0lRJs1i3TZ1L1AJCkXez8dPMEm3dG8g6B + kvSls/DMBDvjcal6MEjSLvXYBDtlvczlRal6QEjSLvT85CV/7KT1LoHrAVA9MCRpy70kebc/dtpav7+Q + qgeIJG2x56bLJth564HgPQIkbb31DX9PTp784ausT7/6dKoeOJI0ufXy5wck4CLcIp2TqgeQJE3sfyav + 84fjcJW0vkz2xVQ9mCRpQutL/s9OV0vAHpye3peqB5YkdW79rv87E3AJXTE9KJ2bqgeZJHXqr9Ojk/f1 + h31yzfSk9MlUPegk6Sg7L61P87tGAg7A1dP6isC7UvUglKTDbH2pf/2O/6QEHIL1OtrvSS9On0jVA1OS + DqK/TeutzO+RvKYfjtAJ6XvTenet96bqAStJl6b3pOek9aS/zhygoWune6enplemt6f1edvVg1qS/m7r + rFhnxivSeofSe6WTEzDYKelm6Tbpzmk9sM+QtLOtM2CdBetMWGfDdRIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAHAEjh37P5O6zg4gys7tAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wAAADsABataJCQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAADNcSURBVHhe7d0J + uK5zufjxnXmeZVZmZaZUSJQUKilKSSeaKFKnE+c0Og3nKOdUu1GhgQaaVJxM0SFlSDIWScqYcZs3ov// + e6c6G/dee631rrXe53c/3+91fa6ry5Vtr/cZ3nc972+YZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm + ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm + ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ9bFEsieWw+t/+98IwMzOzhnsyXor340s4HufiGszE/5uNv+Am + XIrTcAT+FS/HqjAzM7OOFL/Nvwwfx+m4Hdmb+0S4AcchPhRsA58amJmZTWHx2P5NiN/s70f2Zj0V4r99 + Kg7AE2FmZmYT3Ap4D36L7M142P6MU/BmLAUzMzMbZ3NhO3wLDyJ74+2ieDJwFNaHmZmZjbIF8c+4Gtkb + bCtiUOHJ2AFPgJmZmSXNi31wHbI31JbFzIIdYWZmZn8rHvXvhiuRvXlWEtMLN4GZmVmv2woXI3uzrOph + xPoEK8HMzKxXxep7RyK+J8/eJPvgLrwBZmZmvShG9l+L7E2xj07EijAzMyvZfJiOPv/WPzuxBPHOMDMz + K1WspX8Osjc//Z/DEB+UzMzMmm9r3IrsDU+PF3sauJqgmZk13e4YaQc+5WJK5DowMzNrroORvblpdOKp + STw9MTMza6J5cDiyNzWNTewrENsdm5mZdbqFENv0Zm9mGp+HsAfMzMw62TJwpP/kiO2GfRJgZmadazVc + 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 + 6ANLNPtJEQAAAABJRU5ErkJggg== + + + \ No newline at end of file diff --git a/sql2/Program.cs b/sql2/Program.cs new file mode 100644 index 0000000..c8b0bb5 --- /dev/null +++ b/sql2/Program.cs @@ -0,0 +1,37 @@ +using PaymentLogs.Domain; +using PaymentLogs.Repositories; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace PaymentLogs +{ + internal static class Program + { + internal static User CurrentUser { get; set; } + internal static UserRepo UserRepository { get; set; } + internal static PaymentRepo PaymentRepository { get; set; } + internal static CourseRepo CourseRepository { get; set; } + internal static StudentRepo StudentRepository { get; set; } + + [STAThread] + static void Main() + { + UserRepository = new UserRepo(); + UserRepository.Load(); + PaymentRepository = new PaymentRepo(); + PaymentRepository.Load(); + CourseRepository = new CourseRepo(); + CourseRepository.Load(); + StudentRepository = new StudentRepo(); + StudentRepository.Load(); + + + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new LoginForm()); + } + } +} diff --git a/sql2/Properties/AssemblyInfo.cs b/sql2/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..8a98711 --- /dev/null +++ b/sql2/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов для изменения сведений, +// связанных со сборкой. +[assembly: AssemblyTitle("sql2")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("sql2")] +[assembly: AssemblyCopyright("Copyright © 2024")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, следует установить атрибут ComVisible в TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("20a35319-9577-418b-bf43-512cdb3ad0ef")] + +// Сведения о версии сборки состоят из указанных ниже четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номера сборки и редакции по умолчанию +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/sql2/Properties/Resources.Designer.cs b/sql2/Properties/Resources.Designer.cs new file mode 100644 index 0000000..877288e --- /dev/null +++ b/sql2/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. +// +//------------------------------------------------------------------------------ + +namespace PaymentLogs.Properties { + using System; + + + /// + /// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д. + /// + // Этот класс создан автоматически классом StronglyTypedResourceBuilder + // с помощью такого средства, как ResGen или Visual Studio. + // Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen + // с параметром /str или перестройте свой проект VS. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("PaymentLogs.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Перезаписывает свойство CurrentUICulture текущего потока для всех + /// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/sql2/Properties/Resources.resx b/sql2/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/sql2/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/sql2/Properties/Settings.Designer.cs b/sql2/Properties/Settings.Designer.cs new file mode 100644 index 0000000..3e348d4 --- /dev/null +++ b/sql2/Properties/Settings.Designer.cs @@ -0,0 +1,37 @@ +//------------------------------------------------------------------------------ +// +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. +// +//------------------------------------------------------------------------------ + +namespace PaymentLogs.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.9.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + + [global::System.Configuration.ApplicationScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)] + [global::System.Configuration.DefaultSettingValueAttribute("Data Source=DESKTOP-QN8TL8D\\SQLEXPRESS;Initial Catalog=\"Отчет оплаты обучения обу" + + "чающихся\";Integrated Security=True;Encrypt=False")] + public string Отчет_оплаты_обучения_обучающихсяConnectionString { + get { + return ((string)(this["Отчет_оплаты_обучения_обучающихсяConnectionString"])); + } + } + } +} diff --git a/sql2/Properties/Settings.settings b/sql2/Properties/Settings.settings new file mode 100644 index 0000000..5daaa8e --- /dev/null +++ b/sql2/Properties/Settings.settings @@ -0,0 +1,14 @@ + + + + + + <?xml version="1.0" encoding="utf-16"?> +<SerializableConnectionString xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <ConnectionString>Data Source=DESKTOP-QN8TL8D\SQLEXPRESS;Initial Catalog="Отчет оплаты обучения обучающихся";Integrated Security=True;Encrypt=False</ConnectionString> + <ProviderName>System.Data.SqlClient</ProviderName> +</SerializableConnectionString> + Data Source=DESKTOP-QN8TL8D\SQLEXPRESS;Initial Catalog="Отчет оплаты обучения обучающихся";Integrated Security=True;Encrypt=False + + + \ No newline at end of file diff --git a/sql2/Repositories/CourseRepo.cs b/sql2/Repositories/CourseRepo.cs new file mode 100644 index 0000000..b66125b --- /dev/null +++ b/sql2/Repositories/CourseRepo.cs @@ -0,0 +1,57 @@ +using MySql.Data.MySqlClient; +using PaymentLogs.Domain; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace PaymentLogs.Repositories +{ + internal class CourseRepo : Repo + { + + public override void Load() + { + DataBase db = new DataBase(); + db.openConnection(); + _data.Clear(); + string sql = " SELECT * FROM courses "; + MySqlCommand cmd = new MySqlCommand(sql, db.getConnection()); + MySqlDataReader reader = cmd.ExecuteReader(); + + while (reader.Read()) + { + Course course = new Course() { + Id = reader.GetInt32("id"), + Name = reader.GetString("name"), + Type = reader.GetString("type"), + Cost = reader.GetInt32("cost"), + Duration = reader.GetInt32("duration"), + StudentsCount = reader.GetInt32("students_count") + }; + _data[course.Id] = course; + } + db.closeConnection(); + } + + + public override void Save() + { + throw new NotImplementedException(); + } + + public Course ByName(string name) + { + foreach (var course in _data.Values) + { + if (course.Name.ToLower().Equals(name.ToLower())) + { + return course; + } + } + return _data.Values.FirstOrDefault(); + } + } +} diff --git a/sql2/Repositories/PaymentRepo.cs b/sql2/Repositories/PaymentRepo.cs new file mode 100644 index 0000000..c3c0b3c --- /dev/null +++ b/sql2/Repositories/PaymentRepo.cs @@ -0,0 +1,59 @@ +using MySql.Data.MySqlClient; +using PaymentLogs.Domain; +using PaymentLogs.Utils; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace PaymentLogs.Repositories +{ + internal class PaymentRepo : Repo + { + + public override void Load() + { + DataBase db = new DataBase(); + db.openConnection(); + _data.Clear(); + string sql = " SELECT * FROM payments "; + MySqlCommand cmd = new MySqlCommand(sql, db.getConnection()); + MySqlDataReader reader = cmd.ExecuteReader(); + + while (reader.Read()) + { + Payment payment = new Payment() + { + Id = reader.GetInt32("id"), + FCs = reader.GetString("fcs"), + CourseId = reader.GetInt32("course_id"), + CoursePrice = reader.GetInt32("course_price"), + Paid = reader.GetInt32("paid"), + Debt = reader.GetInt32("debt") + }; + _data[payment.Id] = payment; + + } + db.closeConnection(); + } + + + public override void Save() + { + DataBase db = new DataBase(); + db.openConnection(); + foreach(Payment payment in _data.Values) + { + string sql = $" INSERT INTO `payments` (`id`, `fcs`, `course_id`, `course_price`, `paid`, `debt`) " + + $"VALUES ('{payment.Id}','{payment.FCs}', '{payment.CourseId}', '{payment.CoursePrice}', '{payment.Paid}', '{payment.Debt}') " + + $"ON DUPLICATE KEY UPDATE `fcs`='{payment.FCs}', `course_id`='{payment.CourseId}', `course_price` = '{payment.CoursePrice}', " + + $"`paid` = '{payment.Paid}', `debt`='{payment.Debt}'"; + MySqlCommand cmd = new MySqlCommand(sql, db.getConnection()); + cmd.ExecuteNonQuery(); + + } + db.closeConnection(); + } + } +} diff --git a/sql2/Repositories/Repo.cs b/sql2/Repositories/Repo.cs new file mode 100644 index 0000000..1975710 --- /dev/null +++ b/sql2/Repositories/Repo.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace PaymentLogs.Repositories +{ + internal abstract class Repo + { + protected Dictionary _data = new Dictionary(); + public abstract void Load(); + public virtual List All() + { + return _data.Values.ToList(); + } + public virtual V Get(K key) { return _data[key]; } + public virtual void Update(K key, V value) + { + _data[key] = value; + } + public abstract void Save(); + } + + +} diff --git a/sql2/Repositories/StudentRepo.cs b/sql2/Repositories/StudentRepo.cs new file mode 100644 index 0000000..78b9fb9 --- /dev/null +++ b/sql2/Repositories/StudentRepo.cs @@ -0,0 +1,47 @@ +using MySql.Data.MySqlClient; +using PaymentLogs.Domain; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace PaymentLogs.Repositories +{ + internal class StudentRepo : Repo + { + + public override void Load() + { + DataBase db = new DataBase(); + db.openConnection(); + _data.Clear(); + string sql = " SELECT * FROM students "; + MySqlCommand cmd = new MySqlCommand(sql, db.getConnection()); + MySqlDataReader reader = cmd.ExecuteReader(); + + while (reader.Read()) + { + Student student = new Student() + { + Id = reader.GetInt32("id"), + FCs = reader.GetString("fcs"), + dateOfBirth = DateTime.ParseExact(reader.GetString("date_of_birth"), "yyyy-MM-dd",null), + Address = reader.GetString("address"), + CourseId = reader.GetInt32("course_id"), + Paid = reader.GetInt32("paid") + + }; + _data[student.Id] = student; + } + db.closeConnection(); + } + + + + public override void Save() + { + throw new NotImplementedException(); + } + } +} diff --git a/sql2/Repositories/UserRepo.cs b/sql2/Repositories/UserRepo.cs new file mode 100644 index 0000000..96f530a --- /dev/null +++ b/sql2/Repositories/UserRepo.cs @@ -0,0 +1,69 @@ +using MySql.Data.MySqlClient; +using PaymentLogs.Domain; +using PaymentLogs.Utils; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Security; +using System.Security.Cryptography; +using System.Text; +using System.Threading.Tasks; + +namespace PaymentLogs.Repositories +{ + internal class UserRepo : Repo + { + + public override void Load() + { + DataBase db = new DataBase(); + _data.Clear(); + string sql = " SELECT * FROM usrs "; + db.openConnection(); + MySqlCommand cmd = new MySqlCommand(sql, db.getConnection()); + MySqlDataReader reader = cmd.ExecuteReader(); + + while (reader.Read()) { + User user = new User() { Login = reader.GetString("login"), PasswordHash = StringUtils.ConvertToSecureString(reader.GetString("password_hash")) }; + _data[user.Login] = user; + } + db.closeConnection(); + } + + + + public void RegisterUser(string _login, string _password) + { + User user = new User() { Login = _login.ToLower(), PasswordHash = StringUtils.ConvertToSecureString(StringUtils.SHA256_hash(_password)) }; + Save(user); + } + + public Boolean HasUser(string _login) + { + return _data.ContainsKey(_login.ToLower()); + } + + + private void Save(User user) + { + DataBase db = new DataBase(); + db.openConnection(); + string hash = StringUtils.SecureStringToString(user.PasswordHash); + string sql = $" INSERT INTO `usrs` (`login`, `password_hash`) VALUES ('{user.Login}','{hash}') " + + $"ON DUPLICATE KEY UPDATE `password_hash`='{hash}'"; + MySqlCommand cmd = new MySqlCommand(sql, db.getConnection()); + cmd.ExecuteNonQuery(); + db.closeConnection(); + } + + + public override void Save() + { + foreach(User user in _data.Values) + { + Save(user); + } + } + } +} diff --git a/sql2/Utils/StringUtils.cs b/sql2/Utils/StringUtils.cs new file mode 100644 index 0000000..1316c12 --- /dev/null +++ b/sql2/Utils/StringUtils.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Security.Cryptography; +using System.Security; +using System.Text; +using System.Threading.Tasks; + +namespace PaymentLogs.Utils +{ + internal class StringUtils + { + public static SecureString ConvertToSecureString(string password) + { + if (password == null) + throw new ArgumentNullException(""); + + var securePassword = new SecureString(); + + foreach (char c in password) + securePassword.AppendChar(c); + + securePassword.MakeReadOnly(); + return securePassword; + } + + public static String SecureStringToString(SecureString value) + { + return new System.Net.NetworkCredential("qwq112", value).Password; + } + + public static string SHA256_hash(string _value) + { + var crypt = new SHA256Managed(); + string hash = String.Empty; + byte[] crypto = crypt.ComputeHash(Encoding.UTF8.GetBytes(_value)); + foreach (byte theByte in crypto) + { + hash += theByte.ToString("x2"); + } + return hash; + } + } +} diff --git a/sql2/bin/Debug/MySql.Data.dll b/sql2/bin/Debug/MySql.Data.dll new file mode 100644 index 0000000..e96cd41 Binary files /dev/null and b/sql2/bin/Debug/MySql.Data.dll differ diff --git a/sql2/bin/Debug/MySql.Data.xml b/sql2/bin/Debug/MySql.Data.xml new file mode 100644 index 0000000..62c3d0c --- /dev/null +++ b/sql2/bin/Debug/MySql.Data.xml @@ -0,0 +1,18572 @@ + + + + MySql.Data + + + + + The implementation of the caching_sha2_password authentication plugin. + + + + + Generates a byte array set with the password of the user in the expected format based on the + SSL settings of the current connection. + + A byte array that contains the password of the user in the expected format. + + + + Defines the stage of the authentication. + + + + + Allows connections to a user account set with the mysql_clear_password authentication plugin. + + + + + Enables connections to a user account set with the authentication_kerberos authentication plugin. + + + + + Defines the default behavior for an authentication plugin. + + + + + Handles the iteration of the multifactor authentication. + + + + + Gets the AuthPlugin name of the AuthSwitchRequest. + + + + + Gets or sets the authentication data returned by the server. + + + + + This is a factory method that is used only internally. It creates an auth plugin based on the method type + + Authentication method. + The driver. + The authentication data. + Boolean that indicates if the function will be executed asynchronously. + MultiFactorAuthentication iteration. + + + + + Gets the connection option settings. + + + + + Gets the server version associated with this authentication plugin. + + + + + Gets the encoding assigned to the native driver. + + + + + Sets the authentication data required to encode, encrypt, or convert the password of the user. + + A byte array containing the authentication data provided by the server. + This method may be overriden based on the requirements by the implementing authentication plugin. + + + + Defines the behavior when checking for constraints. + + This method is intended to be overriden. + + + + Throws a that encapsulates the original exception. + + The exception to encapsulate. + + + + Defines the behavior when authentication is successful. + + This method is intended to be overriden. + + + + Defines the behavior when more data is required from the server. + + The data returned by the server. + Boolean that indicates if the function will be executed asynchronously. + The data to return to the server. + This method is intended to be overriden. + + + + Gets the password for the iteration of the multifactor authentication + + A password + + + + Gets the plugin name based on the authentication plugin type defined during the creation of this object. + + + + + Gets the user name associated to the connection settings. + + The user name associated to the connection settings. + + + + Gets the encoded, encrypted, or converted password based on the authentication plugin type defined during the creation of this object. + This method is intended to be overriden. + + An object containing the encoded, encrypted, or converted password. + + + + Provides functionality to read, decode and convert PEM files to objects supported in .NET. + + + + + Converts the binary data of a PEM file to an object. + + A binary representation of the public key provided by the server. + An object containing the data found in the public key. + + + + Allows connections to a user account set with the authentication_ldap_sasl authentication plugin. + + + + + Determines if the character is a non-ASCII space. + + + This list was obtained from http://tools.ietf.org/html/rfc3454#appendix-C.1.2 + + true if the character is a non-ASCII space; otherwise, false. + The character. + + + + Determines if the character is commonly mapped to nothing. + + + This list was obtained from http://tools.ietf.org/html/rfc3454#appendix-B.1 + + true if the character is commonly mapped to nothing; otherwise, false. + The character. + + + + Determines if the character is prohibited. + + + This list was obtained from http://tools.ietf.org/html/rfc3454#appendix-C.3 + + true if the character is prohibited; otherwise, false. + The string. + The character index. + + + + Prepares the user name or password string. + + The string to prepare. + The prepared string. + + + + Allows connections to a user account set with the mysql_native_password authentication plugin. + + + + + Returns a byte array containing the proper encryption of the + given password/seed according to the new 4.1.1 authentication scheme. + + + + + + + + Enables connections from a user account set with the authentication_iam authentication plugin. + + + + + Verify that OCI .NET SDK is referenced. + + + + + Loads the profiles from the OCI config file. + + + + + Get the values for the key_file, fingerprint and security_token_file entries. + + + + + Sign nonce sent by server using SHA256 algorithm and the private key provided by the user. + + + + + Reads the security token file and verify it does not exceed the maximum value of 10KB. + + The path to the security token. + + + + Wraps up the fingerprint, signature and the token into a JSON format and encode it to a byte array. + + The response packet that will be sent to the server. + + + + Base class to handle SCRAM authentication methods + + + + + Defines the state of the authentication process. + + + + + Gets the name of the method. + + + + + Parses the server's challenge token and returns the next challenge response. + + The next challenge response. + + + + Builds up the client-first message. + + An array of bytes containig the client-first message. + + + + Processes the server response from the client-first message and + builds up the client-final message. + + Response from the server. + An array of bytes containing the client-final message. + + + + Validates the server response. + + Server-final message + + + + Creates the HMAC SHA1 context. + + The HMAC context. + The secret key. + + + + Apply the HMAC keyed algorithm. + + The results of the HMAC keyed algorithm. + The key. + The string. + + + + Applies the cryptographic hash function. + + The results of the hash. + The string. + + + + Applies the exclusive-or operation to combine two octet strings. + + The alpha component. + The blue component. + + + + The SCRAM-SHA-1 SASL mechanism. + + + A salted challenge/response SASL mechanism that uses the HMAC SHA-1 algorithm. + + + + + Initializes a new instance of the class. + + + Creates a new SCRAM-SHA-1 SASL context. + + The user name. + The password. + The host. + + + + Gets the name of the method. + + + + + The SCRAM-SHA-256 SASL mechanism. + + + A salted challenge/response SASL mechanism that uses the HMAC SHA-256 algorithm. + + + + + Initializes a new instance of the class. + + + Creates a new SCRAM-SHA-256 SASL context. + + The user name. + The password. + The host. + + + + Gets the name of the method. + + + + + The implementation of the sha256_password authentication plugin. + + + + + The byte array representation of the public key provided by the server. + + + + + Applies XOR to the byte arrays provided as input. + + A byte array that contains the results of the XOR operation. + + + + Method that parse the challenge received from server during authentication process. + This method extracts salt and relying party name. + + Buffer holding the server challenge. + Thrown if an error occurs while parsing the challenge. + + + + Sets the ClientDataHash for the assertion + + + + + Method to obtains an assertion from a FIDO device. + + The assertion. + Thrown if an error occurs while getting the assertion. + + + + Allows connections to a user account set with the authentication_windows authentication plugin. + + + + + Allows importing large amounts of data into a database with bulk loading. + + + + + Initializes a new instance of the class using the specified instance of . + + The that will be used to perform the bulk operation. + + + + Gets or sets the connection. + + The connection. + + + + Gets or sets the field terminator. + + The field terminator. + + + + Gets or sets the line terminator. + + The line terminator. + + + + Gets or sets the name of the table. + + The name of the table. + + + + Gets or sets the character set. + + The character set. + + + + Gets or sets the name of the file. + + The name of the file. + + + + Gets or sets the timeout. + + The timeout. + + + + Gets or sets a value indicating whether the file name that is to be loaded + is local to the client or not. The default value is false. + + true if local; otherwise, false. + + + + Gets or sets the number of lines to skip. + + The number of lines to skip. + + + + Gets or sets the line prefix. + + The line prefix. + + + + Gets or sets the field quotation character. + + The field quotation character. + + + + Gets or sets a value indicating whether [field quotation optional]. + + + true if [field quotation optional]; otherwise, false. + + + + + Gets or sets the escape character. + + The escape character. + + + + Gets or sets the conflict option. + + The conflict option. + + + + Gets or sets the priority. + + The priority. + + + + Gets the columns. + + The columns. + + + + Gets the expressions. + + The expressions. + + + + Executes the load operation. + + The number of rows inserted. + + + + Executes the load operation. + + A object containing the data to be loaded. + The number of rows inserted. + + + + Asynchronous version of the load operation. + + The number of rows inserted. + + + + Asynchronous version of the load operation that accepts a data stream. + + A containing the data to be loaded. + The number of rows inserted. + + + + Executes the load operation asynchronously while the cancellation isn't requested. + + The cancellation token. + A containing the data to be loaded. + The number of rows inserted. + + + + Represents the priority set for bulk loading operations. + + + + + This is the default and indicates normal priority + + + + + Low priority will cause the load operation to wait until all readers of the table + have finished. This only affects storage engines that use only table-level locking + such as MyISAM, Memory, and Merge. + + + + + Concurrent priority is only relevant for MyISAM tables and signals that if the table + has no free blocks in the middle that other readers can retrieve data from the table + while the load operation is happening. + + + + + Represents the behavior when conflicts arise during bulk loading operations. + + + + + This is the default and indicates normal operation. In the event of a LOCAL load, this + is the same as ignore. When the data file is on the server, then a key conflict will + cause an error to be thrown and the rest of the data file ignored. + + + + + Replace column values when a key conflict occurs. + + + + + Ignore any rows where the primary key conflicts. + + + + + Summary description for CharSetMap. + + + + + Returns the text encoding for a given MySQL character set name + + Name of the character set to get the encoding for + Encoding object for the given character set name + + + + Initializes the mapping. + + + + + Represents a character set object. + + + + + Summary description for API. + + + + + Summary description for CompressedStream. + + + + + Summary description for Crypt. + + + + + Simple XOR scramble + + Source array + Index inside source array + Destination array + Index inside destination array + Password used to xor the bits + Number of bytes to scramble + + + + Returns a byte array containing the proper encryption of the + given password/seed according to the new 4.1.1 authentication scheme. + + + + + + + + Encrypts a password using the MySql encryption scheme + + The password to encrypt + The encryption seed the server gave us + Indicates if we should use the old or new encryption scheme + + + + + Hashes a password using the algorithm from Monty's code. + The first element in the return is the result of the "old" hash. + The second element is the rest of the "new" hash. + + Password to be hashed + Two element array containing the hashed values + + + + Summary description for BaseDriver. + + + + + For pooled connections, time when the driver was + put into idle queue + + + + + Loads the properties from the connected server into a hashtable + + The connection to be used. + Boolean that indicates if the function will be executed asynchronously. + The cancellation token. + + + + + Loads all the current character set names and ids for this server + into the charSets hashtable + + + + + The exception that is thrown when MySQL returns an error. This class cannot be inherited. + + + + This class is created whenever the MySQL Data Provider encounters an error generated from the server. + + + Any open connections are not automatically closed when an exception is thrown. If + the client application determines that the exception is fatal, it should close any open + objects or objects. + + + + + + Gets a number that identifies the type of error. + + + + + True if this exception was fatal and cause the closing of the connection, false otherwise. + + + + + Gets the SQL state. + + + + + Gets an integer that representes the MySQL error code. + + + + + Summary description for Field. + + + + + Automatically generates single-table commands used to reconcile changes made to a with the associated MySQL database. + This class cannot be inherited. + + + + The does not automatically generate the SQL statements required to + reconcile changes made to a with the associated instance of MySQL. + However, you can create a object to automatically generate SQL statements for + single-table updates if you set the property + of the . Then, any additional SQL statements that you do not set are generated by the + . + + + The registers itself as a listener for RowUpdating + events whenever you set the property. You can only associate one + or object with each other at one time. + + + To generate INSERT, UPDATE, or DELETE statements, the uses the + property to retrieve a required set of metadata automatically. If you change + the after the metadata has is retrieved (for example, after the first update), you + should call the method to update the metadata. + + + The must also return at least one primary key or unique + column. If none are present, an exception is generated, + and the commands are not generated. + + + The also uses the , + , and + properties referenced by the . The user should call + if any of these properties are modified, or if the + itself is replaced. Otherwise the , + , and properties retain + their previous values. + + + If you call , the is disassociated + from the , and the generated commands are no longer used. + + + + The following example uses the , along + and , to + select rows from a data source. The example is passed an initialized + , a connection string, a + query string that is a SQL SELECT statement, and a string that is the + name of the database table. The example then creates a . + + public static DataSet SelectRows(string myConnection, string mySelectQuery, string myTableName) + { + MySqlConnection myConn = new MySqlConnection(myConnection); + MySqlDataAdapter myDataAdapter = new MySqlDataAdapter(); + myDataAdapter.SelectCommand = new MySqlCommand(mySelectQuery, myConn); + MySqlCommandBuilder cb = new MySqlCommandBuilder(myDataAdapter); + + myConn.Open(); + + DataSet ds = new DataSet(); + myDataAdapter.Fill(ds, myTableName); + + ///code to modify data in DataSet here + ///Without the MySqlCommandBuilder this line would fail + myDataAdapter.Update(ds, myTableName); + myConn.Close(); + return ds; + } + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the associated object. + + The to use. + + + The registers itself as a listener for + events that are generated by the + specified in this property. + + + When you create a new instance , any existing + associated with this is released. + + + + + + Gets or sets a object for which SQL statements are automatically generated. + + + A object. + + + + The registers itself as a listener for + events that are generated by the + specified in this property. + + + When you create a new instance , any existing + associated with this + is released. + + + + + + Retrieves parameter information from the stored procedure specified in the + and populates the Parameters collection of the specified object. + This method is not currently supported since stored procedures are not available in MySQL. + + The referencing the stored + procedure from which the parameter information is to be derived. The derived parameters are added to the Parameters collection of the + . + The command text is not a valid stored procedure name. + + + + Gets the delete command. + + The object required to perform deletions. + + + + Gets the update command. + + The object required to perform updates. + + + + Gets the insert command. + + The object required to perform inserts. + + + + Given an unquoted identifier in the correct catalog case, returns the correct quoted form of that identifier, + including properly escaping any embedded quotes in the identifier. + + The original unquoted identifier. + The quoted version of the identifier. Embedded quotes within the identifier are properly escaped. + If the unquotedIdentifier is null. + + + + Given a quoted identifier, returns the correct unquoted form of that identifier, + including properly un-escaping any embedded quotes in the identifier. + + The identifier that will have its embedded quotes removed. + The unquoted identifier, with embedded quotes properly un-escaped. + If the quotedIdentifier is null. + + + + Returns the schema table for the + + The for which to retrieve the corresponding schema table. + A that represents the schema for the specific . + + + + Returns the full parameter name, given the partial parameter name. + + The partial name of the parameter. + The full parameter name corresponding to the partial parameter name requested. + + + + Allows the provider implementation of the class to handle additional parameter properties. + + A to which the additional modifications are applied. + The from the schema table provided by . + The type of command being generated; INSERT, UPDATE or DELETE. + true if the parameter is part of the update or delete WHERE clause, + false if it is part of the insert or update values. + + + + Returns the name of the specified parameter in the format of @p#. Use when building a custom command builder. + + The number to be included as part of the parameter's name. + The name of the parameter with the specified number appended as part of the parameter name. + + + + Returns the placeholder for the parameter in the associated SQL statement. + + The number to be included as part of the parameter's name. + The name of the parameter with the specified number appended. + + + + Registers the to handle the + event for a . + + + + + + Represents a set of data commands and a database connection that are used to fill a dataset and update a MySQL database. + This class cannot be inherited. + + + + The , serves as a bridge between a + and MySQL for retrieving and saving data. The provides this + bridge by mapping , which changes the data in the + to match the data in the data source, and , + which changes the data in the data source to match the data in the , + using the appropriate SQL statements against the data source. + + + When the fills a , it will create the necessary + tables and columns for the returned data if they do not already exist. However, primary + key information will not be included in the implicitly created schema unless the + property is set to . + You may also have the create the schema of the , + including primary key information, before filling it with data using . + + + is used in conjunction with + and to increase performance when connecting to a MySQL database. + + + The also includes the , + , , + , and + properties to facilitate the loading and updating of data. + + + When an instance of is created, the read/write properties + are set to initial values. For a list of these values, see the + constructor. + + + Please be aware that the class allows only + Int16, Int32, and Int64 to have the AutoIncrement property set. + If you plan to use autoincremement columns with MySQL, you should consider + using signed integer columns. + + + + The following example creates a and a . + The is opened and set as the for the + . The example then calls , and closes + the connection. To accomplish this, the is + passed a connection string and a query string that is a SQL INSERT + statement. + + public DataSet SelectRows(DataSet dataset,string connection,string query) + { + MySqlConnection conn = new MySqlConnection(connection); + MySqlDataAdapter adapter = new MySqlDataAdapter(); + adapter.SelectCommand = new MySqlCommand(query, conn); + adapter.Fill(dataset); + return dataset; + } + + + + + + Occurs during Update before a command is executed against the data source. The attempt to update is made, so the event fires. + + + + + Occurs during Update after a command is executed against the data source. The attempt to update is made, so the event fires. + + + + + Initializes a new instance of the class. + + + + When an instance of is created, + the following read/write properties are set to the following initial + values. + + + + Properties + Initial Value + + + + + + + + + + + + + + + + + + + + You can change the value of any of these properties through a separate call to the property. + + + + + + Initializes a new instance of the class with + the specified as the + property. + + + that is a SQL SELECT statement or stored procedure and is set + as the property of the . + + + + + Initializes a new instance of the class with + a and a object. + + + A String that is a SQL SELECT statement or stored procedure to be used by + the property of the . + + + A that represents the connection. + + + + This implementation of the opens and closes a + if it is not already open. This can be useful in a an application that must call the + method for two or more MySqlDataAdapter objects. + If the MySqlConnection is already open, you must explicitly call + or to close it. + + + + + + Initializes a new instance of the class with + a and a connection string. + + + A that is a SQL SELECT statement or stored procedure to + be used by the property of the . + + The connection string + + + + Gets or sets a SQL statement or stored procedure used to delete records from the data set. + + + A used during to delete records in the + database that correspond to deleted rows in the . + + + + During , if this property is not set and primary key information + is present in the , the can be generated + automatically if you set the property and use the + . Then, any additional commands that you do not set are + generated by the . This generation logic requires key column + information to be present in the . + + + When is assigned to a previously created , + the is not cloned. The maintains a reference + to the previously created object. + + + + + + Gets or sets a SQL statement or stored procedure used to insert records into the data set. + + + A used during to insert records into the + database that correspond to new rows in the . + + + + During , if this property is not set and primary key information + is present in the , the InsertCommand can be generated + automatically if you set the property and use the + . Then, any additional commands that you do not set are + generated by the MySqlCommandBuilder. This generation logic requires key column + information to be present in the DataSet. + + + When InsertCommand is assigned to a previously created , + the is not cloned. The InsertCommand maintains a reference + to the previously created object. + + + If execution of this command returns rows, these rows may be added to the DataSet + depending on how you set the property of the object. + + + + + + Gets or sets a SQL statement or stored procedure used to select records in the data source. + + + A used during to select records from the + database for placement in the . + + + + When is assigned to a previously created , + the is not cloned. The maintains a reference to the + previously created object. + + + If the does not return any rows, no tables are added to the + , and no exception is raised. + + + + + + Gets or sets a SQL statement or stored procedure used to updated records in the data source. + + + A used during to update records in the + database with data from the . + + + + During , if this property is not set and primary key information + is present in the , the can be generated + automatically if you set the property and use the + . Then, any additional commands that you do not set are + generated by the . This generation logic requires key column + information to be present in the DataSet. + + + When is assigned to a previously created , + the is not cloned. The maintains a reference + to the previously created object. + + + If execution of this command returns rows, these rows may be merged with the DataSet + depending on how you set the property of the object. + + + + + + Open connection if it was closed. + Necessary to workaround "connection must be open and valid" error + with batched updates. + + Row state + list of opened connections + If connection is opened by this function, the list is updated + + true if connection was opened + + + + Gets or sets a value that enables or disables batch processing support, + and specifies the number of commands that can be executed in a batch. + + + Returns the number of rows to process for each batch. + + + Value is + Effect + + + + 0 + + + There is no limit on the batch size. + + + + + 1 + + + Disables batch updating. + + + + + > 1 + + + Changes are sent using batches of operations at a time. + + + + + When setting this to a value other than 1, all the commands associated with the + must have their property set to None or OutputParameters. An exception will be thrown otherwise. + + + + + + Initializes batching for the . + + + + + Adds a to the current batch. + + The to add to the batch. + The number of commands in the batch before adding the . + + + + Executes the current batch. + + The return value from the last command in the batch. + + + + Removes all objects from the batch. + + + + + Ends batching for the . + + + + + Returns a System.Data.IDataParameter from one of the commands in the current batch. + + The index of the command to retrieve the parameter from. + The index of the parameter within the command. + The specified. + + + + Overridden. See . + + + + + + + + + + Initializes a new instance of the class. + + The that updates the data source. + The to execute during the . + Whether the command is an UPDATE, INSERT, DELETE, or SELECT statement. + A object. + + + + + Overridden. Raises the RowUpdating event. + + A MySqlRowUpdatingEventArgs that contains the event data. + + + + Overridden. Raises the RowUpdated event. + + A MySqlRowUpdatedEventArgs that contains the event data. + + + + Asynchronous version of the method. + + The to fill records with. + The number of rows successfully added to or refreshed in the . + + + + Asynchronous version of the method. + + The to fill records with. + The cancellation token. + The number of rows successfully added to or refreshed in the . + + + + Asynchronous version of the method. + + The name of the to use for table mapping. + The number of rows successfully added to or refreshed in the . + + + + Asynchronous version of the method. + + The name of the to use for table mapping. + The cancellation token. + The number of rows successfully added to or refreshed in the . + + + + Asynchronous version of the method. + + The to fill with records. + The name of the source table to use for table mapping. + The number of rows successfully added to or refreshed in the . + + + + Asynchronous version of the method. + + The to fill with records. + The name of the source table to use for table mapping. + The cancellation token. + The number of rows successfully added to or refreshed in the . + + + + Asynchronous version of the method. + + The to fill with records. + An instance of . + The number of rows successfully added to or refreshed in the . + + + + Asynchronous version of the method. + + The to fill with records. + An instance of . + The cancellation token. + The number of rows successfully added to or refreshed in the . + + + + Asynchronous version of the method. + + The to fill with records. + The SQL SELECT statement used to retrieve rows from the data source. + One of the values. + The number of rows successfully added to or refreshed in the . + + + + Asynchronous version of the method. + + The to fill with records. + The SQL SELECT statement used to retrieve rows from the data source. + One of the values. + The cancellation token. + The number of rows successfully added to or refreshed in the . + + + + Asynchronous version of the method. + + The start record. + The max number of affected records. + The s to fill with records. + The number of rows successfully added to or refreshed in the . + + + + Asynchronous version of the method. + + The start record. + The max number of affected records. + The cancellation token. + The s to fill with records. + The number of rows successfully added to or refreshed in the . + + + + Asynchronous version of the method. + + The to fill with records. + The start record. + The max number of affected records. + The name of the source table to use for table mapping. + The number of rows successfully added to or refreshed in the . + + + + Asynchronous version of the method. + + The to fill with records. + The start record. + The max number of affected records. + The name of the source table to use for table mapping. + The cancellation token. + The number of rows successfully added to or refreshed in the . + + + + Asynchronous version of the method. + + The to fill with records. + The name of the source table to use for table mapping. + An instance of . + The start record. + The max number of affected records. + The number of rows successfully added to or refreshed in the . + + + + Asynchronous version of the method. + + The to fill with records. + The name of the source table to use for table mapping. + An instance of . + The start record. + The max number of affected records. + The cancellation token. + The number of rows successfully added to or refreshed in the . + + + + Asynchronous version of the method. + + The s to fill with records. + The start record. + The max number of affected records. + The SQL SELECT statement used to retrieve rows from the data source. + One of the values. + The number of rows successfully added to or refreshed in the s. + + + + Asynchronous version of the method. + + The s to fill with records. + The start record. + The max number of affected records. + The SQL SELECT statement used to retrieve rows from the data source. + One of the values. + The cancellation token. + The number of rows successfully added to or refreshed in the s. + + + + Asynchronous version of the method. + + The to fill with records. + The start record. + The max number of affected records. + The name of the source table to use for table mapping. + The SQL SELECT statement used to retrieve rows from the data source. + One of the values. + The number of rows successfully added to or refreshed in the . + + + + Asynchronous version of the method. + + The to fill with records. + The start record. + The max number of affected records. + The name of the source table to use for table mapping. + The SQL SELECT statement used to retrieve rows from the data source. + One of the values. + The cancellation token. + The number of rows successfully added to or refreshed in the . + + + + Asynchronous version of the method. + + DataSet to use. + Schema type to use. + [] + + + + Asynchronous version of the method. + + DataSet to use. + Schema type to use. + to use. + [] + + + + Asynchronous version of the method. + + DataSet to use. + Schema type to use. + Source table to use. + [] + + + + Asynchronous version of the method. + + DataSet to use. + Schema type to use. + Source table to use. + to use. + [] + + + + Asynchronous version of the method. + + DataSet to use. + Schema type to use. + Source table to use. + DataReader to use. + [] + + + + Asynchronous version of the method. + + DataSet to use. + Schema type to use. + Source table to use. + to use. + to use. + [] + + + + Asynchronous version of the method. + + DataSet to use. + Schema type to use. + DBCommand to use. + Source table to use. + Command Behavior + [] + + + + Asynchronous version of the method. + + DataSet to use. + Schema type to use. + DBCommand to use. + Source table to use. + Command Behavior + to use. + [] + + + + Asynchronous version of the method. + + DataTable to use. + Schema type to use. + DataTable + + + + Asynchronous version of the method. + + DataTable to use. + Schema type to use. + to use. + + + + + Asynchronous version of the method. + + DataTable to use. + Schema type to use. + DataReader to use. + + + + + Asynchronous version of the method. + + DataTable to use. + Schema type to use. + DataReader to use. + to use. + + + + + Asynchronous version of the method. + + DataTable to use. + Schema type to use. + DBCommand to use. + Command Behavior + + + + + Asynchronous version of the method. + + DataTable to use. + Schema type to use. + DBCommand to use. + Command behavior. + to use. + + + + + Asynchronous version of the method. + + DataRow[] to use. + The number of rows successfully updated from the . + + + + Asynchronous version of the method. + + DataRow[] to use. + to use. + The number of rows successfully updated from the . + + + + Asynchronous version of the method. + + DataSet to use. + The number of rows successfully updated from the . + + + + Asynchronous version of the method. + + DataSet to use. + to use. + The number of rows successfully updated from the . + + + + Asynchronous version of the method. + + DataTable to use. + The number of rows successfully updated from the . + + + + Asynchronous version of the method. + + DataTable to use. + to use. + The number of rows successfully updated from the . + + + + Asynchronous version of the method. + + DataRow[] to use. + Data Table Mapping + The number of rows successfully updated from the . + + + + Asynchronous version of the method. + + DataRow[] to use. + Data Table Mapping + to use. + The number of rows successfully updated from the . + + + + Asynchronous version of the method. + + DataSet to use. + Source table to use. + The number of rows successfully updated from the . + + + + Asynchronous version of the method. + + DataSet to use. + Source table to use. + to use. + The number of rows successfully updated from the . + + + + Represents the method that will handle the event of a . + + + + + Represents the method that will handle the event of a . + + + + + Provides data for the RowUpdating event. This class cannot be inherited. + + + + + Initializes a new instance of the MySqlRowUpdatingEventArgs class. + + The to + . + The to execute during . + One of the values that specifies the type of query executed. + The sent through an . + + + + Gets or sets the MySqlCommand to execute when performing the Update. + + + + + Provides data for the RowUpdated event. This class cannot be inherited. + + + + + Initializes a new instance of the MySqlRowUpdatedEventArgs class. + + The sent through an . + The executed when is called. + One of the values that specifies the type of query executed. + The sent through an . + + + + Gets or sets the MySqlCommand executed when Update is called. + + + + + Enables the provider to help ensure that a user has a security level adequate for accessing data. + + + + + Adds a new connection string with set of restricted keywords to the MySqlClientPermission object + + Settings to be used for the connection + Keywords to define the restrictions + KeyRestrictionBehavior to be used + + + + Returns MySqlClientPermission as an IPermission + + + + + + Associates a security action with a custom security attribute. + + + + + Represents a section within a configuration file. + + + + + Gets the MySQL configuations associated to the current configuration. + + + + + Gets a collection of the exception interceptors available in the current configuration. + + + + + Gets a collection of the command interceptors available in the current configuration. + + + + + Gets a collection of the authentication plugins available in the current configuration. + + + + + Gets or sets the replication configurations. + + + + + Defines the configurations allowed for an authentication plugin. + + + + + Gets or sets the name of the authentication plugin. + + + + + Gets or sets the type of the authentication plugin. + + + + + Defines the configurations allowed for an interceptor. + + + + + Gets or sets the name of the interceptor. + + + + + Gets or sets the type of the interceptor. + + + + + Represents a generic configuration element. + + + + + + Gets an enumerator that iterates through the returned list. + + An enumerator that iterates through the returned list. + + + + Helper class that makes it easier to work with the provider. + + + + + Asynchronous version of ExecuteDataRow. + + The settings to be used for the connection. + The command to execute. + The parameters to use for the command. + The DataRow containing the first row of the resultset. + + + + Asynchronous version of ExecuteDataRow. + + The settings to be used for the connection. + The command to execute. + The cancellation token. + The parameters to use for the command. + The DataRow containing the first row of the resultset. + + + + Executes a single SQL command and returns the first row of the resultset. A new MySqlConnection object + is created, opened, and closed during this method. + + Settings to be used for the connection + Command to execute + Parameters to use for the command + DataRow containing the first row of the resultset + + + + Executes a single SQL command and returns the resultset in a . + A new MySqlConnection object is created, opened, and closed during this method. + + Settings to be used for the connection + Command to execute + containing the resultset + + + + Executes a single SQL command and returns the resultset in a . + A new MySqlConnection object is created, opened, and closed during this method. + + Settings to be used for the connection + Command to execute + Parameters to use for the command + containing the resultset + + + + Executes a single SQL command and returns the resultset in a . + The state of the object remains unchanged after execution + of this method. + + object to use + Command to execute + containing the resultset + + + + Executes a single SQL command and returns the resultset in a . + The state of the object remains unchanged after execution + of this method. + + object to use + Command to execute + Parameters to use for the command + containing the resultset + + + + Updates the given table with data from the given + + Settings to use for the update + Command text to use for the update + containing the new data to use in the update + Tablename in the dataset to update + + + + Async version of ExecuteDataset + + Settings to be used for the connection + Command to execute + containing the resultset + + + + Async version of ExecuteDataset + + Settings to be used for the connection + Command to execute + Parameters to use for the command + containing the resultset + + + + Async version of ExecuteDataset + + object to use + Command to execute + containing the resultset + + + + Async version of ExecuteDataset + + object to use + Command to execute + Parameters to use for the command + containing the resultset + + + + Async version of UpdateDataset + + Settings to use for the update + Command text to use for the update + containing the new data to use in the update + Tablename in the dataset to update + + + + Executes a single command against a MySQL database. The is assumed to be + open when the method is called and remains open after the method completes. + + The object to use + The SQL command to be executed. + An array of objects to use with the command. + The number of affected records. + + + + Executes a single command against a MySQL database. + + to use. + The SQL command to be executed. + An array of objects to use with the command. + The number of affected records. + A new is created using the given. + + + + Async version of ExecuteNonQuery + + object to use. + The SQL command to be executed. + An array of objects to use with the command. + Rows affected. + + + + Asynchronous version of the ExecuteNonQuery method. + + to use. + The SQL command to be executed. + An array of objects to use with the command. + The number of rows affected. + + + + Asynchronous version of the ExecuteNonQuery method. + + to use. + The SQL command to be executed. + The cancellation token. + An array of objects to use with the command. + The number of rows affected. + + + + Executes a single command against a MySQL database, possibly inside an existing transaction. + + object to use for the command + object to use for the command + Command text to use + Array of objects to use with the command + True if the connection should be preserved, false if not + object ready to read the results of the command + + + + Executes a single command against a MySQL database. + + Settings to use for this command + Command text to use + object ready to read the results of the command + + + + Executes a single command against a MySQL database. + + object to use for the command + Command text to use + object ready to read the results of the command + + + + Executes a single command against a MySQL database. + + Settings to use for this command + Command text to use + Array of objects to use with the command + object ready to read the results of the command + + + + Executes a single command against a MySQL database. + + Connection to use for the command + Command text to use + Array of objects to use with the command + object ready to read the results of the command + + + + Async version of ExecuteReader + + object to use for the command + object to use for the command + Command text to use + Array of objects to use with the command + True if the connection should be preserved, false if not + object ready to read the results of the command + + + + Async version of ExecuteReader + + Settings to use for this command + Command text to use + object ready to read the results of the command + + + + Async version of ExecuteReader + + object to use for the command + Command text to use + object ready to read the results of the command + + + + Async version of ExecuteReader + + Settings to use for this command. + Command text to use. + An array of objects to use with the command. + object ready to read the results of the command. + + + + Async version of ExecuteReader + + Connection to use for the command. + Command text to use. + An array of objects to use with the command. + object ready to read the results of the command. + + + + Execute a single command against a MySQL database. + + Settings to use for the update + Command text to use for the update + The first column of the first row in the result set, or a null reference if the result set is empty. + + + + Execute a single command against a MySQL database. + + Settings to use for the command + Command text to use for the command + Parameters to use for the command + The first column of the first row in the result set, or a null reference if the result set is empty. + + + + Execute a single command against a MySQL database. + + object to use + Command text to use for the command + The first column of the first row in the result set, or a null reference if the result set is empty. + + + + Execute a single command against a MySQL database. + + object to use + Command text to use for the command + Parameters to use for the command + The first column of the first row in the result set, or a null reference if the result set is empty. + + + + Async version of ExecuteScalar + + Settings to use for the update + Command text to use for the update + The first column of the first row in the result set, or a null reference if the result set is empty. + + + + Async version of ExecuteScalar + + Settings to use for the command + Command text to use for the command + Parameters to use for the command + The first column of the first row in the result set, or a null reference if the result set is empty. + + + + Async version of ExecuteScalar + + object to use + Command text to use for the command + The first column of the first row in the result set, or a null reference if the result set is empty. + + + + Async version of ExecuteScalar + + object to use + Command text to use for the command + Parameters to use for the command + The first column of the first row in the result set, or a null reference if the result set is empty. + + + + Escapes the string. + + The string to escape. + The string with all quotes escaped. + + + + Replaces quotes with double quotes. + + The string to modidify. + A string containing double quotes instead of single quotes. + + + + Represents a single(not nested) TransactionScope + + + + + Defines security permissions assigned to a MySQL object. + + + + + Creates a set of permissions. + + A flag indicating if the reflection permission should be included. + A object representing a collection of permissions. + + + + BaseCommandInterceptor is the base class that should be used for all userland + command interceptors + + + + + Gets the active connection. + + + + + Executes an SQL statements that returns a scalar value such as a calculation. + + The SQL statement to execute. + A scalar value that represents the result returned by the execution of the SQL statement. + false. + This method is intended to be overriden. + + + + Executes an SQL statement that returns the number of affected rows. + + The SQL statement to execute. + The number of affected rows. + false. + This method is intended to be overriden. + + + + Executes an SQL statement that will return a resultset. + + The SQL statement to execute. + A value that describes the results of the query and its effect on the database. + A object containing the result of the statement execution. + false. + This method is intended to be overriden. + + + + Sets the active connection. + + The active connection. + + + + CommandInterceptor is the "manager" class that keeps the list of registered interceptors + for the given connection. + + + + + BaseExceptionInterceptor is the base class that should be used for all userland + exception interceptors. + + + + + Returns the received exception. + + The exception to be returned. + The exception originally received. + + + + Gets the active connection. + + + + + Initilizes this object by setting the active connection. + + The connection to become active. + + + + StandardExceptionInterceptor is the standard interceptor that simply returns the exception. + It is the default action. + + + + + Returns the received exception, which is the default action + + The exception to be returned. + The exception originally received. + + + + ExceptionInterceptor is the "manager" class that keeps the list of registered interceptors + for the given connection. + + + + + Interceptor is the base class for the "manager" classes such as ExceptionInterceptor, + CommandInterceptor, etc + + + + + Return schema information about procedures and functions + Restrictions supported are: + schema, name, type + + + Boolean that indicates if the function will be executed asynchronously. + The cancellation token. + + + + Return schema information about parameters for procedures and functions + Restrictions supported are: + schema, name, type, parameter name + + + + + Represents a query attribute to a . + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the attribute name and its value. + + Name of the attribute. + Value of the attribute. + + + + Name of the query attribute. + + + + + Value of the query attribute. + + + + + Gets or sets the of the attribute. + + + + + Sets the MySqlDbType from the Value + + + + + Gets the value for the attribute type. + + + + + Serialize the value of the query attribute. + + + + + Clones this object. + + An object that is a clone of this object. + + + + Represents a collection of query attributes relevant to a . + + + + + Gets the at the specified index. + + + + + Gets the number of objects in the collection. + + + + + Adds the specified object to the . + + object to add. + + + + Adds a query attribute and its value. + + Name of the query attribute. + Value of the query attribute. + + + + Removes all items from the collection. + + + + + Returns an enumerator that iterates through the . + + + + + Abstract class that provides common functionality for connection options that apply for all protocols. + + + + + Readonly field containing a collection of protocol shared connection options. + + + + + Gets or sets a dictionary representing key-value pairs for each connection option. + + + + + Gets or sets the name of the server. + + The server. + + If this property is not set, then the provider will attempt to connect tolocalhost + even though this property will return String.Empty. + + + + Gets or sets the name of the database for the initial connection. + + There is no default for this property and, if not set, the connection will not have a current database. + + + + + Gets or sets the protocol that should be used for communicating + with MySQL. + + + + + Gets or sets the port number that is used when the socket + protocol is being used. + + + + + Gets or sets a boolean value that indicates whether this connection + should resolve DNS SRV records. + + + + + Gets or sets the user ID that should be used to connect with. + + + + + Gets or sets the password that should be used to make a connection. + + + + + Gets or sets the password for a second authentication that should be used to make a connection. + + + + + Gets or sets the password for a third authentication that should be used to make a connection. + + + + + Gets or sets the path to the certificate file to be used. + + + + + Gets or sets the password to be used in conjunction with the certificate file. + + + + + Gets or sets the location to a personal store where a certificate is held. + + + + + Gets or sets a certificate thumbprint to ensure correct identification of a certificate contained within a personal store. + + + + + Indicates whether to use SSL connections and how to handle server certificate errors. + + + + + Sets the TLS versions to use in a SSL connection to the server. + + + Tls version=TLSv1.2,TLSv1.3; + + + + + Gets or sets the path to a local key file in PEM format to use for establishing an encrypted connection. + + + + + Gets or sets the path to a local certificate file in PEM format to use for establishing an encrypted connection. + + + + + Gets or sets the idle connection time(seconds) for TCP connections. + + + + + Gets or sets the character set that should be used for sending queries to the server. + + + + + Analyzes the connection string for potential duplicated or invalid connection options. + + Connection string. + Flag that indicates if the connection is using X Protocol. + Flag that indicates if the default port is used. + Flag that indicates if the connection string has been analyzed. + + + + Represents a set of methods for creating instances of the MySQL client implementation of the data source classes. + + + + + Gets an instance of the . + This can be used to retrieve strongly typed data objects. + + + + + Returns a strongly typed instance. + + A new strongly typed instance of DbCommand. + + + + Returns a strongly typed instance. + + A new strongly typed instance of DbConnection. + + + + Returns a strongly typed instance. + + A new strongly typed instance of DbParameter. + + + + Returns a strongly typed instance. + + A new strongly typed instance of DbConnectionStringBuilder. + + + + Returns a strongly typed instance. + + A new strongly typed instance of DbCommandBuilder. + + + + Returns a strongly typed instance. + + A new strongly typed instance of DbDataAdapter. + + + + Provide a simple caching layer + + + + + Represents a SQL statement to execute against a MySQL database. This class cannot be inherited. + + + + You can reset the property and reuse the + object. However, you must close the object before you can execute a new or previous command. + + + If an exception of type is generated by the method executing , + the instance remains open. It is the responsibility of the programmer to close the connection. + + + You can read more about it here. + + + Using the '@' symbol for paramters is now the preferred approach although the old pattern of using + '?' is still supported. Please be aware that using '@' can cause conflicts when user variables + are also used. For more information, see the documentation on the AllowUserVariables connection string option. + + + + + + Initializes a new instance of the MySqlCommand class. + + + The base constructor initializes all fields to their default values. + + + + + Initializes a new instance of the class with the text of the query. + + The text of the query. + + + + Initializes a new instance of the class with the text of the query and a . + + The text of the query. + A that represents the connection to an instance of MySQL Server. + + + + Initializes a new instance of the class with the text of the query, + a , and the . + + The text of the query. + A that represents the connection to an instance of MySQL Server. + The in which the executes. + + + + Provides the ID of the last inserted row. + ID of the last inserted row. -1 if none exists. + + An important point to remember is that this property can be used in batch SQL scenarios but it's important to remember that it will + only reflect the insert ID from the last insert statement in the batch. This property can also be used when the batch includes select statements + and ExecuteReader is used. This property can be consulted during result set processing. + + + + + Gets or sets the SQL statement to execute at the data source. + + The SQL statement or stored procedure to execute. The default is an empty string. + + You can read more about it here. + + + + + Gets or sets the wait time before terminating the attempt to execute a command + and generating an error. + + The time (in seconds) to wait for the command to execute. The default is 30 seconds. + + CommandTimeout is dependent on the ability of MySQL to cancel an executing query. + + + + + Gets or sets a value indicating how the property is to be interpreted. + + + One of the values. + The default is . + + + You can read more about it here. + + + + + Gets a boolean value that indicates whether the method has been called. + + True if it is Prepared; otherwise, false. + + + + Gets or sets the object used by this instance of the . + + + The connection to a data source. The default value is a null reference. + + + + + Gets the object. + + + The parameters of the SQL statement or stored procedure. The default is an empty collection. + + + Connector/NET does not support unnamed parameters. Every parameter added to the collection must + have an associated name. + You can read more about it here. + Parameters can be used along with . There are no restrictions in this regard. + + + + + Gets the object. + + + The query attributes defined for the statement. The default is an empty collection. + + + Connector/NET does not support unnamed query attributes. Every query attribute added to the collection must + have an associated name. + You can read more about it here. + Query Attributes can be used along with . There are no restrictions in this regard. + + + + + Gets or sets the instance of within which executes. + + + The . The default value is a null reference (Nothing in Visual Basic). + + + You cannot set the property if it is already set to a + specific value, and the command is in the process of executing. If you set the + transaction to use a object that is not connected + to the same as the object, + an exception will be thrown the next time you attempt to execute a statement. + + + + + Gets or sets a value that indicates whether caching is enabled. + + True if it is enabled; otherwise, false. + + + + Gets or sets the seconds for how long a TableDirect result should be cached. + + Number of seconds. + + + + Gets or sets how command results are applied to the + when used by the method of the . + + + One of the values. + + + + The default value is + Both unless the command is automatically generated (as in the case of the + ), in which case the default is None. + + + + + + Gets or sets a value indicating whether the command object should be visible in a Windows Form Designer control. + + True if it should be visible; otherwise, false. + + + + Gets or sets the used by this . + + The connection. + + + + Gets the collection of objects. + + The collection. + + + + Gets or sets the within which this object executes. + + The transaction. + + + + Attempts to cancel the execution of a currently active command + + + + + Creates a new instance of a object. + + + This method is a strongly-typed version of . + + A object. + + + + Check the connection to make sure + - it is open + - it is not currently being used by a reader + - and we have the right version of MySQL for the requested command type + + + + + Executes a SQL statement against the connection and returns the number of rows affected. + + Number of rows affected + + You can use to perform any type of database operation, + however any resultsets returned will not be available. Any output parameters + used in calling a stored procedure will be populated with data and can be + retrieved after execution is complete. + For UPDATE, INSERT, and DELETE statements, the return value is the number + of rows affected by the command. For all other types of statements, the return + value is -1. + + + + + Asynchronous version of . + + The cancellation token. + A task representing the asynchronous operation. + + + + Reset reader to null, to avoid "There is already an open data reader" + on the next ExecuteReader(). Used in error handling scenarios. + + + + + Reset SQL_SELECT_LIMIT that could have been modified by CommandBehavior. + + + + + Sends the value to + and builds a object. + + A object. + + + When the property is set to StoredProcedure, + the property should be set to the name of the stored + procedure. The command executes this stored procedure when you call + ExecuteReader. + + + While is in use, the associated + instance of is busy serving it + and no other operations can be performed on , other than closing it. + This is the case until the method of is called. + + + + + + Sends the to the Connection, + and builds a using one of the values. + + One of the values. + + + When the property is set to StoredProcedure, + the property should be set to the name of the stored + procedure. The command executes this stored procedure when you call + ExecuteReader. + + + If the object is created with CommandBehavior set to + CloseConnection, closing the instance closes the connection + automatically. + + + When calling ExecuteReader with the SingleRow behavior, you should be aware that using a limit + clause in your SQL will cause all rows (up to the limit given) to be retrieved by the client. The + method will still return false after the first row but pulling all rows of data + into the client will have a performance impact. If the limit clause is not necessary, it should + be avoided. + + + + A object. + + + + + Asynchronous version of . + + One of the values. + A task representing the asynchronous operation. + + + + Asynchronous version of with a cancellation token. + + One of the values. + The cancellation token. + A task representing the asynchronous operation. + + + + Executes the query, and returns the first column of the first row in the + result set returned by the query. Extra columns or rows are ignored. + + + The first column of the first row in the result set, or a null reference if the + result set is empty + + + + Use the ExecuteScalar method to retrieve a single value (for example, + an aggregate value) from a database. This requires less code than using the + method, and then performing the operations necessary + to generate the single value using the data returned by a + + + + + + Asynchronous version of . + + The cancellation token. + A task representing the asynchronous operation. + + + + Creates a prepared version of the command on an instance of MySQL Server. + + + + + Asynchronously creates a prepared version of the command on an instance of MySQL Server. + + + + + Creates a clone of this object. CommandText, Connection, and Transaction properties + are included as well as the entire parameter and the arribute list. + + The cloned object. + + + + Initiates the asynchronous execution of the SQL statement or stored procedure + that is described by this , and retrieves one or more + result sets from the server. + + An that can be used to poll, wait for results, + or both; this value is also needed when invoking EndExecuteReader, + which returns a instance that can be used to retrieve + the returned rows. + + + + Initiates the asynchronous execution of the SQL statement or stored procedure + that is described by this using one of the + CommandBehavior values. + + One of the values, indicating + options for statement execution and data retrieval. + An that can be used to poll, wait for results, + or both; this value is also needed when invoking EndExecuteReader, + which returns a instance that can be used to retrieve + the returned rows. + + + + Finishes asynchronous execution of a SQL statement, returning the requested + . + + The returned by the call to + . + A MySqlDataReader object that can be used to retrieve the requested rows. + + + + Initiates the asynchronous execution of the SQL statement or stored procedure + that is described by this . + + + An delegate that is invoked when the command's + execution has completed. Pass a null reference to indicate that no callback is required. + A user-defined state object that is passed to the + callback procedure. Retrieve this object from within the callback procedure + using the property. + An that can be used to poll or wait for results, + or both; this value is also needed when invoking , + which returns the number of affected rows. + + + + Initiates the asynchronous execution of the SQL statement or stored procedure + that is described by this . + + An that can be used to poll or wait for results, + or both; this value is also needed when invoking , + which returns the number of affected rows. + + + + Finishes asynchronous execution of a SQL statement. + + The returned by the call + to . + + + + + Releases the resources used by the + + + + + Releases the resources used by the + + + + + Represents a connection to a MySQL database. This class cannot be inherited. + + + + A object represents a session to a MySQL + data source. When you create an instance of , all + properties are set to their initial values. + + + If the goes out of scope, it is not closed. Therefore, + you must explicitly close the connection by calling + or . + + + + + + Occurs when WebAuthn authentication makes a request to perform the gesture action on a device. + + + + + Occurs when MySQL returns warnings as a result of executing a command or query. + + + + + Initializes a new instance of the class. + + + You can read more about it here. + + + + + Initializes a new instance of the class when given a string containing the connection string. + + + You can read more about it here. + + The connection properties used to open the MySQL database. + + + + + Determines whether the connection is a clone of other connection. + + + + + Returns the ID of the server thread this connection is executing on. + + + + + Gets the name of the MySQL server to which to connect. + + + + + Gets the time to wait while trying to establish a connection before terminating the attempt and generating an error. + + + A value of 0 indicates no limit, and should be avoided in a call to + because an attempt to connect + will wait indefinitely. + + The value set is less than 0. + + + Gets the name of the current database or the database to be used after a connection is opened. + The name of the current database or the name of the database to be used after a connection is opened. + The default value is an empty string. + + + The property does not update dynamically. + If you change the current database using a SQL statement, then this property + may reflect the wrong value. If you change the current database using the + method, this property is updated to reflect the new database. + + + + + + Indicates if this connection should use compression when communicating with the server. + + + + Gets the current state of the connection. + + A bitwise combination of the values. The default is . + + + The allowed state changes are: + + + From to , + using the method of the connection object. + + + From Open to Closed, using either the Close method or the Dispose method of the connection object. + + + + + + Gets a string containing the version of the MySQL server to which the client is connected. + The version of the instance of MySQL. + The connection is closed. + + + + Gets or sets the string used to connect to a MySQL database. + + + You can read more about it here. + + + + + Gets the instance of the + + + + + Gets a boolean value that indicates whether the password associated to the connection is expired. + + + + + Gets a boolean value that indicates whether the connection string has been analyzed or not. + + + + + Creates and returns a System.Data.Common.DbCommand object associated with the current connection. + + A object. + + + + Releases the resources used by the + + + + + Starts a database transaction. + + Specifies the for the transaction. + A representing the new transaction. + Parallel transactions are not supported. + + + + Begins a database transaction. + + A representing the new transaction. + Parallel transactions are not supported. + + + + Starts a database transaction. + + Specifies the for the transaction. + The scope of the transaction. + A representing the new transaction. + Parallel transactions are not supported. + + + + Asynchronous version of . + + A representing the new transaction. + Parallel transactions are not supported. + + + + Asynchronous version of . + + A token to cancel the asynchronous operation. + A representing the new transaction. + Parallel transactions are not supported. + + + + Asynchronous version of . + + Specifies the for the transaction. + The cancellation token. + A representing the new transaction. + Parallel transactions are not supported. + + + Changes the current database for an open . + The name of the database to use. + + + The value supplied in the databaseName parameter must be a valid database + name. The databaseName parameter cannot contain a null value, an empty + string, or a string with only blank characters. + + + When you are using connection pooling against MySQL, and you close + the connection, it is returned to the connection pool. The next time the + connection is retrieved from the pool, the reset connection request + executes before the user performs any operations. + + + The database name is not valid. + The connection is not open. + Cannot change the database. + + + + Asynchronous version of the method. + + The name of the database to use. + The cancellation token. + A task representing the asynchronous operation. + + + + Pings the server. + + true if the ping was successful; otherwise, false. + + + + Pings the server. + + true if the ping was successful; otherwise, false. + + + Opens a database connection with the property settings specified by the . + Cannot open a connection without specifying a data source or server. + A connection-level error occurred while opening the connection. + + + The draws an open connection from the connection pool if one is available. + Otherwise, it establishes a new connection to an instance of MySQL. + + + + + + Creates and returns a object associated with the . + + A object. + + + Closes the connection to the database. This is the preferred method of closing any open connection. + + + The method rolls back any pending transactions. It then releases + the connection to the connection pool, or closes the connection if connection + pooling is disabled. + + + An application can call more than one time. No exception is + generated. + + + + + + Asynchronous version of the method. + + + + + Asynchronous version of the method. + + + + + Cancels the query after the specified time interval. + + The length of time (in seconds) to wait for the cancellation of the command execution. + + + + Asynchronous version of the method. + + The length of time (in seconds) to wait for the cancellation of the command execution. + The cancellation token. + + + + Returns schema information for the data source of this . + + A that contains schema information. + + + + Returns schema information for the data source of this + using the specified string for the schema name. + + Specifies the name of the schema to return. + A that contains schema information. + + + + Returns schema information for the data source of this + using the specified string for the schema name and the specified string array + for the restriction values. + + Specifies the name of the schema to return. + Specifies a set of restriction values for the requested schema. + A that contains schema information. + + + + Asynchronous version of . + + A token to cancel the asynchronous operation. + A task representing the asynchronous operation. + + + + Asynchronous version of . + + Specifies the name of the schema to return. + A token to cancel the asynchronous operation. + A task representing the asynchronous operation. + + + + Asynchronous version of . + + Specifies the name of the schema to return. + Specifies a set of restriction values for the requested schema. + A token to cancel the asynchronous operation. + A task representing the asynchronous operation. + + + + Gets a schema collection based on the provided restriction values. + + The name of the collection. + The values to restrict. + A schema collection object. + + + + Asynchronous version of the method. + + The name of the collection. + The values to restrict. + The cancellation token. + A collection of schema objects. + + + + Asynchronous version of the method. + + The name of the collection. + The values to restrict. + The cancellation token. + Boolean that indicates if the function will be executed asynchronously. + A collection of schema objects. + + + + Enlists in the specified transaction. + + A reference to an existing in which to enlist. + + + + Creates a new object with the exact same ConnectionString value. + + A cloned object. + + + + Returns an unopened copy of this connection with a new connection string. If the Password + in is not set, the password from this connection will be used. + This allows creating a new connection with the same security information while changing other options, + such as database or pooling. + + The new connection string to be used. + A new with different connection string options but + the same password as this connection (unless overridden by ). + + + + Sets query timeout. If timeout has been set prior and not + yet cleared with ClearCommandTimeout(), it has no effect. + + Timeout in seconds. + if a timeout is set. + + + + Clears query timeout, allowing next SetCommandTimeout() to succeed. + + + + Empties the connection pool associated with the specified connection. + + The associated with the pool to be cleared. + + + + clears the connection pool that is associated with the connection. + If additional connections associated with connection are in use at the time of the call, + they are marked appropriately and are discarded (instead of being returned to the pool) + when is called on them. + + + + + + Asynchronous version of the method. + + The connection associated with the pool to be cleared. + The cancellation token. + + + + Clears all connection pools. + + ClearAllPools essentially performs a on all current connection pools. + + + + Asynchronous version of the method. + + The cancellation token. + + + + Represents the method to handle the event of a + . + + + + + Represents the method to handle the event of a + . + + + + + Provides data for the InfoMessage event. This class cannot be inherited. + + + + + Gets or sets an array of objects together with the errors found. + + + + + IDisposable wrapper around SetCommandTimeout and ClearCommandTimeout functionality. + + + + + Aids in the creation of connection strings by exposing the connection options as properties. + Contains connection options specific to the Classic MySQL protocol. + + + + + Main constructor. + + + + + Constructor accepting a connection string. + + The connection string. + Flag that indicates if the connection string has been analyzed. + + + + Readonly field containing a collection of classic protocol and protocol shared connection options. + + + + + Gets or sets the name of the named pipe that should be used + for communicating with MySQL. + + This property has no effect unless the + property has been set to . + + + + Gets or sets a boolean value that indicates whether this connection + should use compression. + + + + + Gets or sets a boolean value that indicates whether this connection will allow + commands to send multiple SQL statements in one execution. + + + + + Gets or sets a boolean value that indicates whether logging is enabled. + + + + + Gets or sets the base name of the shared memory objects used to + communicate with MySQL when the shared memory protocol is being used. + + + + + Gets or sets the default command timeout. + + + + + Gets or sets the connection timeout. + + + + + Gets or sets a boolean value that indicates whether this connection will allow + to load data local infile. + + + + + Gets or sets the safe path where files can be read and uploaded to the server. + + + + + Gets or sets a boolean value that indicates if the password should be persisted + in the connection string. + + + + + Gets or sets a boolean value that indicates if the connection should be encrypted. + + Obsolte. Use instead. + + + + Gets or sets a boolean value that indicates if RSA public keys should be retrieved from the server. + + This option is only relevant when SSL is disabled. Setting this option to true in + 8.0 servers that have the caching_sha2_password authentication plugin as the default plugin will + cause the connection attempt to fail if the user hasn't successfully connected to the server on a + previous occasion. + + + + Gets or sets the default authentication plugin to be used. This plugin takes precedence over + the server-side default authentication plugin when a valid authentication plugin is specified. + + + The default authentication plugin is mandatory for supporting user-less and password-less Kerberos authentications. + If no value is set, it uses the server-side default authentication plugin. + + + + + Gets or sets the OCI configuration file location. + + + The default values vary depending on the operating system. On Windows systems the value is '%HOMEDRIVE%%HOMEPATH%\.oci\config'. + For Linux and macOS systems it is '~/.oci/config'. + + + + + Gets or sets the profile to use from the OCI configuration file. + + + The default value is "DEFAULT". + + + + + Gets or sets the mode value to be used in Kerberos authentication. + + + If (default value) is used, then it will try to log in using + and then fallback to mode value in case of error. + + + + + Gets or sets a boolean value that indicates if zero date time values are supported. + + Default value is false. + + + + Gets or sets a boolean value that indicates if zero datetime values should be + converted to DateTime.MinValue. + + Default value is false. + + + + Gets or sets a boolean value that indicates if the Usage Advisor should be enabled. + + Default value is false. + + + + Gets or sets the size of the stored procedure cache. + + Default value is 25. + + + + Gets or sets a boolean value that indicates if the performance monitor hooks should be enabled. + + Default value is false. + + + + Gets or sets a boolean value that indicates if an opened connection should particiapte in the current scope. + + Default value is true. + + + + Gets or sets a boolean value that indicates if security asserts must be included. + + Must be set to true when using the class in a partial trust environment, + with the library installed in the GAC of the hosting environment. Not supported in .NET Core. + Default value is false. + + + + Gets or sets a boolean value that indicates if column binary flags set by the server are ignored. + + Default value is true. + + + + Gets or sets a boolean value that indicates if TINYINT(1) shound be treated as a BOOLEAN. + + Default value is true. + + + + Gets or sets a boolean value that indicates if the provider expects user variables in the SQL. + + Default value is false. + + + + Gets or sets a boolean value that indicates if the session should be interactive. + + Default value is false. + + + + Gets or sets a boolean value that indicates if server functions should be treated as returning a string. + + Default value is false. + + + + Gets or sets a boolean value that indicates if the server should report affected rows instead of found rows. + + Default value is false. + + + + Gets or sets a boolean value that indicates if items of data type BINARY(16) should be treated as guids. + + Default value is false. + + + + Gets or sets a boolean value that indicates if SQL Server syntax should be allowed by supporting square brackets + around symbols instead of backticks. + + Default value is false. + + + + Gets or sets a boolean value that indicates if caching of TableDirect commands is enabled. + + Default value is false. + + + + Gets or sets the seconds for how long a TableDirect result should be cached. + + Default value is 0. + + + + Gets or sets a boolean value that indicates if stored routine parameters should be checked against the server. + + Default value is true. + + + + Gets or sets a boolean value that indicates if this connection will use replication. + + Default value is false. + + + + Gets or sets the list of interceptors that can triage thrown MySqlExceptions. + + + + + Gets or sets the list of interceptors that can intercept command operations. + + + + + Gets or sets the event for the WebauthN callback. + + + + + Gets or sets the lifetime of a pooled connection. + + Default value is 0. + + + + Gets or sets a boolean value indicating if connection pooling is enabled. + + Default value is true. + + + + Gets the minimum connection pool size. + + Default value is 0. + + + + Gets or sets the maximum connection pool setting. + + Default value is 100. + + + + Gets or sets a boolean value that indicates if the connection should be reset when retrieved + from the pool. + + Default value is false. + + + + Gets or sets a boolean value that indicates whether the server variable settings are updated by a + SHOW VARIABLES command each time a pooled connection is returned. + + Default value is false. + + + + Indicates whether the driver should treat binary BLOBs as UTF8. + + Default value is false. + + + + Gets or sets the pattern to match for the columns that should be treated as UTF8. + + + + + Gets or sets the pattern to match for the columns that should not be treated as UTF8. + + + + + Gets or sets a connection option. + + The keyword that identifies the connection option to modify. + + + + Retrieves the value corresponding to the supplied key from this . + + The key of the item to retrieve. + The value corresponding to the . + if was found within the connection string; + otherwise, . + contains a null value. + + + + Provides a means of reading a forward-only stream of rows from a MySQL database. This class cannot be inherited. + + + + To create a , you must call the + method of the object, rather than directly using a constructor. + + + While the is in use, the associated + is busy serving the , and no other operations can be performed + on the other than closing it. This is the case until the + method of the is called. + + + and + are the only properties that you can call after the is + closed. Though the property may be accessed at any time + while the exists, always call before returning + the value of to ensure an accurate return value. + + + For optimal performance, avoids creating + unnecessary objects or making unnecessary copies of data. As a result, multiple calls + to methods such as return a reference to the + same object. Use caution if you are modifying the underlying value of the objects + returned by methods such as . + + + + + + Gets the number of columns in the current row. + + The number of columns in the current row. + + + + Gets a value indicating whether the contains one or more rows. + + true if the contains one or more rows; otherwise false. + + + + Gets a value indicating whether the data reader is closed. + + true if the is closed; otherwise false. + + + + Gets the number of rows changed, inserted, or deleted by execution of the SQL statement. + + The number of rows changed, inserted, or deleted. + -1 for SELECT statements; 0 if no rows were affected or the statement failed. + + + + Overloaded. Gets the value of a column in its native format. + In C#, this property is the indexer for the class. + + The value of the specified column. + + + + Gets the value of a column in its native format. + [C#] In C#, this property is the indexer for the class. + + The value of the specified column. + + + + Gets a value indicating the depth of nesting for the current row. This method is not + supported currently and always returns 0. + + The depth of nesting for the current row. + + + + Closes the object. + + + + + Gets the value of the specified column as a Boolean. + + The column name. + The value of the specified column. + + + + Gets the value of the specified column as a Boolean. + + The zero-based column ordinal. + The value of the specified column. + + + + Gets the value of the specified column as a byte. + + The column name. + The value of the specified column. + + + + Gets the value of the specified column as a byte. + + The zero-based column ordinal. + The value of the specified column. + + + + Gets the value of the specified column as a sbyte. + + The column name. + The value of the specified column. + + + + Gets the value of the specified column as a sbyte. + + The zero-based column ordinal. + The value of the specified column. + + + + Reads a stream of bytes from the specified column offset into the buffer an array starting at the given buffer offset. + + The zero-based column ordinal. + The index within the field from which to begin the read operation. + The buffer into which to read the stream of bytes. + The index for buffer to begin the read operation. + The maximum length to copy into the buffer. + The actual number of bytes read. + + + + Gets the value of the specified column as a single character. + + The column name. + The value of the specified column. + + + + Gets the value of the specified column as a single character. + + The zero-based column ordinal. + The value of the specified column. + + + + Reads a stream of characters from the specified column offset into the buffer as an array starting at the given buffer offset. + + The zero-based column ordinal. + The index within the row from which to begin the read operation. + The buffer into which to copy the data. + The index with the buffer to which the data will be copied. + The maximum number of characters to read. + The actual number of characters read. + + + + Gets the name of the source data type. + + The zero-based column ordinal. + A string representing the name of the data type. + + + + Gets the value of the specified column as a object. + + + No conversions are performed; therefore, the data retrieved must already be a object. + Call IsDBNull to check for null values before calling this method. + + The column name. + The value of the specified column. + + + + Gets the value of the specified column as a object. + + + No conversions are performed; therefore, the data retrieved must already be a object. + Call IsDBNull to check for null values before calling this method. + + The zero-based column ordinal. + The value of the specified column. + + + + Gets the value of the specified column as a object. + + + No conversions are performed; therefore, the data retrieved must already be a object. + Call to check for null values before calling this method. + + + MySql allows date columns to contain the value '0000-00-00' and datetime + columns to contain the value '0000-00-00 00:00:00'. The DateTime structure cannot contain + or represent these values. To read a datetime value from a column that might + contain zero values, use . + + + The behavior of reading a zero datetime column using this method is defined by the + ZeroDateTimeBehavior connection string option. For more information on this option, + please refer to . + + + + The column name. + The value of the specified column. + + + + Gets the value of the specified column as a object. + + + No conversions are performed; therefore, the data retrieved must already be a object. + Call to check for null values before calling this method. + + + MySql allows date columns to contain the value '0000-00-00' and datetime + columns to contain the value '0000-00-00 00:00:00'. The DateTime structure cannot contain + or represent these values. To read a datetime value from a column that might + contain zero values, use . + + + The behavior of reading a zero datetime column using this method is defined by the + ZeroDateTimeBehavior connection string option. For more information on this option, + please refer to . + + + + The zero-based column ordinal. + The value of the specified column. + + + + Gets the value of the specified column as a . + + The name of the colum. + The value of the specified column as a . + + + + Gets the value of the specified column as a . + + The index of the colum. + The value of the specified column as a . + + + + Gets the value of the specified column as a object. + + + No conversions are performed; therefore, the data retrieved must already be a object. + Call to check for null values before calling this method. + + The column name. + The value of the specified column. + + + + Gets the value of the specified column as a object. + + + No conversions are performed; therefore, the data retrieved must already be a object. + Call to check for null values before calling this method. + + The zero-based column ordinal + The value of the specified column. + + + Gets the value of the specified column as a double-precision floating point number. + + No conversions are performed; therefore, the data retrieved must already be a object. + Call to check for null values before calling this method. + + The column name. + The value of the specified column. + + + Gets the value of the specified column as a double-precision floating point number. + + No conversions are performed; therefore, the data retrieved must already be a object. + Call to check for null values before calling this method. + + The zero-based column ordinal. + The value of the specified column. + + + + Gets the Type that is the data type of the object. + + The column name. + The data type of the specified column. + + + + Gets the Type that is the data type of the object. + + The zero-based column ordinal. + The data type of the specified column. + + + + Gets the value of the specified column as a single-precision floating point number. + + + No conversions are performed; therefore, the data retrieved must already be a object. + Call to check for null values before calling this method. + + The column name. + The value of the specified column. + + + + Gets the value of the specified column as a single-precision floating point number. + + + No conversions are performed; therefore, the data retrieved must already be a object. + Call to check for null values before calling this method. + + The zero-based column ordinal. + The value of the specified column. + + + + Gets the body definition of a routine. + + The column name. + The definition of the routine. + + + + Gets the value of the specified column as a globally-unique identifier(GUID). + + The name of the column. + The value of the specified column. + + + + Gets the value of the specified column as a globally-unique identifier(GUID). + + The zero-based column ordinal. + The value of the specified column. + + + Gets the value of the specified column as a 16-bit signed integer. + + No conversions are performed; therefore, the data retrieved must already be a value. + Call to check for null values before calling this method. + + The column name. + The value of the specified column. + + + Gets the value of the specified column as a 16-bit signed integer. + + No conversions are performed; therefore, the data retrieved must already be a value. + Call to check for null values before calling this method. + + The zero-based column ordinal. + The value of the specified column. + + + Gets the value of the specified column as a 32-bit signed integer. + + No conversions are performed; therefore, the data retrieved must already be a value. + Call to check for null values before calling this method. + + The column name. + The value of the specified column. + + + Gets the value of the specified column as a 32-bit signed integer. + + No conversions are performed; therefore, the data retrieved must already be a value. + Call to check for null values before calling this method. + + The zero-based column ordinal. + The value of the specified column. + + + Gets the value of the specified column as a 64-bit signed integer. + + No conversions are performed; therefore, the data retrieved must already be a value. + Call to check for null values before calling this method. + + The column name. + The value of the specified column. + + + Gets the value of the specified column as a 64-bit signed integer. + + No conversions are performed; therefore, the data retrieved must already be a value. + Call to check for null values before calling this method. + + The zero-based column ordinal. + The value of the specified column. + + + + Gets the name of the specified column. + + The zero-based column ordinal. + The name of the specified column. + + + + Gets the column ordinal, given the name of the column. + + The name of the column. + The zero-based column ordinal. + + + + Gets a stream to retrieve data from the specified column. + + The zero-based column ordinal. + A stream + + + + Gets the value of the specified column as a object. + + + No conversions are performed; therefore, the data retrieved must already be a object. + Call to check for null values before calling this method. + + The column name. + The value of the specified column. + + + + Gets the value of the specified column as a object. + + + No conversions are performed; therefore, the data retrieved must already be a object. + Call to check for null values before calling this method. + + The zero-based column ordinal. + The value of the specified column. + + + + Gets the value of the specified column as a object. + + + No conversions are performed; therefore, the data retrieved must already be a value. + Call to check for null values before calling this method. + + The column name. + The value of the specified column. + + + + Gets the value of the specified column as a object. + + + No conversions are performed; therefore, the data retrieved must already be a value. + Call to check for null values before calling this method. + + The zero-based column ordinal. + The value of the specified column. + + + + Gets the value of the specified column in its native format. + + The zero-based column ordinal. + The value of the specified column. + + + + Gets all attribute columns in the collection for the current row. + + An array of into which to copy the attribute columns. + The number of instances of in the array. + + + Gets the value of the specified column as a 16-bit unsigned integer. + + No conversions are performed; therefore, the data retrieved must already be a value. + Call to check for null values before calling this method. + + The column name. + The value of the specified column. + + + Gets the value of the specified column as a 16-bit unsigned integer. + + No conversions are performed; therefore, the data retrieved must already be a value. + Call to check for null values before calling this method. + + The zero-based column ordinal. + The value of the specified column. + + + Gets the value of the specified column as a 32-bit unsigned integer. + + No conversions are performed; therefore, the data retrieved must already be a value. + Call to check for null values before calling this method. + + The column name. + The value of the specified column. + + + Gets the value of the specified column as a 32-bit unsigned integer. + + No conversions are performed; therefore, the data retrieved must already be a value. + Call to check for null values before calling this method. + + The zero-based column ordinal. + The value of the specified column. + + + Gets the value of the specified column as a 64-bit unsigned integer. + + No conversions are performed; therefore, the data retrieved must already be a value. + Call to check for null values before calling this method. + + The column name. + The value of the specified column. + + + Gets the value of the specified column as a 64-bit unsigned integer. + + No conversions are performed; therefore, the data retrieved must already be a value. + Call to check for null values before calling this method. + + The zero-based column ordinal. + The value of the specified column. + + + + Returns a object for the requested column ordinal. + + The zero-based column ordinal. + A object. + + + + Gets a value indicating whether the column contains non-existent or missing values. + + The zero-based column ordinal. + true if the specified column is equivalent to ; otherwise false. + + + + Gets the value of the specified column as a . + + The index of the colum. + The value of the specified column as a . + + + + Gets the value of the specified column as a . + + The name of the colum. + The value of the specified column as a . + + + + Returns an that iterates through the . + + An that can be used to iterate through the rows in the data reader. + + + + Gets the value of the specified column as a type. + + Type. + The index of the column. + The value of the column. + + + + Describes the column metadata of the . + + A object. + + + + Advances the data reader to the next result when reading the results of batch SQL statements. + + if there are more result sets; otherwise . + + + + Advances the to the next record. + + true if there are more rows; otherwise false. + + + + Releases all resources used by the current instance of the class. + + + + + Summary description for ClientParam. + + + + + DB Operations Code + + + + + Specifies MySQL specific data type of a field, property, for use in a . + + + + + + A fixed precision and scale numeric value between -1038 + -1 and 10 38 -1. + + + + + The signed range is -128 to 127. The unsigned + range is 0 to 255. + + + + + A 16-bit signed integer. The signed range is + -32768 to 32767. The unsigned range is 0 to 65535 + + + + + Specifies a 24 (3 byte) signed or unsigned value. + + + + + A 32-bit signed integer + + + + + A 64-bit signed integer. + + + + + A small (single-precision) floating-point + number. Allowable values are -3.402823466E+38 to -1.175494351E-38, + 0, and 1.175494351E-38 to 3.402823466E+38. + + + + + A normal-size (double-precision) + floating-point number. Allowable values are -1.7976931348623157E+308 + to -2.2250738585072014E-308, 0, and 2.2250738585072014E-308 to + 1.7976931348623157E+308. + + + + + A timestamp. The range is '1970-01-01 00:00:00' to sometime in the + year 2037 + + + + + Date The supported range is '1000-01-01' to '9999-12-31'. + + + + + Time The range is '-838:59:59' to '838:59:59'. + + + + + DateTime The supported range is '1000-01-01 00:00:00' to + '9999-12-31 23:59:59'. + + + + + Datetime The supported range is '1000-01-01 00:00:00' to + '9999-12-31 23:59:59'. + + + + + A year in 2- or 4-digit format (default is 4-digit). The + allowable values are 1901 to 2155, 0000 in the 4-digit year + format, and 1970-2069 if you use the 2-digit format (70-69). + + + + + Obsolete Use Datetime or Date type + + + + + A variable-length string containing 0 to 65535 characters + + + + + Bit-field data type + + + + + Vector type + + + + + JSON + + + + + New Decimal + + + + + An enumeration. A string object that can have only one value, + chosen from the list of values 'value1', 'value2', ..., NULL + or the special "" error value. An ENUM can have a maximum of + 65535 distinct values + + + + + A set. A string object that can have zero or more values, each + of which must be chosen from the list of values 'value1', 'value2', + ... A SET can have a maximum of 64 members. + + + + + A binary column with a maximum length of 255 (2^8 - 1) + characters + + + + + A binary column with a maximum length of 16777215 (2^24 - 1) bytes. + + + + + A binary column with a maximum length of 4294967295 or + 4G (2^32 - 1) bytes. + + + + + A binary column with a maximum length of 65535 (2^16 - 1) bytes. + + + + + A variable-length string containing 0 to 255 bytes. + + + + + A fixed-length string. + + + + + Geometric (GIS) data type. + + + + + Unsigned 8-bit value. + + + + + Unsigned 16-bit value. + + + + + Unsigned 24-bit value. + + + + + Unsigned 32-bit value. + + + + + Unsigned 64-bit value. + + + + + Fixed length binary string. + + + + + Variable length binary string. + + + + + A text column with a maximum length of 255 (2^8 - 1) characters. + + + + + A text column with a maximum length of 16777215 (2^24 - 1) characters. + + + + + A text column with a maximum length of 4294967295 or + 4G (2^32 - 1) characters. + + + + + A text column with a maximum length of 65535 (2^16 - 1) characters. + + + + + A guid column. + + + + + Allows the user to specify the type of connection that should + be used. + + + + + TCP/IP style connection. Works everywhere. + + + + + TCP/IP style connection. Works everywhere. + + + + + TCP/IP style connection. Works everywhere. + + + + + Named pipe connection. Works only on Windows systems. + + + + + Named pipe connection. Works only on Windows systems. + + + + + Unix domain socket connection. Works only with Unix systems. + + + + + Unix domain socket connection. Works only with Unix systems. + + + + + Shared memory connection. Currently works only with Windows systems. + + + + + Shared memory connection. Currently works only with Windows systems. + + + + + SSL options for connection. + + + + + Do not use SSL. + + + + + Do not use SSL. + + + + + Use SSL, if server supports it. This option is only available for the classic protocol. + + + + + Use SSL, if server supports it. This option is only available for the classic protocol. + + + + + Always use SSL. Deny connection if server does not support SSL. + Do not perform server certificate validation. + This is the default SSL mode when the same isn't specified as part of the connection string. + + + + + Always use SSL. Validate server SSL certificate, but different host name mismatch. + + + + + Always use SSL and perform full certificate validation. + + + + + Specifies the connection types supported + + + + + Use TCP/IP sockets. + + + + + Use client library. + + + + + Use MySQL embedded server. + + + + + Defines the location of the certificate store. + + + + + Do not use certificate store. + + + + + Use certificate store for the current user. + + + + + User certificate store for the machine. + + + + + Specifies the authentication mechanism that should be used. + + + + + If SSL is enabled or Unix sockets are being used, sets PLAIN as the authentication mechanism; + otherwise, it tries to use MYSQL41 and then SHA256_MEMORY. + + + + + Authenticate using PLAIN. + + + + + Authenticate using MYSQL41. + + + + + Authenticate using EXTERNAL. + + + + + Authenticate using SHA256_MEMORY. + + + + + Defines waiting options that may be used with row locking options. + + + + + Waits until the blocking transaction releases the row lock. + + + + + Never waits to acquire a row lock. The query executes immediately, + failing with an error if a requested row is locked. + + + + + Never waits to acquire a row lock. The query executes immediately, + removing locked rows from the result set. + + + + + Defines the type of compression used when data is exchanged between client and server. + + + + + Uses compression if client and server are able to reach a concensus. Otherwise, compression + is not used. + + + + + Enforces the use of compression. If no concensus is reached, an error is raised. + + + + + Disables compression. + + + + + Defines the compression algorithms that can be used. + + + + + The warnings that cause a connection to close. + + + + + Controls which column type should be read as type System.Guid. + + + + + Same as Char36 when OldGuids equals False, otherwise, the same as LittleEndianBinary16. + + + + + No column types are read or written as type Guid. + + + + + Char(36) columns are read or written as type Guid using lowercase hex with hyphens, which match UUID(). + + + + + Char(32) columns are read or written as type Guid using lowercase hex without hyphens. + + + + + Binary(16) columns are read or written as type Guid using big-endian byte order, which matches UUID_TO_BIN(x). + + + + + Binary(16) columns are read or written as type Guid using big-endian byte order + with time parts swapped, which matches UUID_TO_BIN(x,1). + + + + + Binary(16) columns are read or written as type Guid using little-endian byte order, + that is, the byte order used by System.Guid.ToByteArray and System.Guid.#ctor(System.Byte[]). + + + + + Defines the different APIs that can be used for Kerberos authentication. + + + + + Use and then fall back to in case of error. + + + + + Use MS Security Support Provider Interface (SSPI). + + + + + Use Generic Security Services API (GSSAPI) through MIT Kerberos library. + + + + + Collection of error codes that can be returned by the server + + + + + + + + + + + Error level + + + + + Error code + + + + + Error message + + + + + Provides a reference to error codes returned by MySQL. + + + + + ER_HASHCHK + + + + ER_NISAMCHK + + + + ER_NO + + + + ER_YES + + + The file couldn't be created. + ER_CANT_CREATE_FILE + + + The table couldn't be created. + ER_CANT_CREATE_TABLE + + + The database couldn't be created. + ER_CANT_CREATE_DB + + + The database couldn't be created, it already exists. + ER_DB_CREATE_EXISTS + + + The database couldn't be dropped, it doesn't exist. + ER_DB_DROP_EXISTS + + + The database couldn't be dropped, the file can't be deleted. + ER_DB_DROP_DELETE + + + The database couldn't be dropped, the directory can't be deleted. + ER_DB_DROP_RMDIR + + + The file couldn't be deleted. + ER_CANT_DELETE_FILE + + + The record couldn't be read from the system table. + ER_CANT_FIND_SYSTEM_REC + + + The status couldn't be retrieved. + ER_CANT_GET_STAT + + + The working directory couldn't be retrieved. + ER_CANT_GET_WD + + + The file couldn't be locked. + ER_CANT_LOCK + + + The file couldn't be opened. + ER_CANT_OPEN_FILE + + + The file couldn't be found. + ER_FILE_NOT_FOUND + + + The directory couldn't be read. + ER_CANT_READ_DIR + + + The working directory couldn't be entered. + ER_CANT_SET_WD + + + The record changed since it was last read. + ER_CHECKREAD + + + The disk is full. + ER_DISK_FULL + + + + There is already a key with the given values. + + + + An error occurred when closing the file. + ER_ERROR_ON_CLOSE + + + An error occurred when reading from the file. + ER_ERROR_ON_READ + + + An error occurred when renaming then file. + ER_ERROR_ON_RENAME + + + An error occurred when writing to the file. + ER_ERROR_ON_WRITE + + + The file is in use. + ER_FILE_USED + + + Sorting has been aborted. + ER_FILSORT_ABORT + + + The view doesn't exist. + ER_FORM_NOT_FOUND + + + Got the specified error from the table storage engine. + ER_GET_ERRNO + + + The table storage engine doesn't support the specified option. + ER_ILLEGAL_HA + + + + The specified key was not found. + + + + The file contains incorrect information. + ER_NOT_FORM_FILE + + + The key file is incorrect for the table, it should be repaired. + ER_NOT_KEYFILE + + + The key file is old for the table, it should be repaired. + ER_OLD_KEYFILE + + + The table is read-only + ER_OPEN_AS_READONLY + + + The server is out of memory, it should be restarted. + ER_OUTOFMEMORY + + + The server is out of sort-memory, the sort buffer size should be increased. + ER_OUT_OF_SORTMEMORY + + + An unexpected EOF was found when reading from the file. + ER_UNEXPECTED_EOF + + + Too many connections are open. + ER_CON_COUNT_ERROR + + + The server is out of resources, check if MySql or some other process is using all available memory. + ER_OUT_OF_RESOURCES + + + + Given when the connection is unable to successfully connect to host. + + + + The handshake was invalid. + ER_HANDSHAKE_ERROR + + + Access was denied for the specified user using the specified database. + ER_DBACCESS_DENIED_ERROR + + + + Normally returned when an incorrect password is given + + + + No database has been selected. + ER_NO_DB_ERROR + + + The command is unknown. + ER_UNKNOWN_COM_ERROR + + + The specified column cannot be NULL. + ER_BAD_NULL_ERROR + + + The specified database is not known. + + + The specified table already exists. + ER_TABLE_EXISTS_ERROR + + + The specified table is unknown. + ER_BAD_TABLE_ERROR + + + The specified column is ambiguous. + ER_NON_UNIQ_ERROR + + + The server is currently being shutdown. + ER_SERVER_SHUTDOWN + + + The specified columns is unknown. + ER_BAD_FIELD_ERROR + + + The specified column isn't in GROUP BY. + ER_WRONG_FIELD_WITH_GROUP + + + The specified columns cannot be grouped on. + ER_WRONG_GROUP_FIELD + + + There are sum functions and columns in the same statement. + ER_WRONG_SUM_SELECT + + + The column count doesn't match the value count. + ER_WRONG_VALUE_COUNT + + + The identifier name is too long. + ER_TOO_LONG_IDENT + + + The column name is duplicated. + ER_DUP_FIELDNAME + + + + Duplicate Key Name + + + + + Duplicate Key Entry + + + + The column specifier is incorrect. + ER_WRONG_FIELD_SPEC + + + An error occurred when parsing the statement. + ER_PARSE_ERROR + + + The statement is empty. + ER_EMPTY_QUERY + + + The table alias isn't unique. + ER_NONUNIQ_TABLE + + + The default value is invalid for the specified field. + ER_INVALID_DEFAULT + + + The table has multiple primary keys defined. + ER_MULTIPLE_PRI_KEY + + + Too many keys were defined for the table. + ER_TOO_MANY_KEYS + + + Too many parts to the keys were defined for the table. + ER_TOO_MANY_KEY_PARTS + + + The specified key is too long + ER_TOO_LONG_KEY + + + The specified key column doesn't exist in the table. + ER_KEY_COLUMN_DOES_NOT_EXITS + + + The BLOB column was used as a key, this can't be done. + ER_BLOB_USED_AS_KEY + + + The column length is too big for the specified column type. + ER_TOO_BIG_FIELDLENGTH + + + There can only be one auto-column, and it must be defined as a PK. + ER_WRONG_AUTO_KEY + + + The server is ready to accept connections. + ER_READY + + + + ER_NORMAL_SHUTDOWN + + + The server received the specified signal and is aborting. + ER_GOT_SIGNAL + + + The server shutdown is complete. + ER_SHUTDOWN_COMPLETE + + + The server is forcing close of the specified thread. + ER_FORCING_CLOSE + + + An error occurred when creating the IP socket. + ER_IPSOCK_ERROR + + + The table has no index like the one used in CREATE INDEX. + ER_NO_SUCH_INDEX + + + The field separator argument is not what is expected, check the manual. + ER_WRONG_FIELD_TERMINATORS + + + The BLOB columns must terminated, fixed row lengths cannot be used. + ER_BLOBS_AND_NO_TERMINATED + + + The text file cannot be read. + ER_TEXTFILE_NOT_READABLE + + + The specified file already exists. + ER_FILE_EXISTS_ERROR + + + Information returned by the LOAD statement. + ER_LOAD_INFO + + + Information returned by an UPDATE statement. + ER_ALTER_INFO + + + The prefix key is incorrect. + ER_WRONG_SUB_KEY + + + All columns cannot be removed from a table, use DROP TABLE instead. + ER_CANT_REMOVE_ALL_FIELDS + + + Cannot DROP, check that the column or key exists. + ER_CANT_DROP_FIELD_OR_KEY + + + Information returned by an INSERT statement. + ER_INSERT_INFO + + + The target table cannot be specified for update in FROM clause. + ER_UPDATE_TABLE_USED + + + The specified thread ID is unknown. + ER_NO_SUCH_THREAD + + + The thread cannot be killed, the current user is not the owner. + ER_KILL_DENIED_ERROR + + + No tables used in the statement. + ER_NO_TABLES_USED + + + Too many string have been used for the specified column and SET. + ER_TOO_BIG_SET + + + A unique filename couldn't be generated. + ER_NO_UNIQUE_LOGFILE + + + The specified table was locked with a READ lock, and can't be updated. + ER_TABLE_NOT_LOCKED_FOR_WRITE + + + The specified table was not locked with LOCK TABLES. + ER_TABLE_NOT_LOCKED + + + BLOB and Text columns cannot have a default value. + ER_BLOB_CANT_HAVE_DEFAULT + + + The specified database name is incorrect. + ER_WRONG_DB_NAME + + + The specified table name is incorrect. + ER_WRONG_TABLE_NAME + + + The SELECT command would examine more than MAX_JOIN_SIZE rows, check the WHERE clause and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is ok. + ER_TOO_BIG_SELECT + + + An unknown error occurred. + ER_UNKNOWN_ERROR + + + The specified procedure is unknown. + ER_UNKNOWN_PROCEDURE + + + The number of parameters provided for the specified procedure is incorrect. + ER_WRONG_PARAMCOUNT_TO_PROCEDURE + + + The parameters provided for the specified procedure are incorrect. + ER_WRONG_PARAMETERS_TO_PROCEDURE + + + The specified table is unknown. + ER_UNKNOWN_TABLE + + + The specified column has been specified twice. + ER_FIELD_SPECIFIED_TWICE + + + The group function has been incorrectly used. + ER_INVALID_GROUP_FUNC_USE + + + The specified table uses an extension that doesn't exist in this MySQL version. + ER_UNSUPPORTED_EXTENSION + + + The table must have at least one column. + ER_TABLE_MUST_HAVE_COLUMNS + + + The specified table is full. + ER_RECORD_FILE_FULL + + + The specified character set is unknown. + ER_UNKNOWN_CHARACTER_SET + + + Too many tables, MySQL can only use the specified number of tables in a JOIN. + ER_TOO_MANY_TABLES + + + Too many columns + ER_TOO_MANY_FIELDS + + + The row size is too large, the maximum row size for the used tables (not counting BLOBS) is specified, change some columns or BLOBS. + ER_TOO_BIG_ROWSIZE + + + A thread stack overrun occurred. Stack statistics are specified. + ER_STACK_OVERRUN + + + A cross dependency was found in the OUTER JOIN, examine the ON conditions. + ER_WRONG_OUTER_JOIN + + + The table handler doesn't support NULL in the given index, change specified column to be NOT NULL or use another handler. + ER_NULL_COLUMN_IN_INDEX + + + The specified user defined function cannot be loaded. + ER_CANT_FIND_UDF + + + The specified user defined function cannot be initialised. + ER_CANT_INITIALIZE_UDF + + + No paths are allowed for the shared library. + ER_UDF_NO_PATHS + + + The specified user defined function already exists. + ER_UDF_EXISTS + + + The specified shared library cannot be opened. + ER_CANT_OPEN_LIBRARY + + + The specified symbol cannot be found in the library. + ER_CANT_FIND_DL_ENTRY + + + The specified function is not defined. + ER_FUNCTION_NOT_DEFINED + + + The specified host is blocked because of too many connection errors, unblock with 'mysqladmin flush-hosts'. + ER_HOST_IS_BLOCKED + + + + The given host is not allowed to connect + + + + + The anonymous user is not allowed to connect + + + + + The given password is not allowed + + + + + The given password does not match + + + + Information returned by an UPDATE statement. + ER_UPDATE_INFO + + + A new thread couldn't be created. + ER_CANT_CREATE_THREAD + + + The column count doesn't match the value count. + ER_WRONG_VALUE_COUNT_ON_ROW + + + The specified table can't be re-opened. + ER_CANT_REOPEN_TABLE + + + The NULL value has been used incorrectly. + ER_INVALID_USE_OF_NULL + + + The regular expression contains an error. + ER_REGEXP_ERROR + + + GROUP columns (MIN(), MAX(), COUNT(), ...) cannot be mixes with no GROUP columns if there is not GROUP BY clause. + ER_MIX_OF_GROUP_FUNC_AND_FIELDS + + + + ER_NONEXISTING_GRANT + + + + ER_TABLEACCESS_DENIED_ERROR + + + + ER_COLUMNACCESS_DENIED_ERROR + + + + ER_ILLEGAL_GRANT_FOR_TABLE + + + + ER_GRANT_WRONG_HOST_OR_USER + + + + ER_NO_SUCH_TABLE + + + + ER_NONEXISTING_TABLE_GRANT + + + + ER_NOT_ALLOWED_COMMAND + + + + ER_SYNTAX_ERROR + + + + ER_DELAYED_CANT_CHANGE_LOCK + + + + ER_TOO_MANY_DELAYED_THREADS + + + + ER_ABORTING_CONNECTION + + + + An attempt was made to send or receive a packet larger than + max_allowed_packet_size + + + + + ER_NET_READ_ERROR_FROM_PIPE + + + + ER_NET_FCNTL_ERROR + + + + ER_NET_PACKETS_OUT_OF_ORDER + + + + ER_NET_UNCOMPRESS_ERROR + + + + ER_NET_READ_ERROR + + + + ER_NET_READ_INTERRUPTED + + + + ER_NET_ERROR_ON_WRITE + + + + ER_NET_WRITE_INTERRUPTED + + + + ER_TOO_LONG_STRING + + + + ER_TABLE_CANT_HANDLE_BLOB + + + + ER_TABLE_CANT_HANDLE_AUTO_INCREMENT + + + + ER_DELAYED_INSERT_TABLE_LOCKED + + + + ER_WRONG_COLUMN_NAME + + + + ER_WRONG_KEY_COLUMN + + + + ER_WRONG_MRG_TABLE + + + + ER_DUP_UNIQUE + + + + ER_BLOB_KEY_WITHOUT_LENGTH + + + + ER_PRIMARY_CANT_HAVE_NULL + + + + ER_TOO_MANY_ROWS + + + + ER_REQUIRES_PRIMARY_KEY + + + + ER_NO_RAID_COMPILED + + + + ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE + + + + ER_KEY_DOES_NOT_EXITS + + + + ER_CHECK_NO_SUCH_TABLE + + + + ER_CHECK_NOT_IMPLEMENTED + + + + ER_CANT_DO_THIS_DURING_AN_TRANSACTION + + + + ER_ERROR_DURING_COMMIT + + + + ER_ERROR_DURING_ROLLBACK + + + + ER_ERROR_DURING_FLUSH_LOGS + + + + ER_ERROR_DURING_CHECKPOINT + + + + ER_NEW_ABORTING_CONNECTION + + + + ER_DUMP_NOT_IMPLEMENTED + + + + ER_FLUSH_SOURCE_BINLOG_CLOSED + + + + ER_INDEX_REBUILD + + + + ER_SOURCE + + + + ER_SOURCE_NET_READ + + + + ER_SOURCE_NET_WRITE + + + + ER_FT_MATCHING_KEY_NOT_FOUND + + + + ER_LOCK_OR_ACTIVE_TRANSACTION + + + + ER_UNKNOWN_SYSTEM_VARIABLE + + + + ER_CRASHED_ON_USAGE + + + + ER_CRASHED_ON_REPAIR + + + + ER_WARNING_NOT_COMPLETE_ROLLBACK + + + + ER_TRANS_CACHE_FULL + + + + ER_REPLICA_MUST_STOP + + + + ER_REPLICA_NOT_RUNNING + + + + ER_BAD_REPLICA + + + + ER_SOURCE_INFO + + + + ER_REPLICA_THREAD + + + + ER_TOO_MANY_USER_CONNECTIONS + + + + ER_SET_CONSTANTS_ONLY + + + + ER_LOCK_WAIT_TIMEOUT + + + + ER_LOCK_TABLE_FULL + + + + ER_READ_ONLY_TRANSACTION + + + + ER_DROP_DB_WITH_READ_LOCK + + + + ER_CREATE_DB_WITH_READ_LOCK + + + + ER_WRONG_ARGUMENTS + + + + ER_NO_PERMISSION_TO_CREATE_USER + + + + ER_UNION_TABLES_IN_DIFFERENT_DIR + + + + ER_LOCK_DEADLOCK + + + + ER_TABLE_CANT_HANDLE_FT + + + + ER_CANNOT_ADD_FOREIGN + + + + ER_NO_REFERENCED_ROW + + + + ER_ROW_IS_REFERENCED + + + + ER_CONNECT_TO_SOURCE + + + + ER_QUERY_ON_SOURCE + + + + ER_ERROR_WHEN_EXECUTING_COMMAND + + + + ER_WRONG_USAGE + + + + ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT + + + + ER_CANT_UPDATE_WITH_READLOCK + + + + ER_MIXING_NOT_ALLOWED + + + + ER_DUP_ARGUMENT + + + + ER_USER_LIMIT_REACHED + + + + ER_SPECIFIC_ACCESS_DENIED_ERROR + + + + ER_LOCAL_VARIABLE + + + + ER_GLOBAL_VARIABLE + + + + ER_NO_DEFAULT + + + + ER_WRONG_VALUE_FOR_VAR + + + + ER_WRONG_TYPE_FOR_VAR + + + + ER_VAR_CANT_BE_READ + + + + ER_CANT_USE_OPTION_HERE + + + + ER_NOT_SUPPORTED_YET + + + + ER_SOURCE_FATAL_ERROR_READING_BINLOG + + + + ER_REPLICA_IGNORED_TABLE + + + + ER_INCORRECT_GLOBAL_LOCAL_VAR + + + + ER_WRONG_FK_DEF + + + + ER_KEY_REF_DO_NOT_MATCH_TABLE_REF + + + + ER_OPERAND_COLUMNS + + + + ER_SUBQUERY_NO_1_ROW + + + + ER_UNKNOWN_STMT_HANDLER + + + + ER_CORRUPT_HELP_DB + + + + ER_CYCLIC_REFERENCE + + + + ER_AUTO_CONVERT + + + + ER_ILLEGAL_REFERENCE + + + + ER_DERIVED_MUST_HAVE_ALIAS + + + + ER_SELECT_REDUCED + + + + ER_TABLENAME_NOT_ALLOWED_HERE + + + + ER_NOT_SUPPORTED_AUTH_MODE + + + + ER_SPATIAL_CANT_HAVE_NULL + + + + ER_COLLATION_CHARSET_MISMATCH + + + + ER_REPLICA_WAS_RUNNING + + + + ER_REPLICA_WAS_NOT_RUNNING + + + + ER_TOO_BIG_FOR_UNCOMPRESS + + + + ER_ZLIB_Z_MEM_ERROR + + + + ER_ZLIB_Z_BUF_ERROR + + + + ER_ZLIB_Z_DATA_ERROR + + + + ER_CUT_VALUE_GROUP_CONCAT + + + + ER_WARN_TOO_FEW_RECORDS + + + + ER_WARN_TOO_MANY_RECORDS + + + + ER_WARN_NULL_TO_NOTNULL + + + + ER_WARN_DATA_OUT_OF_RANGE + + + + WARN_DATA_TRUNCATED + + + + ER_WARN_USING_OTHER_HANDLER + + + + ER_CANT_AGGREGATE_2COLLATIONS + + + + ER_DROP_USER + + + + ER_REVOKE_GRANTS + + + + ER_CANT_AGGREGATE_3COLLATIONS + + + + ER_CANT_AGGREGATE_NCOLLATIONS + + + + ER_VARIABLE_IS_NOT_STRUCT + + + + ER_UNKNOWN_COLLATION + + + + ER_REPLICA_IGNORED_SSL_PARAMS + + + + ER_SERVER_IS_IN_SECURE_AUTH_MODE + + + + ER_WARN_FIELD_RESOLVED + + + + ER_BAD_REPLICA_UNTIL_COND + + + + ER_MISSING_SKIP_REPLICA + + + + ER_UNTIL_COND_IGNORED + + + + ER_WRONG_NAME_FOR_INDEX + + + + ER_WRONG_NAME_FOR_CATALOG + + + + ER_WARN_QC_RESIZE + + + + ER_BAD_FT_COLUMN + + + + ER_UNKNOWN_KEY_CACHE + + + + ER_WARN_HOSTNAME_WONT_WORK + + + + ER_UNKNOWN_STORAGE_ENGINE + + + + ER_WARN_DEPRECATED_SYNTAX + + + + ER_NON_UPDATABLE_TABLE + + + + ER_FEATURE_DISABLED + + + + ER_OPTION_PREVENTS_STATEMENT + + + + ER_DUPLICATED_VALUE_IN_TYPE + + + + ER_TRUNCATED_WRONG_VALUE + + + + ER_TOO_MUCH_AUTO_TIMESTAMP_COLS + + + + ER_INVALID_ON_UPDATE + + + + ER_UNSUPPORTED_PS + + + + ER_GET_ERRMSG + + + + ER_GET_TEMPORARY_ERRMSG + + + + ER_UNKNOWN_TIME_ZONE + + + + ER_WARN_INVALID_TIMESTAMP + + + + ER_INVALID_CHARACTER_STRING + + + + ER_WARN_ALLOWED_PACKET_OVERFLOWED + + + + ER_CONFLICTING_DECLARATIONS + + + + ER_SP_NO_RECURSIVE_CREATE + + + + ER_SP_ALREADY_EXISTS + + + + ER_SP_DOES_NOT_EXIST + + + + ER_SP_DROP_FAILED + + + + ER_SP_STORE_FAILED + + + + ER_SP_LILABEL_MISMATCH + + + + ER_SP_LABEL_REDEFINE + + + + ER_SP_LABEL_MISMATCH + + + + ER_SP_UNINIT_VAR + + + + ER_SP_BADSELECT + + + + ER_SP_BADRETURN + + + + ER_SP_BADSTATEMENT + + + + ER_UPDATE_LOG_DEPRECATED_IGNORED + + + + ER_UPDATE_LOG_DEPRECATED_TRANSLATED + + + + ER_QUERY_INTERRUPTED + + + + ER_SP_WRONG_NO_OF_ARGS + + + + ER_SP_COND_MISMATCH + + + + ER_SP_NORETURN + + + + ER_SP_NORETURNEND + + + + ER_SP_BAD_CURSOR_QUERY + + + + ER_SP_BAD_CURSOR_SELECT + + + + ER_SP_CURSOR_MISMATCH + + + + ER_SP_CURSOR_ALREADY_OPEN + + + + ER_SP_CURSOR_NOT_OPEN + + + + ER_SP_UNDECLARED_VAR + + + + ER_SP_WRONG_NO_OF_FETCH_ARGS + + + + ER_SP_FETCH_NO_DATA + + + + ER_SP_DUP_PARAM + + + + ER_SP_DUP_VAR + + + + ER_SP_DUP_COND + + + + ER_SP_DUP_CURS + + + + ER_SP_CANT_ALTER + + + + ER_SP_SUBSELECT_NYI + + + + ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG + + + + ER_SP_VARCOND_AFTER_CURSHNDLR + + + + ER_SP_CURSOR_AFTER_HANDLER + + + + ER_SP_CASE_NOT_FOUND + + + + ER_FPARSER_TOO_BIG_FILE + + + + ER_FPARSER_BAD_HEADER + + + + ER_FPARSER_EOF_IN_COMMENT + + + + ER_FPARSER_ERROR_IN_PARAMETER + + + + ER_FPARSER_EOF_IN_UNKNOWN_PARAMETER + + + + ER_VIEW_NO_EXPLAIN + + + + ER_FRM_UNKNOWN_TYPE + + + + ER_WRONG_OBJECT + + + + ER_NONUPDATEABLE_COLUMN + + + + ER_VIEW_SELECT_DERIVED + + + + ER_VIEW_SELECT_CLAUSE + + + + ER_VIEW_SELECT_VARIABLE + + + + ER_VIEW_SELECT_TMPTABLE + + + + ER_VIEW_WRONG_LIST + + + + ER_WARN_VIEW_MERGE + + + + ER_WARN_VIEW_WITHOUT_KEY + + + + ER_VIEW_INVALID + + + + ER_SP_NO_DROP_SP + + + + ER_SP_GOTO_IN_HNDLR + + + + ER_TRG_ALREADY_EXISTS + + + + ER_TRG_DOES_NOT_EXIST + + + + ER_TRG_ON_VIEW_OR_TEMP_TABLE + + + + ER_TRG_CANT_CHANGE_ROW + + + + ER_TRG_NO_SUCH_ROW_IN_TRG + + + + ER_NO_DEFAULT_FOR_FIELD + + + + ER_DIVISION_BY_ZERO + + + + ER_TRUNCATED_WRONG_VALUE_FOR_FIELD + + + + ER_ILLEGAL_VALUE_FOR_TYPE + + + + ER_VIEW_NONUPD_CHECK + + + + ER_VIEW_CHECK_FAILED + + + + ER_PROCACCESS_DENIED_ERROR + + + + ER_RELAY_LOG_FAIL + + + + ER_PASSWD_LENGTH + + + + ER_UNKNOWN_TARGET_BINLOG + + + + ER_IO_ERR_LOG_INDEX_READ + + + + ER_BINLOG_PURGE_PROHIBITED + + + + ER_FSEEK_FAIL + + + + ER_BINLOG_PURGE_FATAL_ERR + + + + ER_LOG_IN_USE + + + + ER_LOG_PURGE_UNKNOWN_ERR + + + + ER_RELAY_LOG_INIT + + + + ER_NO_BINARY_LOGGING + + + + ER_RESERVED_SYNTAX + + + + ER_WSAS_FAILED + + + + ER_DIFF_GROUPS_PROC + + + + ER_NO_GROUP_FOR_PROC + + + + ER_ORDER_WITH_PROC + + + + ER_LOGGING_PROHIBIT_CHANGING_OF + + + + ER_NO_FILE_MAPPING + + + + ER_WRONG_MAGIC + + + + ER_PS_MANY_PARAM + + + + ER_KEY_PART_0 + + + + ER_VIEW_CHECKSUM + + + + ER_VIEW_MULTIUPDATE + + + + ER_VIEW_NO_INSERT_FIELD_LIST + + + + ER_VIEW_DELETE_MERGE_VIEW + + + + ER_CANNOT_USER + + + + ER_XAER_NOTA + + + + ER_XAER_INVAL + + + + ER_XAER_RMFAIL + + + + ER_XAER_OUTSIDE + + + + ER_XAER_RMERR + + + + ER_XA_RBROLLBACK + + + + ER_NONEXISTING_PROC_GRANT + + + + ER_PROC_AUTO_GRANT_FAIL + + + + ER_PROC_AUTO_REVOKE_FAIL + + + + ER_DATA_TOO_LONG + + + + ER_SP_BAD_SQLSTATE + + + + ER_STARTUP + + + + ER_LOAD_FROM_FIXED_SIZE_ROWS_TO_VAR + + + + ER_CANT_CREATE_USER_WITH_GRANT + + + + ER_WRONG_VALUE_FOR_TYPE + + + + ER_TABLE_DEF_CHANGED + + + + ER_SP_DUP_HANDLER + + + + ER_SP_NOT_VAR_ARG + + + + ER_SP_NO_RETSET + + + + ER_CANT_CREATE_GEOMETRY_OBJECT + + + + ER_FAILED_ROUTINE_BREAK_BINLOG + + + + ER_BINLOG_UNSAFE_ROUTINE + + + + ER_BINLOG_CREATE_ROUTINE_NEED_SUPER + + + + ER_EXEC_STMT_WITH_OPEN_CURSOR + + + + ER_STMT_HAS_NO_OPEN_CURSOR + + + + ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG + + + + ER_NO_DEFAULT_FOR_VIEW_FIELD + + + + ER_SP_NO_RECURSION + + + + ER_TOO_BIG_SCALE + + + + ER_TOO_BIG_PRECISION + + + + ER_M_BIGGER_THAN_D + + + + ER_WRONG_LOCK_OF_SYSTEM_TABLE + + + + ER_CONNECT_TO_FOREIGN_DATA_SOURCE + + + + ER_QUERY_ON_FOREIGN_DATA_SOURCE + + + + ER_FOREIGN_DATA_SOURCE_DOESNT_EXIST + + + + ER_FOREIGN_DATA_STRING_INVALID_CANT_CREATE + + + + ER_FOREIGN_DATA_STRING_INVALID + + + + ER_CANT_CREATE_FEDERATED_TABLE + + + + ER_TRG_IN_WRONG_SCHEMA + + + + ER_STACK_OVERRUN_NEED_MORE + + + + ER_TOO_LONG_BODY + + + + ER_WARN_CANT_DROP_DEFAULT_KEYCACHE + + + + ER_TOO_BIG_DISPLAYWIDTH + + + + ER_XAER_DUPID + + + + ER_DATETIME_FUNCTION_OVERFLOW + + + + ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG + + + + ER_VIEW_PREVENT_UPDATE + + + + ER_PS_NO_RECURSION + + + + ER_SP_CANT_SET_AUTOCOMMIT + + + + ER_MALFORMED_DEFINER + + + + ER_VIEW_FRM_NO_USER + + + + ER_VIEW_OTHER_USER + + + + ER_NO_SUCH_USER + + + + ER_FORBID_SCHEMA_CHANGE + + + + ER_ROW_IS_REFERENCED_2 + + + + ER_NO_REFERENCED_ROW_2 + + + + ER_SP_BAD_VAR_SHADOW + + + + ER_TRG_NO_DEFINER + + + + ER_OLD_FILE_FORMAT + + + + ER_SP_RECURSION_LIMIT + + + + ER_SP_PROC_TABLE_CORRUPT + + + + ER_SP_WRONG_NAME + + + + ER_TABLE_NEEDS_UPGRADE + + + + ER_SP_NO_AGGREGATE + + + + ER_MAX_PREPARED_STMT_COUNT_REACHED + + + + ER_VIEW_RECURSIVE + + + + ER_NON_GROUPING_FIELD_USED + + + + ER_TABLE_CANT_HANDLE_SPKEYS + + + + ER_NO_TRIGGERS_ON_SYSTEM_SCHEMA + + + + ER_REMOVED_SPACES + + + + ER_AUTOINC_READ_FAILED + + + + ER_USERNAME + + + + ER_HOSTNAME + + + + ER_WRONG_STRING_LENGTH + + + + ER_NON_INSERTABLE_TABLE + + + + ER_ADMIN_WRONG_MRG_TABLE + + + + ER_TOO_HIGH_LEVEL_OF_NESTING_FOR_SELECT + + + + ER_NAME_BECOMES_EMPTY + + + + ER_AMBIGUOUS_FIELD_TERM + + + + ER_FOREIGN_SERVER_EXISTS + + + + ER_FOREIGN_SERVER_DOESNT_EXIST + + + + ER_ILLEGAL_HA_CREATE_OPTION + + + + ER_PARTITION_REQUIRES_VALUES_ERROR + + + + ER_PARTITION_WRONG_VALUES_ERROR + + + + ER_PARTITION_MAXVALUE_ERROR + + + + ER_PARTITION_SUBPARTITION_ERROR + + + + ER_PARTITION_SUBPART_MIX_ERROR + + + + ER_PARTITION_WRONG_NO_PART_ERROR + + + + ER_PARTITION_WRONG_NO_SUBPART_ERROR + + + + ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR + + + + ER_NO_CONST_EXPR_IN_RANGE_OR_LIST_ERROR + + + + ER_FIELD_NOT_FOUND_PART_ERROR + + + + ER_LIST_OF_FIELDS_ONLY_IN_HASH_ERROR + + + + ER_INCONSISTENT_PARTITION_INFO_ERROR + + + + ER_PARTITION_FUNC_NOT_ALLOWED_ERROR + + + + ER_PARTITIONS_MUST_BE_DEFINED_ERROR + + + + ER_RANGE_NOT_INCREASING_ERROR + + + + ER_INCONSISTENT_TYPE_OF_FUNCTIONS_ERROR + + + + ER_MULTIPLE_DEF_CONST_IN_LIST_PART_ERROR + + + + ER_PARTITION_ENTRY_ERROR + + + + ER_MIX_HANDLER_ERROR + + + + ER_PARTITION_NOT_DEFINED_ERROR + + + + ER_TOO_MANY_PARTITIONS_ERROR + + + + ER_SUBPARTITION_ERROR + + + + ER_CANT_CREATE_HANDLER_FILE + + + + ER_BLOB_FIELD_IN_PART_FUNC_ERROR + + + + ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF + + + + ER_NO_PARTS_ERROR + + + + ER_PARTITION_MGMT_ON_NONPARTITIONED + + + + ER_FOREIGN_KEY_ON_PARTITIONED + + + + ER_DROP_PARTITION_NON_EXISTENT + + + + ER_DROP_LAST_PARTITION + + + + ER_COALESCE_ONLY_ON_HASH_PARTITION + + + + ER_REORG_HASH_ONLY_ON_SAME_NO + + + + ER_REORG_NO_PARAM_ERROR + + + + ER_ONLY_ON_RANGE_LIST_PARTITION + + + + ER_ADD_PARTITION_SUBPART_ERROR + + + + ER_ADD_PARTITION_NO_NEW_PARTITION + + + + ER_COALESCE_PARTITION_NO_PARTITION + + + + ER_REORG_PARTITION_NOT_EXIST + + + + ER_SAME_NAME_PARTITION + + + + ER_NO_BINLOG_ERROR + + + + ER_CONSECUTIVE_REORG_PARTITIONS + + + + ER_REORG_OUTSIDE_RANGE + + + + ER_PARTITION_FUNCTION_FAILURE + + + + ER_PART_STATE_ERROR + + + + ER_LIMITED_PART_RANGE + + + + ER_PLUGIN_IS_NOT_LOADED + + + + ER_WRONG_VALUE + + + + ER_NO_PARTITION_FOR_GIVEN_VALUE + + + + ER_FILEGROUP_OPTION_ONLY_ONCE + + + + ER_CREATE_FILEGROUP_FAILED + + + + ER_DROP_FILEGROUP_FAILED + + + + ER_TABLESPACE_AUTO_EXTEND_ERROR + + + + ER_WRONG_SIZE_NUMBER + + + + ER_SIZE_OVERFLOW_ERROR + + + + ER_ALTER_FILEGROUP_FAILED + + + + ER_BINLOG_ROW_LOGGING_FAILED + + + + ER_BINLOG_ROW_WRONG_TABLE_DEF + + + + ER_BINLOG_ROW_RBR_TO_SBR + + + + ER_EVENT_ALREADY_EXISTS + + + + ER_EVENT_STORE_FAILED + + + + ER_EVENT_DOES_NOT_EXIST + + + + ER_EVENT_CANT_ALTER + + + + ER_EVENT_DROP_FAILED + + + + ER_EVENT_INTERVAL_NOT_POSITIVE_OR_TOO_BIG + + + + ER_EVENT_ENDS_BEFORE_STARTS + + + + ER_EVENT_EXEC_TIME_IN_THE_PAST + + + + ER_EVENT_OPEN_TABLE_FAILED + + + + ER_EVENT_NEITHER_M_EXPR_NOR_M_AT + + + + ER_COL_COUNT_DOESNT_MATCH_CORRUPTED + + + + ER_CANNOT_LOAD_FROM_TABLE + + + + ER_EVENT_CANNOT_DELETE + + + + ER_EVENT_COMPILE_ERROR + + + + ER_EVENT_SAME_NAME + + + + ER_EVENT_DATA_TOO_LONG + + + + ER_DROP_INDEX_FK + + + + ER_WARN_DEPRECATED_SYNTAX_WITH_VER + + + + ER_CANT_WRITE_LOCK_LOG_TABLE + + + + ER_CANT_LOCK_LOG_TABLE + + + + ER_FOREIGN_DUPLICATE_KEY + + + + ER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE + + + + ER_TEMP_TABLE_PREVENTS_SWITCH_OUT_OF_RBR + + + + ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_FORMAT + + + + ER_NDB_CANT_SWITCH_BINLOG_FORMAT + + + + ER_PARTITION_NO_TEMPORARY + + + + ER_PARTITION_CONST_DOMAIN_ERROR + + + + ER_PARTITION_FUNCTION_IS_NOT_ALLOWED + + + + ER_DDL_LOG_ERROR + + + + ER_NULL_IN_VALUES_LESS_THAN + + + + ER_WRONG_PARTITION_NAME + + + + ER_CANT_CHANGE_TRANSACTION_ISOLATION + + + + ER_DUP_ENTRY_AUTOINCREMENT_CASE + + + + ER_EVENT_MODIFY_QUEUE_ERROR + + + + ER_EVENT_SET_VAR_ERROR + + + + ER_PARTITION_MERGE_ERROR + + + + ER_CANT_ACTIVATE_LOG + + + + ER_RBR_NOT_AVAILABLE + + + + ER_BASE64_DECODE_ERROR + + + + ER_EVENT_RECURSION_FORBIDDEN + + + + ER_EVENTS_DB_ERROR + + + + ER_ONLY_INTEGERS_ALLOWED + + + + ER_UNSUPORTED_LOG_ENGINE + + + + ER_BAD_LOG_STATEMENT + + + + ER_CANT_RENAME_LOG_TABLE + + + + ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT + + + + ER_WRONG_PARAMETERS_TO_NATIVE_FCT + + + + ER_WRONG_PARAMETERS_TO_STORED_FCT + + + + ER_NATIVE_FCT_NAME_COLLISION + + + + ER_DUP_ENTRY_WITH_KEY_NAME + + + + ER_BINLOG_PURGE_EMFILE + + + + ER_EVENT_CANNOT_CREATE_IN_THE_PAST + + + + ER_EVENT_CANNOT_ALTER_IN_THE_PAST + + + + ER_REPLICA_INCIDENT + + + + ER_NO_PARTITION_FOR_GIVEN_VALUE_SILENT + + + + ER_BINLOG_UNSAFE_STATEMENT + + + + ER_REPLICA_FATAL_ERROR + + + + ER_REPLICA_RELAY_LOG_READ_FAILURE + + + + ER_REPLICA_RELAY_LOG_WRITE_FAILURE + + + + ER_REPLICA_CREATE_EVENT_FAILURE + + + + ER_REPLICA_SOURCE_COM_FAILURE + + + + ER_BINLOG_LOGGING_IMPOSSIBLE + + + + ER_VIEW_NO_CREATION_CTX + + + + ER_VIEW_INVALID_CREATION_CTX + + + + ER_SR_INVALID_CREATION_CTX + + + + ER_TRG_CORRUPTED_FILE + + + + ER_TRG_NO_CREATION_CTX + + + + ER_TRG_INVALID_CREATION_CTX + + + + ER_EVENT_INVALID_CREATION_CTX + + + + ER_TRG_CANT_OPEN_TABLE + + + + ER_CANT_CREATE_SROUTINE + + + + ER_REPLICA_AMBIGOUS_EXEC_MODE + + + + ER_NO_FORMAT_DESCRIPTION_EVENT_BEFORE_BINLOG_STATEMENT + + + + ER_REPLICA_CORRUPT_EVENT + + + + ER_LOAD_DATA_INVALID_COLUMN + + + + ER_LOG_PURGE_NO_FILE + + + + ER_XA_RBTIMEOUT + + + + ER_XA_RBDEADLOCK + + + + ER_NEED_REPREPARE + + + + ER_DELAYED_NOT_SUPPORTED + + + + WARN_NO_SOURCE_INFO + + + + WARN_OPTION_IGNORED + + + + WARN_PLUGIN_DELETE_BUILTIN + + + + WARN_PLUGIN_BUSY + + + + ER_VARIABLE_IS_READONLY + + + + ER_WARN_ENGINE_TRANSACTION_ROLLBACK + + + + ER_REPLICA_HEARTBEAT_FAILURE + + + + ER_REPLICA_HEARTBEAT_VALUE_OUT_OF_RANGE + + + + ER_NDB_REPLICATION_SCHEMA_ERROR + + + + ER_CONFLICT_FN_PARSE_ERROR + + + + ER_EXCEPTIONS_WRITE_ERROR + + + + ER_TOO_LONG_TABLE_COMMENT + + + + ER_TOO_LONG_FIELD_COMMENT + + + + ER_FUNC_INEXISTENT_NAME_COLLISION + + + + ER_DATABASE_NAME + + + + ER_TABLE_NAME + + + + ER_PARTITION_NAME + + + + ER_SUBPARTITION_NAME + + + + ER_TEMPORARY_NAME + + + + ER_RENAMED_NAME + + + + ER_TOO_MANY_CONCURRENT_TRXS + + + + WARN_NON_ASCII_SEPARATOR_NOT_IMPLEMENTED + + + + ER_DEBUG_SYNC_TIMEOUT + + + + ER_DEBUG_SYNC_HIT_LIMIT + + + + ER_ERROR_LAST + + + + ER_CLIENT_INTERACTION_TIMEOUT + + + + WriteInteger + + + + Boolean that indicates if the function will be executed asynchronously. + + + + Represents a parameter to a , This class cannot be inherited. + + + Parameter names are not case sensitive. + You can read more about it here. + + + + + Initializes a new instance of the class with the parameter name, the , the size, and the source column name. + + The name of the parameter to map. + One of the values. + The length of the parameter. + The name of the source column. + + + + Initializes a new instance of the class with the parameter name and a value of the new MySqlParameter. + + The name of the parameter to map. + An that is the value of the . + + + + Initializes a new instance of the class with the parameter name and the data type. + + The name of the parameter to map. + One of the values. + + + + Initializes a new instance of the class with the parameter name, the , and the size. + + The name of the parameter to map. + One of the values. + The length of the parameter. + + + + Initializes a new instance of the class with the parameter name, the type of the parameter, the size of the parameter, a , the precision of the parameter, the scale of the parameter, the source column, a to use, and the value of the parameter. + + The name of the parameter to map. + One of the values. + The length of the parameter. + One of the values. + true if the value of the field can be null, otherwise false. + The total number of digits to the left and right of the decimal point to which is resolved. + The total number of decimal places to which is resolved. + The name of the source column. + One of the values. + An that is the value of the . + + + + + Gets or sets a value indicating whether the parameter is input-only, output-only, bidirectional, or a stored procedure return value parameter. + As of MySql version 4.1 and earlier, input-only is the only valid choice. + + + + + Gets or sets a value indicating whether the parameter accepts null values. + + + + + Gets or sets the of the parameter. + + + + + Gets or sets the maximum number of digits used to represent the property. + + + + + Gets or sets the number of decimal places to which is resolved. + + + + + Gets or sets the maximum size, in bytes, of the data within the column. + + + + + Gets or sets the value of the parameter. + + + + + Returns the possible values for this parameter if this parameter is of type + SET or ENUM. Returns null otherwise. + + + + + Gets or sets the name of the source column that is mapped to the and used for loading or returning the . + + + + + Sets or gets a value which indicates whether the source column is nullable. + This allows to correctly generate Update statements + for nullable columns. + + + + + Gets or sets the of the parameter. + + + + + Gets or sets the value to use when loading . + + + + + Clones this object. + + An object that is a clone of this object. + + + + Overridden. Gets a string containing the . + + + + + + Resets the DbType property to its original settings. + + + + + Represents a collection of parameters relevant to a + as well as their respective mappings to columns in a . This class cannot be inherited. + + + The number of the parameters in the collection must be equal to the number of + parameter placeholders within the command text, or an exception will be generated. + + + + + Gets the number of MySqlParameter objects in the collection. + + + + + Gets a value that indicates whether the object has a fixed size. + + + + + Gets a value that indicates whether the object is read-only. + + + + + Gets a value that indicates whether the object is synchronized. + + + + + Gets the at the specified index. + + Gets the with a specified attribute. + [C#] In C#, this property is the indexer for the class. + + + + + Gets the with the specified name. + + + + + Adds a to the with the parameter name, the data type, the column length, and the source column name. + + The name of the parameter. + One of the values. + The length of the column. + The name of the source column. + The newly added object. + + + + Adds the specified object to the . + + The to add to the collection. + The newly added object. + + + + Adds a parameter and its value. + + The name of the parameter. + The value of the parameter. + A object representing the provided values. + + + + Adds a to the given the parameter name and the data type. + + The name of the parameter. + One of the values. + The newly added object. + + + + Adds a to the with the parameter name, the data type, and the column length. + + The name of the parameter. + One of the values. + The length of the column. + The newly added object. + + + + Removes all items from the collection. + + + + + Gets the location of the in the collection with a specific parameter name. + + The name of the object to retrieve. + The zero-based location of the in the collection. + + + + Gets the location of a in the collection. + + The object to locate. + The zero-based location of the in the collection. + Gets the location of a in the collection. + + + + This method will update all the items in the index hashes when + we insert a parameter somewhere in the middle + + + + + + + Adds an array of values to the end of the . + + + + + + Retrieve the parameter with the given name. + + + + + + + Adds the specified object to the . + + The to add to the collection. + The index of the new object. + + + + Gets a value indicating whether a with the specified parameter name exists in the collection. + + The name of the object to find. + true if the collection contains the parameter; otherwise, false. + + + + Gets a value indicating whether a MySqlParameter exists in the collection. + + The value of the object to find. + true if the collection contains the object; otherwise, false. + Gets a value indicating whether a exists in the collection. + + + + Copies MySqlParameter objects from the MySqlParameterCollection to the specified array. + + + + + + + Returns an enumerator that iterates through the . + + + + + + Inserts a MySqlParameter into the collection at the specified index. + + + + + + + Removes the specified MySqlParameter from the collection. + + + + + + Removes the specified from the collection using the parameter name. + + The name of the object to retrieve. + + + + Removes the specified from the collection using a specific index. + + The zero-based index of the parameter. + Removes the specified from the collection. + + + + Gets an object that can be used to synchronize access to the + . + + + + + Summary description for MySqlPool. + + + + + It is assumed that this property will only be used from inside an active + lock. + + + + + Indicates whether this pool is being cleared. + + + + + It is assumed that this method is only called from inside an active lock. + + + + + It is assumed that this method is only called from inside an active lock. + + + + + Removes a connection from the in use pool. The only situations where this method + would be called are when a connection that is in use gets some type of fatal exception + or when the connection is being returned to the pool and it's too old to be + returned. + + + + + + Clears this pool of all idle connections and marks this pool and being cleared + so all other connections are closed when they are returned. + + + + + Remove expired drivers from the idle pool + + + + Closing driver is a potentially lengthy operation involving network + IO. Therefore we do not close expired drivers while holding + idlePool.SyncRoot lock. We just remove the old drivers from the idle + queue and return them to the caller. The caller will need to close + them (or let GC close them) + + + + + Summary description for MySqlPoolManager. + + + + + Queue of demoted hosts. + + + + + List of hosts that will be attempted to connect to. + + + + + Timer to be used when a host have been demoted. + + + + + Remove drivers that have been idle for too long. + + + + + Remove hosts that have been on the demoted list for more + than 120,000 milliseconds and add them to the available hosts list. + + + + + Provides a class capable of executing a SQL script containing + multiple SQL statements including CREATE PROCEDURE statements + that require changing the delimiter + + + + + Handles the event raised whenever a statement is executed. + + + + + Handles the event raised whenever an error is raised by the execution of a script. + + + + + Handles the event raised whenever a script execution is finished. + + + + + Initializes a new instance of the + class. + + + + + Initializes a new instance of the + class. + + The connection. + + + + Initializes a new instance of the + class. + + The query. + + + + Initializes a new instance of the + class. + + The connection. + The query. + + + + Gets or sets the connection. + + The connection. + + + + Gets or sets the query. + + The query. + + + + Gets or sets the delimiter. + + The delimiter. + + + + Executes this instance. + + The number of statements executed as part of the script. + + + + Initiates the asynchronous execution of SQL statements. + + The number of statements executed as part of the script inside. + + + + Initiates the asynchronous execution of SQL statements. + + The cancellation token. + The number of statements executed as part of the script inside. + + + + Represents the method that will handle errors when executing MySQL statements. + + + + + Represents the method that will handle errors when executing MySQL scripts. + + + + + Sets the arguments associated to MySQL scripts. + + + + + Gets the statement text. + + The statement text. + + + + Gets the line. + + The line. + + + + Gets the position. + + The position. + + + + Sets the arguments associated to MySQL script errors. + + + + + Initializes a new instance of the class. + + The exception. + + + + Gets the exception. + + The exception. + + + + Gets or sets a value indicating whether this is ignored. + + true if ignore; otherwise, false. + + + + Summary description for MySqlStream. + + + + + ReadPacket is called by NativeDriver to start reading the next + packet on the stream. + + + + + Reads the specified number of bytes from the stream and stores them at given + offset in the buffer. + Throws EndOfStreamException if not all bytes can be read. + + Stream to read from + Array to store bytes read from the stream + The offset in buffer at which to begin storing the data read from the current stream. + Number of bytes to read + Boolean that indicates if the function will be executed asynchronously. + + + + LoadPacket loads up and decodes the header of the incoming packet. + + + + + Traces information about the client execution. + + + + + Gets the list of trace listeners. + + + + + Gets or sets the switch to control tracing and debugging. + + + + + Specifies the types of warning flags. + + + + + No index exists. + + + + + Bad index exists. + + + + + Rows have been excluded from the result. + + + + + Columns have been excluded from the result. + + + + + Type conversions took place. + + + + + Specifies the event that triggered the trace. + + + + + A connection has been opened. + + + + + A connection has been closed. + + + + + A query has been executed. + + + + + Data has been retrieved from the resultset. + + + + + Data retrieval has ended. + + + + + Query execution has ended. + + + + + The statement to be executed has been created. + + + + + The statement has been executed. + + + + + The statement is no longer required. + + + + + The query provided is of a nonquery type. + + + + + Usage advisor warnings have been requested. + + + + + Noncritical problem. + + + + + An error has been raised during data retrieval. + + + + + The query has been normalized. + + + + + Represents a SQL transaction to be made in a MySQL database. This class cannot be inherited. + + + The application creates a object by calling + on the object. All subsequent operations associated with the + transaction (for example, committing or aborting the transaction), are performed on the + object. + + + The following example creates a and a . + It also demonstrates how to use the , + , and methods. + + public void RunTransaction(string myConnString) + { + MySqlConnection myConnection = new MySqlConnection(myConnString); + myConnection.Open(); + MySqlCommand myCommand = myConnection.CreateCommand(); + MySqlTransaction myTrans; + // Start a local transaction + myTrans = myConnection.BeginTransaction(); + // Must assign both transaction object and connection + // to Command object for a pending local transaction + myCommand.Connection = myConnection; + myCommand.Transaction = myTrans; + + try + { + myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')"; + myCommand.ExecuteNonQuery(); + myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')"; + myCommand.ExecuteNonQuery(); + myTrans.Commit(); + Console.WriteLine("Both records are written to database."); + } + catch(Exception e) + { + try + { + myTrans.Rollback(); + } + catch (MySqlException ex) + { + if (myTrans.Connection != null) + { + Console.WriteLine("An exception of type " + ex.GetType() + + " was encountered while attempting to roll back the transaction."); + } + } + + Console.WriteLine("An exception of type " + e.GetType() + + " was encountered while inserting the data."); + Console.WriteLine("Neither record was written to database."); + } + finally + { + myConnection.Close(); + } + } + + + + + + Gets the object associated with the transaction, or a null reference (Nothing in Visual Basic) if the transaction is no longer valid. + + The object associated with this transaction. + + A single application may have multiple database connections, each + with zero or more transactions. This property enables you to + determine the connection object associated with a particular + transaction created by . + + + + + Specifies the for this transaction. + + + The for this transaction. The default is ReadCommitted. + + + Parallel transactions are not supported. Therefore, the IsolationLevel + applies to the entire transaction. + + + + + Gets the object associated with the transaction, + or a null reference if the transaction is no longer valid. + + + + + Releases the unmanaged resources used by the + and optionally releases the managed resources + + If true, this method releases all resources held by any managed objects that + this references. + + + + Commits the database transaction. + + + The method is equivalent to the MySQL SQL statement COMMIT. + + + + + Asynchronously commits the database transaction. + + + A task representing the asynchronous operation. + + + + Rolls back a transaction from a pending state. + + + The method is equivalent to the MySQL statement ROLLBACK. + The transaction can only be rolled back from a pending state + (after BeginTransaction has been called, but before Commit is + called). + + + + + Asynchronously rolls back a transaction from a pending state. + + The cancellation token. + A task representing the asynchronous operation. + + + + Summary description for Driver. + + + + + Sets the current database for the this connection + + + Boolean that indicates if the function will be executed asynchronously. + + + + Return the appropriate set of connection flags for our + server capabilities and our user requested options. + + + + + Query is the method that is called to send all queries to the server + + + + + Verify that the file to upload is in a valid directory + according to the safe path entered by a user under + "AllowLoadLocalInfileInPath" connection option. + + File to validate against the safe path. + Boolean that indicates if the function will be executed asynchronously. + + + + Sends the specified file to the server. + This supports the LOAD DATA LOCAL INFILE + + + Boolean that indicates if the function will be executed asynchronously. + + + + FetchDataRow is the method that the data reader calls to see if there is another + row to fetch. In the non-prepared mode, it will simply read the next data packet. + In the prepared mode (statementId > 0), it will + + + + + Execution timeout, in milliseconds. When the accumulated time for network IO exceeds this value + TimeoutException is thrown. This timeout needs to be reset for every new command + + + + + + Class that represents the response OK Packet + https://dev.mysql.com/doc/internals/en/packet-OK_Packet.html + + + + + Creates an instance of the OKPacket object with all of its metadata + + The packet to parse + Boolean that indicates if the function will be executed asynchronously. + + + + Add a session tracker to the list + + Type of the session tracker + Name of the element changed + Value of the changed system variable (only for SessionTrackType.SystemVariables; otherwise, null) + + + + Summary description for PreparedStatement. + + + + + Prepares CommandText for use with the Prepare method + + Command text stripped of all paramter names + + Takes the output of TokenizeSql and creates a single string of SQL + that only contains '?' markers for each parameter. It also creates + the parameterMap array list that includes all the paramter names in the + order they appeared in the SQL + + + + + Splits the schema and the entity from a syntactically correct "spName"; + if there's no schema, then schema will be an empty string. + + string to inspect. + The schema. + The entity. + + + + Obtains the dot index that separates the schema from the entity if there's one; + otherwise, returns -1. It expects a syntactically correct "spName". + + string to inspect. + Value of the dot index. + The dot index. + + + + Defines a replication configurarion element in the configuration file. + + + + + Gets a collection of objects representing the server groups. + + + + + Defines a replication server group in the configuration file. + + + + + Gets or sets the name of the replication server group configuration. + + + + + Gets or sets the group type of the replication server group configuration. + + + + + Gets or sets the number of seconds to wait for retry. + + + + + Gets a collection of objects representing the + server configurations associated to this group configuration. + + + + + Defines a replication server in configuration file. + + + + + Gets or sets the name of the replication server configuration. + + + + + Gets or sets whether the replication server is configured as source. + + + + + Gets or sets whether the replication server is configured as source. + + + + + Gets or sets the connection string associated to this replication server. + + + + + Manager for Replication and Load Balancing features + + + + + Returns Replication Server Group List + + + + + Adds a Default Server Group to the list + + Group name + Time between reconnections for failed servers + Replication Server Group added + + + + Adds a Server Group to the list + + Group name + ServerGroup type reference + Time between reconnections for failed servers + Server Group added + + + + Gets the next server from a replication group + + Group name + True if the server to return must be a source + Replication Server defined by the Load Balancing plugin + + + + Gets a Server Group by name + + Group name + Server Group if found, otherwise throws an MySqlException + + + + Validates if the replication group name exists + + Group name to validate + true if the replication group name is found; otherwise, false + + + + Assigns a new server driver to the connection object + + Group name + True if the server connection to assign must be a source + MySqlConnection object where the new driver will be assigned + Boolean that indicates if the function will be executed asynchronously. + the cancellation token. + + + + Class that implements Round Robing Load Balancing technique. + + + + + Gets an available server based on Round Robin load balancing. + + Flag indicating if the server to return must be a source. + A object representing the next available server. + + + + Represents a server in a Replication environment. + + + + + Gets the server name. + + + + + Gets a value indicating whether the server is source or replica. + + + + + Gets a value indicating whether the server is source or replica. + + + + + Gets the connection string used to connect to the server. + + + + + Gets a flag indicating if the server is available to be considered in load balancing. + + + + + Base class used to implement load balancing features. + + + + + List of servers available for replication. + + + + The group name. + The number of seconds to perform a retry. + + + + Gets the group name. + + + + + Gets the retry time between connections to failed servers. + + + + + Gets the server list in the group. + + + + + Adds a server into the group. + + The server name. + A flag indicating if the server to add is source or replica. + The connection string used by this server. + A object representing the recently added object. + + + + Removes a server from the group. + + The server name. + + + + Gets a server by name. + + The server name. + The replication server. + + + + Must be implemented. Defines the next server for a custom load balancing implementation. + + Defines if the server to return is a source or any. + The next server based on the load balancing implementation. + Null if no available server is found. + + + + + Defines the next server for a custom load balancing implementation. + + Defines if the server to return is a source or any. + Currently not being used. + The next server based on the load balancing implementation. + Null if no available server is found. + + + + + Handles a failed connection to a server. + + The failed server. + This method can be overrided to implement a custom failover handling. + + + + Handles a failed connection to a server. + + The failed server. + The exception that caused the failover. + + + + return the ordinal for the given column name + + + + + + + Retrieve the value as the given column index + + The column value to retrieve + The value as the given column + + + + Closes the current resultset, dumping any data still on the wire + + + + + Loads the column metadata for the current resultset + + + + + Represents a schema and its contents. + + + + + Gets or sets the name of the schema. + + + + + Gets the list of columns in the schema. + + + + + Gets the list of rows in the schema. + + + + + Represents a row within a schema. + + + + + Represents a column within a schema. + + + + + The name of the column. + + + + + The type of the column. + + + + + GetForeignKeysOnTable retrieves the foreign keys on the given table. + Since MySQL supports foreign keys on versions prior to 5.0, we can't use + information schema. MySQL also does not include any type of SHOW command + for foreign keys so we have to resort to use SHOW CREATE TABLE and parsing + the output. + + The table to store the key info in. + The table to get the foeign key info for. + Only get foreign keys that match this name. + Should column information be included in the table. + Boolean that indicates if the function will be executed asynchronously. + The cancellation token. + + + + Builds the initial part of the COM_QUERY packet + + Collection of attributes + A + Boolean that indicates if the function will be executed asynchronously. + + + + Serializes the given parameter to the given memory stream + + + This method is called by PrepareSqlBuffers to convert the given + parameter to bytes and write those bytes to the given memory stream. + + + True if the parameter was successfully serialized, false otherwise. + + + + Summary description for StoredProcedure. + + + + + Verify if the string passed as argument is syntactically correct. + + String to be analyzed + true if is correct; otherwise, false. + + + + Defines the basic operations to be performed on the table cache. + + + + + The maximum age allowed for cache entries. + + + + + Adds the given command and result set to the cache. + + The command to store in the cache. + The resultset associated to the stored command. + + + + Retrieves the specified command from the cache. + + The command to retrieve. + The allowed age for the cache entry. + + + + + Removes the specified command from the cache. + + The command to remove from the cache. + + + + Clears the cache. + + + + + Removes cache entries older than the value defined by . + + + + + Stream that supports timeout of IO operations. + This class is used is used to support timeouts for SQL command, where a + typical operation involves several network reads/writes. + Timeout here is defined as the accumulated duration of all IO operations. + + + + + Construct a TimedStream + + Undelying stream + + + + Figure out whether it is necessary to reset timeout on stream. + We track the current value of timeout and try to avoid + changing it too often, because setting Read/WriteTimeout property + on network stream maybe a slow operation that involves a system call + (setsockopt). Therefore, we allow a small difference, and do not + reset timeout if current value is slightly greater than the requested + one (within 0.1 second). + + + + + Common handler for IO exceptions. + Resets timeout to infinity if timeout exception is + detected and stops the times. + + original exception + + + + Removes the outer backticks and replace the double-backticks to single-backtick + of inside the quotedString. + + The string to unquote. + + + + + Gets the length size (in bytes) of a string. + + length of string. + Number of bytes needed. + + + + Defines the type of the column. + + + + + A reference struct representing a statement contained within a object + + + + + WebAuthn §6.1 https://www.w3.org/TR/webauthn-1/#sec-authenticator-data + Gets the authenticator data for the assertion statement. + + + + + Gets the authenticator data length for the assertion statement. + + + + + Gets the ID for this assertion statement + + + + + Gets the signature for this assertion statement + + + + + Gets the signature length for this assertion statement + + + + + Creates an object for holding data about a given assertion. In FIDO2, an assertion + is proof that the authenticator being used has knowledge of the private key associated + with the public key that the other party is in posession of. + + + + + Default Constructor + + + + + + Finalizer + + + + + Gets or sets the hash of the client data object that the assertion is based on. + + Thrown if an error occurs while setting the hash + + + + Gets or sets the relying party that requested this assertion + + Thrown if an error occurs while setting the relying party + + + + Adds an allowed credential to this assertion. If used, only credential objects + with the IDs added via this method will be considered when making an assertion. + + The ID of the credential to add to the whitelist + Thrown if an error occurs while adding the credential + + + + Cast operator for using this object as a native handle + + The object to use + + + + Gets the assertion statement at the index provided. + + The index of the assertion statement to retrieve + The assertion statement object + The index is not in the range [0, count) + + + + Gets the number of assertions contained in the authentication device. + + The number of assertions contained in the authentication device. + + + + Default constructor + + + + + + Finalizer + + + + + Opens the device at the given path. + + The path of the device + Thrown if an error occurs while opening the device + + + + Closes the device, preventing further use + + Thrown if an error occurs while closing + + + + Determines whether this device supports CTAP 2.1 Credential Management. + + + + + Uses the device to generate an assertion + + The assertion object with its input properties properly set + Thrown if an error occurs while generating the assertion + + + + A class representing external info about a particular FIDO capable device + + + + + Gets the manufacturer of the device + + + + + Gets the path of the device (for use in ) + + + + + Gets the product ID of the device + + + + + Gets a string representation of the product ID + + + + + Gets the vendor ID of the device + + + + + Finalizer + + + + + P/Invoke methods + + + + + The fido_init() function initialises the libfido2 library. + Its invocation must precede that of any other libfido2 function. + If FIDO_DEBUG is set in flags, then debug output will be emitted by libfido2 on stderr. + Alternatively, the FIDO_DEBUG environment variable may be set. + + The flags to use during initialization + + + + Returns a pointer to a newly allocated, empty fido_dev_t type. + If memory cannot be allocated, null is returned. + + A newly allocated, empty fido_dev_t type + + + + Releases the memory backing *dev_p, where *dev_p must have been previously allocated by . + On return, *dev_p is set to null. Either dev_p or *dev_p may be null, in which case fido_dev_free() is a NOP. + + + + + + Closes the device represented by dev. If dev is already closed, this is a NOP. + + The device to close + on success, anything else on failure + + + + Opens the device pointed to by path, where dev is a freshly allocated or otherwise closed fido_dev_t. + + The device handle to store the result + The unique path to the device + on success, anything else on failure + + + + Asks the FIDO device represented by dev for an assertion according to the following parameters defined in assert: + relying party ID; + client data hash; + list of allowed credential IDs; + user presence and user verification attributes. + See fido_assert_set(3) for information on how these values are set. + If a PIN is not needed to authenticate the request against dev, then pin may be NULL. + Otherwise pin must point to a NUL-terminated UTF-8 string. + Please note that fido_dev_get_assert() is synchronous and will block if necessary. + + The device to use for generation + The assert to use for generation + The pin of the device + on success, anything else on failure + + + + Returns if supports CTAP 2.1 Credential Management. + + The device to check. + if supports CTAP 2.1 Credential Management; otherwise, . + + + + Returns a pointer to a newly allocated, empty fido_dev_info_t type. + If memory cannot be allocated, null is returned. + + A newly allocated, empty fido_dev_info_t type + + + + Returns a pointer to the path of di + + The object to act on + A pointer to the path of di + + + + Returns a pointer to the idx entry of di + + The object to act on + The index of the object to retrieve + A pointer to the idx entry of di + + + + Fills devlist with up to ilen FIDO devices found by the underlying operating system. + Currently only USB HID devices are supported. + The number of discovered devices is returned in olen, where olen is an addressable pointer. + + The devlist pointer to store the result in + The number of entries that the list can hold + A pointer to where the number of entries that were written will be stored + on success, anything else on failure + + + + Releases the memory backing *devlist_p, where *devlist_p must have been previously allocated by . + On return, *devlist_p is set to null. Either devlist_p or *devlist_p may be null, in which case fido_dev_info_free() is a NOP. + + + The number of entries this object was allocated to hold + + + + Returns the vendor of the device + + The object to act on + The vendor of the device + + + + Returns the product of the device + + The object to act on + The product of the device + + + + Returns a pointer to the product string of di + + The object to act on + A pointer to the product string of di + + + + Returns a pointer to the manufacturer string of di + + The object to act on + A pointer to the manufacturer string of di + + + + Returns a pointer to a newly allocated, empty fido_assert_t type. + If memory cannot be allocated, null is returned + + A newly allocated, empty fido_assert_t type + + + + Releases the memory backing *assert_p, where *assert_p must have been previously allocated by . + On return, *assert_p is set to null. Either assert_p or *assert_p may be null, in which case fido_assert_free() is a NOP. + + The object to free + + + + Adds ptr to the list of credentials allowed in assert, where ptr points to a credential ID of len bytes. + A copy of ptr is made, and no references to the passed pointer are kept. + If this call fails, the existing list of allowed credentials is preserved. + + The object to act on + A pointer to the ID of the credential to allow + The length of the data inside of + + + + + Set the client data hash of assert + + The assertion object to act on + The client data hash to set + The length of the data in + on success, anything else on failure + + + + Sets the relying party of assert + + The assertion object to act on + The ID of the the relying party + on success, anything else on failure + + + + Returns the length of the authenticator data of statement idx in assert + + The assertion object to act on + The index to retrieve + The length of the authenticator data of statement idx in assert + + + + Returns a pointer to the authenticator data of statement idx in assert + + The assertion object to act on + The index to retrieve + A pointer to the authenticator data of statement idx in assert + + + + Returns the length of the signature of statement idx in assert + + The assertion object to act on + The index to retrieve + The length of the signature of statement idx in assert + + + + Returns a pointer to the signature of statement idx in assert + + The assertion object to act on + The index to retrieve + A pointer to the signatureof statement idx in assert + + + + Returns the length of the ID of statement idx in assert + + The assertion object to act on + The index to retrieve + The length of the ID of statement idx in assert + + + + Returns a pointer to the ID of statement idx in assert. + + The assertion object to act on. + The index to retrieve. + A pointer to the ID of statement idx in assert. + + + + Returns the length of the client data hash of an assertion. + + The assertion object to act on. + The length of the client data hash of statement idx of the assertion. + + + + Returns a pointer to the client data hash of an assertion. + + The assertion object to act on. + A pointer to the client data hash of the assertion. + + + + Returns the number of statements in assertion. + + The assertion object to act on. + The number of statements in assertion. + + + + FIDO assertion handle + + + + + FIDO device handle + + + + + FIDO device info handle + + + + + Gets the global instance of this class as required by + + The cookie to use when getting the global instance (ignored) + The global instance + + + + Status codes as defined in Client to Authenticator Protocol (CTAP) standard + Error response values in the range between and are reserved for spec purposes. + Error response values in the range between and + may be used for vendor-specific implementations. All other response values are reserved for future use and may not be used. + These vendor specific error codes are not interoperable and the platform should treat these errors as any other unknown error codes. + Error response values in the range between and + may be used for extension-specific implementations. + + + + + Indicates successful response. + + + + + The command is not a valid CTAP command. + + + + + The command included an invalid parameter. + + + + + Invalid message or item length. + + + + + Invalid message sequencing. + + + + + Message timed out. + + + + + Channel busy. + + + + + Command requires channel lock. + + + + + Command not allowed on this cid. + + + + + Invalid/unexpected CBOR error. + + + + + Error when parsing CBOR. + + + + + Missing non-optional parameter. + + + + + Limit for number of items exceeded. + + + + + Unsupported extension. + + + + + Valid credential found in the exclude list. + + + + + Processing (Lengthy operation is in progress). + + + + + Credential not valid for the authenticator. + + + + + Authentication is waiting for user interaction. + + + + + Processing, lengthy operation is in progress. + + + + + No request is pending. + + + + + Authenticator does not support requested algorithm. + + + + + Not authorized for requested operation. + + + + + Internal key storage is full. + + + + + No outstanding operations. + + + + + Unsupported option. + + + + + Not a valid option for current operation. + + + + + Pending keep alive was cancelled. + + + + + No valid credentials provided. + + + + + Timeout waiting for user interaction. + + + + + Continuation command, such as, authenticatorGetNextAssertion not allowed. + + + + + PIN Invalid. + + + + + PIN Blocked. + + + + + PIN authentication,pinAuth, verification failed. + + + + + PIN authentication,pinAuth, blocked. Requires power recycle to reset. + + + + + No PIN has been set. + + + + + PIN is required for the selected operation. + + + + + PIN policy violation. Currently only enforces minimum length. + + + + + pinToken expired on authenticator. + + + + + Authenticator cannot handle this request due to memory constraints. + + + + + The current operation has timed out. + + + + + User presence is required for the requested operation. + + + + + Other unspecified error. + + + + + CTAP 2 spec last error. + + + + + Extension specific error. + + + + + Extension specific error. + + + + + Vendor specific error. + + + + + Vendor specific error. + + + + + An exception representing a return status that is non-successful according to the CTAP specification + + + + + The status code that was returned + + + + + Default constructor + + The status code to use + + + + An exception indicating that there was some problem with the FIDO2 device + + + + + The code returned from the device + + + + + Default constructor + + The code to use + + + + This class represent the function that should precede any invocation to libfido2 library. + + + + + GSS API constants + + + + + GSS_C_NT_HOSTBASED_SERVICE (1.2.840.113554.1.2.1.4) + + + + + GSS_KRB5_NT_PRINCIPAL_NAME (1.2.840.113554.1.2.2.1) + + + + + GSS_C_NT_USER_NAME (1.2.840.113554.1.2.1.1) + + + + + GSS_KRB5_MECH_OID_DESC (1.2.840.113554.1.2.2) + + + + + GSS_KRB5_MECH_OID_DESC Set + + + + + The GSSAPI mechanism. + + + + + Obtain credentials to be used to create a security context + + username + password + host + + + + Processes the challenge data. + + A byte array containing the challenge data from the server + A byte array containing the response to be sent to the server + + + + Security context already established. + + A byte array containing the challenge data from the server + A non-null byte array containing the response to be sent to the server + + + + Defines a security context + + + + + Sets the main properties to create and initiate a security context. + + Service Principal Name. + Credentials. + Requested flags. + + + + Initiate the security context + + Challenge received by the server. + A byte array containing the response to be sent to the server + + + + Unwrap a message. + + Message acquired from the server. + Unwrapped message. + + + + Wrap a message. + + Message to be wrapped. + A byte array containing the wrapped message. + + + + Allocate a clr byte array and copy the token data over + + Buffer. + A byte array + + + + Cleanups unmanaged resources + + + + + No flags provided + + + + + Delegates credentials to a remote peer. Do not delegate the credentials if the value is false. + + + + + Requests that the peer authenticate itself. If false, authenticate to the remote peer only. + + + + + Enables replay detection for messages protected with gss_wrap(3GSS) or gss_get_mic(3GSS). Do not attempt to detect replayed messages if false. + + + + + Enables detection of out-of-sequence protected messages. Do not attempt to detect out-of-sequence messages if false. + + + + + Requests that confidential service be made available by means of gss_wrap(3GSS). If false, no per-message confidential service is required. + + + + + Requests that integrity service be made available by means of gss_wrap(3GSS) or gss_get_mic(3GSS). If false, no per-message integrity service is required. + + + + + Does not reveal the initiator's identify to the acceptor. Otherwise, authenticate normally. + + + + + (Returned only) If true, the protection services specified by the states of GSS_C_CONF_FLAG and GSS_C_INTEG_FLAG are available + if the accompanying major status return value is either GSS_S_COMPLETE or GSS_S_CONTINUE_NEEDED. If false, the protection services are available + only if the accompanying major status return value is GSS_S_COMPLETE. + + + + + (Returned only) If true, the resultant security context may be transferred to other processes by means of a call to gss_export_sec_context(3GSS). If false, the security context cannot be transferred. + + + + + Credentials to use to establish the context + + + + + Acquires credentials for the supplied principal using the supplied password + + Username + Password + GSS_C_BOTH - Credentials may be used either to initiate or accept security contexts. + GSS_C_INITIATE - Credentials will only be used to initiate security contexts. + GSS_C_ACCEPT - Credentials will only be used to accept security contexts. + An object containing the credentials + + + + Acquires credentials for the supplied principal using material stored in a valid keytab + + Username + GSS_C_BOTH - Credentials may be used either to initiate or accept security contexts. + GSS_C_INITIATE - Credentials will only be used to initiate security contexts. + GSS_C_ACCEPT - Credentials will only be used to accept security contexts. + An object containing the credentials + + + + Acquires default credentials stored in the cache + + GSS_C_BOTH - Credentials may be used either to initiate or accept security contexts. + GSS_C_INITIATE - Credentials will only be used to initiate security contexts. + GSS_C_ACCEPT - Credentials will only be used to accept security contexts. + An object containing the credentials + + + + Translates a name in internal form to a textual representation. + + Name in internal form (GSSAPI). + + + + size_t->unsigned int + + + void* + + + OM_uint32->gss_uint32->unsigned int + + + void* + + + OM_uint32->gss_uint32->unsigned int + + + void* + + + + Converts a contiguous string name to GSS_API internal format + The gss_import_name() function converts a contiguous string name to internal form. In general, + the internal name returned by means of the output_name parameter will not be a mechanism name; the exception to this is if the input_name_type + indicates that the contiguous string provided by means of the input_name_buffer parameter is of type GSS_C_NT_EXPORT_NAME, in which case, + the returned internal name will be a mechanism name for the mechanism that exported the name. + + Status code returned by the underlying mechanism. + The gss_buffer_desc structure containing the name to be imported. + A gss_OID that specifies the format that the input_name_buffer is in. + The gss_name_t structure to receive the returned name in internal form. Storage associated with this name must be freed by the application after use with a call to gss_release_name(). + + The gss_import_name() function may return the following status codes: + GSS_S_COMPLETE: The gss_import_name() function completed successfully. + GSS_S_BAD_NAMETYPE: The input_name_type was unrecognized. + GSS_S_BAD_NAME: The input_name parameter could not be interpreted as a name of the specified type. + GSS_S_BAD_MECH: The input_name_type was GSS_C_NT_EXPORT_NAME, but the mechanism contained within the input_name is not supported. + + + + + Allows an application to acquire a handle for a pre-existing credential by name. GSS-API implementations must impose a local access-control + policy on callers of this routine to prevent unauthorized callers from acquiring credentials to which they are not entitled. + This routine is not intended to provide a "login to the network" function, as such a function would involve the creation of new credentials + rather than merely acquiring a handle to existing credentials + + Mechanism specific status code. + Name of principal whose credential should be acquired. + Number of seconds that credentials should remain valid. + Specify GSS_C_INDEFINITE to request that the credentials have the maximum permitted lifetime. + Set of underlying security mechanisms that may be used. + GSS_C_NO_OID_SET may be used to obtain an implementation-specific default. + GSS_C_BOTH - Credentials may be used either to initiate or accept security contexts. + GSS_C_INITIATE - Credentials will only be used to initiate security contexts. + GSS_C_ACCEPT - Credentials will only be used to accept security contexts. + The returned credential handle. Resources associated with this credential handle must be released + by the application after use with a call to gss_release_cred(). + The set of mechanisms for which the credential is valid. Storage associated with the returned OID-set must + be released by the application after use with a call to gss_release_oid_set(). Specify NULL if not required. + Actual number of seconds for which the returned credentials will remain valid. If the implementation does not + support expiration of credentials, the value GSS_C_INDEFINITE will be returned. Specify NULL if not required. + + gss_acquire_cred() may return the following status codes: + GSS_S_COMPLETE: Successful completion. + GSS_S_BAD_MECH: Unavailable mechanism requested. + GSS_S_BAD_NAMETYPE: Type contained within desired_name parameter is not supported. + GSS_S_BAD_NAME: Value supplied for desired_name parameter is ill formed. + GSS_S_CREDENTIALS_EXPIRED: The credentials could not be acquired Because they have expired. + GSS_S_NO_CRED: No credentials were found for the specified name. + + + + + Acquires a credential for use in establishing a security context using a password. + + Mechanism specific status code. + Name of principal whose credential should be acquired. + The password. + Number of seconds that credentials should remain valid. + Specify GSS_C_INDEFINITE to request that the credentials have the maximum permitted lifetime. + Set of underlying security mechanisms that may be used. + GSS_C_NO_OID_SET may be used to obtain an implementation-specific default. + GSS_C_BOTH - Credentials may be used either to initiate or accept security contexts. + GSS_C_INITIATE - Credentials will only be used to initiate security contexts. + GSS_C_ACCEPT - Credentials will only be used to accept security contexts. + The returned credential handle. Resources associated with this credential handle must be released + by the application after use with a call to gss_release_cred(). + The set of mechanisms for which the credential is valid. Storage associated with the returned OID-set must + be released by the application after use with a call to gss_release_oid_set(). Specify NULL if not required. + Actual number of seconds for which the returned credentials will remain valid. If the implementation does not + support expiration of credentials, the value GSS_C_INDEFINITE will be returned. Specify NULL if not required. + + gss_acquire_cred_with_password() may return the following status codes: + GSS_S_COMPLETE: Successful completion. + GSS_S_BAD_MECH: Unavailable mechanism requested. + GSS_S_BAD_NAMETYPE: Type contained within desired_name parameter is not supported. + GSS_S_BAD_NAME: Value supplied for desired_name parameter is ill formed. + GSS_S_CREDENTIALS_EXPIRED: The credentials could not be acquired Because they have expired. + GSS_S_NO_CRED: No credentials were found for the specified name. + + + + + Obtains information about a credential. + + Mechanism specific status code. + A handle that refers to the target credential. + The name whose identity the credential asserts. + The number of seconds for which the credential remain valid. + If the credential has expired, this parameter is set to zero. + How the credential may be used. + Set of mechanisms supported by the credential. + + gss_init_sec_context() may return the following status codes: + GSS_S_COMPLETE: Successful completion. + GSS_S_NO_CRED: The referenced credentials could not be accessed. + GSS_S_DEFECTIVE_CREDENTIAL: The referenced credentials were invalid. + GSS_S_CREDENTIALS_EXPIRED: The referenced credentials have expired. + If the lifetime parameter is not passed in as NULL, then its value is set to 0. + + + + + Initiates the establishment of a security context between the application and a remote peer. + Initially, the input_token parameter should be specified either as GSS_C_NO_BUFFER, or as a pointer to a gss_buffer_desc object whose length field + contains the value zero. The routine may return a output_token which should be transferred to the peer application, where the peer application will + present it to gss_accept_sec_context. If no token need be sent, gss_init_sec_context will indicate this by setting the length field of the output_token + argument to zero. To complete the context establishment, one or more reply tokens may be required from the peer application; if so, gss_init_sec_context + will return a status containing the supplementary information bit GSS_S_CONTINUE_NEEDED. In this case, gss_init_sec_context should be called again when the + reply token is received from the peer application, passing the reply token to gss_init_sec_context via the input_token parameters. + + Mechanism specific status code. + Handle for credentials claimed. Supply GSS_C_NO_CREDENTIAL to act as a default initiator principal. + If no default initiator is defined, the function will return GSS_S_NO_CRED. + Context handle for new context. Supply GSS_C_NO_CONTEXT for first call; use value returned by first call in continuation calls. + Resources associated with this context-handle must be released by the application after use with a call to gss_delete_sec_context(). + Name of target. + Object ID of desired mechanism. Supply GSS_C_NO_OID to obtain an implementation specific default. + Contains various independent flags, each of which requests that the context support a specific service option. + Symbolic names are provided for each flag, and the symbolic names corresponding to the required flags should be logically-ORed together to form the bit-mask value. + Desired number of seconds for which context should remain valid. Supply 0 to request a default validity period. + Application-specified bindings. Allows application to securely bind channel identification information to the security context. + Specify GSS_C_NO_CHANNEL_BINDINGS if channel bindings are not used. + Token received from peer application. Supply GSS_C_NO_BUFFER, or a pointer to a buffer containing the value GSS_C_EMPTY_BUFFER on initial call. + Actual mechanism used. The OID returned via this parameter will be a pointer to static storage that should be treated as read-only; + In particular the application should not attempt to free it. Specify NULL if not required. + Token to be sent to peer application. If the length field of the returned buffer is zero, no token need be sent to the peer application. + Storage associated with this buffer must be freed by the application after use with a call to gss_release_buffer(). + Contains various independent flags, each of which indicates that the context supports a specific service option. + Specify NULL if not required. Symbolic names are provided for each flag, and the symbolic names corresponding to the required flags should be + logically-ANDed with the ret_flags value to test whether a given option is supported by the context. + Number of seconds for which the context will remain valid. If the implementation does not support context expiration, + the value GSS_C_INDEFINITE will be returned. Specify NULL if not required. + + gss_init_sec_context() may return the following status codes: + + GSS_S_COMPLETE: Successful completion. + GSS_S_CONTINUE_NEEDED: A token from the peer application is required to complete the context, and gss_init_sec_context() must be called again with that token. + GSS_S_DEFECTIVE_TOKEN: Consistency checks performed on the input_token failed. + GSS_S_DEFECTIVE_CREDENTIAL: Consistency checks performed on the credential failed. + GSS_S_NO_CRED: The supplied credentials are not valid for context acceptance, or the credential handle does not reference any credentials. + GSS_S_CREDENTIALS_EXPIRED: The referenced credentials have expired. + GSS_S_BAD_BINDINGS: The input_token contains different channel bindings than those specified by means of the input_chan_bindings parameter. + GSS_S_BAD_SIG: The input_token contains an invalid MIC or a MIC that cannot be verified. + GSS_S_OLD_TOKEN: The input_token is too old. This is a fatal error while establishing context. + GSS_S_DUPLICATE_TOKEN: The input_token is valid, but it is a duplicate of a token already processed.This is a fatal error while establishing context. + GSS_S_NO_CONTEXT: The supplied context handle does not refer to a valid context. + GSS_S_BAD_NAMETYPE: The provided target_name parameter contains an invalid or unsupported name type. + GSS_S_BAD_NAME: The supplied target_name parameter is ill-formed. + GSS_S_BAD_MECH: The token received specifies a mechanism that is not supported by the implementation or the provided credential. + + + + + Allows an application to obtain a textual representation of a GSS-API status code, for display to the user or for logging purposes. + Since some status values may indicate multiple conditions, applications may need to call gss_display_status multiple times, + each call generating a single text string. The message_context parameter is used by gss_display_status to store state information about which + error messages have already been extracted from a given status_value; message_context must be initialized to 0 by the application prior to the first call, + and gss_display_status will return a non-zero value in this parameter if there are further messages to extract. + + Mechanism specific status code. + Status value to be converted. + GSS_C_GSS_CODE - status_value is a GSS status code. GSS_C_MECH_CODE - status_value is a mechanism status code. + Underlying mechanism (used to interpret a minor status value). Supply GSS_C_NO_OID to obtain the system default. + Should be initialized to zero by the application prior to the first call. + On return from gss_display_status(), a non-zero status_value parameter indicates that additional messages may be extracted from the status code via + subsequent calls to gss_display_status(), passing the same status_value, status_type, mech_type, and message_context parameters. + Textual interpretation of the status_value. Storage associated with this parameter must be freed by the application + after use with a call to gss_release_buffer(). + + gss_display_status() may return the following status codes: + GSS_S_COMPLETE: Successful completion. + GSS_S_BAD_MECH: Indicates that translation in accordance with an unsupported mechanism type was requested. + GSS_S_BAD_STATUS: The status value was not recognized, or the status type was neither GSS_C_GSS_CODE nor GSS_C_MECH_CODE. + + + + + Allows an application to obtain a textual representation of an opaque internal-form name for display purposes. + The syntax of a printable name is defined by the GSS-API implementation. + + Mechanism specific status code. + Name to be displayed. + Buffer to receive textual name string. + The type of the returned name. + + gss_display_name() may return the following status codes: + GSS_S_COMPLETE: Successful completion. + GSS_S_BAD_NAME: input_name was ill-formed. + + + + + Free storage associated with a buffer. The storage must have been allocated by a GSS-API routine. + In addition to freeing the associated storage, the routine will zero the length field in the descriptor to which the buffer parameter refers, + and implementations are encouraged to additionally set the pointer field in the descriptor to NULL. Any buffer object returned by a GSS-API routine + may be passed to gss_release_buffer (even if there is no storage associated with the buffer). + + Mechanism-specific status code. + The storage associated with the buffer will be deleted. The gss_buffer_desc object will not be freed, + but its length field will be zeroed. + + The gss_release_buffer() function may return the following status codes: + GSS_S_COMPLETE: Successful completion + + + + + Delete a security context. gss_delete_sec_context will delete the local data structures associated with the specified security context, + and may generate an output_token, which when passed to the peer gss_process_context_token will instruct it to do likewise. + If no token is required by the mechanism, the GSS-API should set the length field of the output_token (if provided) to zero. + No further security services may be obtained using the context specified by context_handle. + + Mechanism specific status code. + Context handle identifying context to delete. After deleting the context, + the GSS-API will set this context handle to GSS_C_NO_CONTEXT. + + The gss_delete_sec_context() function may return the following status codes: + GSS_S_COMPLETE: Successful completion. + GSS_S_NO_CONTEXT: No valid context was supplied. + + + + + Free GSSAPI-allocated storage associated with an internal-form name. The name is set to GSS_C_NO_NAME on successful completion of this call. + + Mechanism specific status code. + The name to be deleted. + + The gss_release_name() function may return the following status codes: + GSS_S_COMPLETE: Successful completion. + GSS_S_BAD_NAME: The name parameter did not contain a valid name. + + + + + Informs GSS-API that the specified credential handle is no longer required by the application, and frees associated resources. + The cred_handle is set to GSS_C_NO_CREDENTIAL on successful completion of this call. + + Mechanism specific status code. + Opaque handle identifying credential to be released. If GSS_C_NO_CREDENTIAL is supplied, + the routine will complete successfully, but will do nothing. + + The gss_release_cred() function may return the following status codes: + GSS_S_COMPLETE: Successful completion. + GSS_S_NO_CRED: Credentials could not be accessed. + + + + + Converts a message previously protected by gss_wrap back to a usable form, verifying the embedded MIC. + The conf_state parameter indicates whether the message was encrypted; the qop_state parameter indicates the strength of + protection that was used to provide the confidentiality and integrity services. + + Mechanism specific status code. + Identifies the context on which the message arrived. + Protected message. + Buffer to receive unwrapped message. + State of the configuration. + State of the QoP. + + The gss_unwrap() function may return the following status codes: + GSS_S_COMPLETE: Successful completion. + GSS_S_DEFECTIVE_TOKEN: The token failed consistency checks. + GSS_S_BAD_SIG: The MIC was incorrect. + GSS_S_DUPLICATE_TOKEN: The token was valid, and contained a correct MIC for the message, but it had already been processed. + GSS_S_OLD_TOKEN: The token was valid, and contained a correct MIC for the message, but it is too old to check for duplication. + GSS_S_UNSEQ_TOKEN: The token was valid, and contained a correct MIC for the message, but has been verified out of sequence; + a later token has already been received. + GSS_S_GAP_TOKEN: The token was valid, and contained a correct MIC for the message, but has been verified out of sequence; + an earlier expected token has not yet been received. + GSS_S_CONTEXT_EXPIRED: The context has already expired. + GSS_S_NO_CONTEXT: The context_handle parameter did not identify a valid context. + + + + + Attaches a cryptographic MIC and optionally encrypts the specified input_message. The output_message contains both the MIC and the message. + The qop_req parameter allows a choice between several cryptographic algorithms, if supported by the chosen mechanism. + + Mechanism specific status code. + Identifies the context on which the message arrived. + Message to be protected. + Buffer to receive protected message. + + The gss_unwrap() function may return the following status codes: + GSS_S_COMPLETE: Successful completion. + GSS_S_CONTEXT_EXPIRED: The context has already expired. + GSS_S_NO_CONTEXT: The context_handle parameter did not identify a valid context. + GSS_S_BAD_QOP: The specified QOP is not supported by the mechanism. + + + + + MIT Kerberos 5 GSS Bindings Linux + + + + + MIT Kerberos 5 GSS Bindings Windows 64bit + + + + + Automatic dynamic disposable + + + + + Automatic dynamic disposable storing + + + + + Automatic dynamic disposable storing , will be called at dispose + + + + + Automatic dynamic disposable storing , will be disposed + + + + + Automatic dynamic disposable storing , will be disposed + + + + + Automatic dynamic disposable storing , will be disposed + + + + + Automatic dynamic disposable storing , will be disposed and will be called at dispose + + + + + Automatic dynamic disposable + + + + + Original value, can be used with ref + + + + + Automatic dynamic disposable storing , will be disposed and will be called at dispose + + + + + Returns stored value + + + + + Gets the Kerberos configuration from the "krb5.conf/krb5.ini" file + + + + + Memory pinned object + + + + + Create memory pinned object from + + Any class type + Value to pin + Pinned value + + + + Memory pinned object + + Any class type + + + + Original object value, can be used with ref + + + + + In memory address of the object + + + + + Create memory pinned object from + + Value to pin + + + + Returns address of object in memory + + + + + Returns original object value + + + + + SSPI constants + + + + + SSPI Bindings + + + + + A safe handle to the credential's handle. + + + + + Acquires a handle to preexisting credentials of a security principal. + + + + + Creates an instance of SspiSecurityContext with credentials provided. + + Credentials to be used with the Security Context + + + + Initiates the client side, outbound security context from a credential handle. + + Byte array to be sent to the server. + Byte array received by the server. + The target. + + + + Defines the type of the security buffer. + + + + + Defines a security handle. + + + + + Describes a buffer allocated by a transport to pass to a security package. + + + + + Specifies the size, in bytes, of the buffer. + + + + + Bit flags that indicate the type of the buffer. + + + + + Pointer to a buffer. + + + + + Hold a numeric value used in defining other data types. + + + + + Least significant digits. + + + + + Most significant digits. + + + + + Holds a pointer used to define a security handle. + + + + + Least significant digits. + + + + + Most significant digits. + + + + + Indicates the sizes of important structures used in the message support functions. + + + + + Specifies the maximum size of the security token used in the authentication changes. + + + + + Specifies the maximum size of the signature created by the MakeSignature function. + This member must be zero if integrity services are not requested or available. + + + + + Specifies the preferred integral size of the messages. + + + + + Size of the security trailer to be appended to messages. + This member should be zero if the relevant services are not requested or available. + + + + + Implements the 'SEC_WINNT_AUTH_IDENTITY' structure. See: + https://msdn.microsoft.com/en-us/library/windows/desktop/aa380131(v=vs.85).aspx + + + + + DNS resolver that runs queries against a server. + + + + + Initializes a new instance of the class. + + + + + Gets the DNS SVR records of the service name that is provided. + + A list of s sorted as described in RFC2782. + + + + Sorts a list of DNS SRV records according to the sorting rules described in RFC2782. + + List of s to sort. + A new list of sorted s. + + + + Resets the DnsSrvResolver + + + + + DNS record type. + + + + + CLASS fields appear in resource records. + + + + + The Internet. + + + + + DNS question type. + QueryType are a superset of RecordType. + + + + + A resource record which specifies the location of the server(s) for a specific protocol and domain. + + RFC 2782 + + + + + DNS Record OpCode. + A four bit field that specifies kind of query in this message. + This value is set by the originator of a query and copied into the response. + + + + + A standard query (QUERY). + + + + + Retired IQUERY code. + + + + + A server status request (STATUS). + + + + + Notify OpCode. + + + + + Update OpCode. + + + + + The class transports information of the lookup query performed. + + + + + Gets the domain name + + + + + Gets the type of the question. + + + + + Gets the question class. + + + + + Initializes a new instance of the class. + + Domain name. + Type of the question. + The question class. + + + + Initializes a new instance of the class. + + of the record. + + + + Gets the bytes in this collection. + + + + + Gets or sets the unique identifier of the record. + + + + + Gets or sets the number of questions in the record. + + + + + Gets or sets the number of answers in the record. + + + + + Gets or sets the number of name servers in the record. + + + + + Gets or sets the number of additional records in the record. + + + + + Specifies kind of query. + + + + + Recursion Desired + + + + + Represents the header as a byte array + + + + + The Resource Record this record data belongs to. + + + + + A DNS record reader. + + + + + Gets or sets the position of the cursor in the record. + + + + + Initializes a new instance of the class. + + Byte array of the record. + Position of the cursor in the record. + + + + Initializes a new instance of the class. + + Byte array of the record. + + + + Read a byte from the record. + + + + + Read a char from the record. + + + + + Read an unsigned int 16 from the record. + + + + + Read an unsigned int 16 from the offset of the record. + + Offset to start reading from. + + + + Read an unsigned int 32 from the record. + + + + + Read the domain name from the record. + + Domain name of the record. + + + + Read a string from the record. + + + + + Read a series of bytes from the record. + + Length to read from the record. + + + + Read record from the data. + + Type of the record to read. + Record read from the data. + + + + A default Dns Record. + + + + + A DNS request. + + + + Gets the header. + + + + The default DNS server port. + + + + + Fills a list of the endpoints in the local network configuration. + + + + Execute a query on a DNS server. + Domain name to look up. + DNS response for request. + + + + Gets the name of the node to which this resource record pertains. + + + + + Gets the type of resource record. + + + + + Gets the type class of resource record, mostly IN but can be CS, CH or HS. + + + + + Gets the time to live, in seconds, that the resource record may be cached. + + + + + Gets the record length. + + + + + Gets one of the Record* classes. + + + + + Answer resource record. + + + + + Authority resource record. + + + + + Additional resource record. + + + + + List of Question records. + + + + + List of AnswerResourceRecord records. + + + + + List of AuthorityResourceRecord records. + + + + + List of AdditionalResourceRecord records. + + + + + The record header. + + + + + Server which delivered this response. + + + + + The Size of the message. + + + + + Error message, empty when no error. + + + + + TimeStamp when cached. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + of the DNS server that responded to the query. + array of the response data. + + + + List of RecordSRV in Response.Answers + + + + + Class that represents a DNS SRV record. + RFC 2782 (https://tools.ietf.org/html/rfc2782) + + + + + Gets the port. + + + + + Gets the priority. + + + + + Gets the target domain name. + + + + + Gets the weight. + + + + + Initializes a new instance of class. + + The port. + The priority. + The target. + The weight. + + + + Initializes a new instance of class. + + of the record data. + + + + Compare two objects. First, using their priority and + if both have the same, then using their weights. + + A to compare. + A to compare. + + + + + This class is modeled after .NET Stopwatch. It provides better + performance (no system calls).It is however less precise than + .NET Stopwatch, measuring in milliseconds. It is adequate to use + when high-precision is not required (e.g for measuring IO timeouts), + but not for other tasks. + + + + + Wrapper around NetworkStream. + + MyNetworkStream is equivalent to NetworkStream, except + 1. It throws TimeoutException if read or write timeout occurs, instead + of IOException, to match behavior of other streams (named pipe and + shared memory). This property comes handy in TimedStream. + + 2. It implements workarounds for WSAEWOULDBLOCK errors, that can start + occuring after stream has times out. For a discussion about the CLR bug, + refer to http://tinyurl.com/lhgpyf. This error should never occur, as + we're not using asynchronous operations, but apparerntly it does occur + directly after timeout has expired. + The workaround is hinted in the URL above and implemented like this: + For each IO operation, if it throws WSAEWOULDBLOCK, we explicitely set + the socket to Blocking and retry the operation once again. + + + + + Determines whether the connection state is closed or open. + + true if connection is closed; otherwise, false. + + + + Set keepalive + timeout on socket. + + socket + keepalive timeout, in seconds + + + + Read a single quoted identifier from the stream + + + + + + + Helper class to encapsulate shared memory functionality + Also cares of proper cleanup of file mapping object and cew + + + + + Summary description for SharedMemoryStream. + + + + + By creating a private ctor, we keep the compiler from creating a default ctor + + + + + Mark - or + signs that are unary ops as no output + + + + + + Handles SSL connections for the Classic and X protocols. + + + + + Contains the connection options provided by the user. + + + + + A flag to establish how certificates are to be treated and validated. + + + + + Defines the supported TLS protocols. + + + + + Retrieves a certificate from PEM file. + + + + + Retrieves a collection containing the client SSL PFX certificates. + + Dependent on connection string settings. + Either file or store based certificates are used. + + + + Initiates the SSL connection. + + The base stream. + The encoding used in the SSL connection. + The connection string used to establish the connection. + Boolean that indicates if the function will be executed asynchronously. + The cancellation token. + A instance ready to initiate an SSL connection. + + + + Verifies the SSL certificates used for authentication. + + An object that contains state information for this validation. + The MySQL server certificate used to authenticate the remote party. + The chain of certificate authorities associated with the remote certificate. + One or more errors associated with the remote certificate. + true if no errors were found based on the selected SSL mode; false, otherwise. + + + + Gets the extension of the specified file. + + The path of the file. + Flag to indicate if the result should be converted to lower case. + The . character is ommited from the result. + + + + + Summary description for StreamCreator. + + + + + Set the keepalive timeout on the socket. + + The socket object. + The keepalive timeout, in seconds. + + + + Summary description for Version. + + + + + Provides functionality to read SSL PEM certificates and to perform multiple validations via Bouncy Castle. + + + + + Raises an exception if the specified connection option is null, empty or whitespace. + + The connection option to verify. + The name of the connection option. + + + + Reads the specified file as a byte array. + + The path of the file to read. + A byte array representing the read file. + + + + Reads the SSL certificate file. + + The path to the certificate file. + A instance representing the SSL certificate file. + + + + Reads the SSL certificate key file. + + The path to the certificate key file. + A instance representing the SSL certificate key file. + + + + Verifies that the certificate has not yet expired. + + The certificate to verify. + + + + Verifies a certificate CA status. + + The certificate to validate. + A flag indicating the expected CA status. + + + + Verifies that the certificate was signed using the private key that corresponds to the specified public key + + The client side certificate containing the public key. + The server certificate. + + + + Verifies that no SSL policy errors regarding the identitfy of the host were raised. + + A instance set with the raised SSL errors. + + + + Verifies that the issuer matches the CA by comparing the CA certificate issuer and the server certificate issuer. + + The CA certificate. + The server certificate. + + + + + Gets and sets the host list. + + + + + Gets the active host. + + + + + Active host. + + + + + Sets the initial active host. + + + + + Determines the next host. + + object that represents the next available host. + + + + Implements common elements that allow to manage the hosts available for client side failover. + + + + + Gets and sets the failover group which consists of a host list. + + + + + Resets the manager. + + + + + Sets the host list to be used during failover operations. + + The host list. + The failover method. + + + + Attempts to establish a connection to a host specified from the list. + + The original connection string set by the user. + An out parameter that stores the updated connection string. + A object in case this is a pooling scenario. + A flag indicating if the default port is used in the connection. + An instance if the connection was succesfully established, a exception is thrown otherwise. + + + + + Creates a if more than one host is found. + + A string containing an unparsed list of hosts. + true if the connection is X Protocol; otherwise false. + true if the connection data is a URI; otherwise false. + The number of hosts found, -1 if an error was raised during parsing. + + + + Creates a object based on the provided parameters. + + The host string that can be a simple host name or a host name and port. + The priority of the host. + The port number of the host. + true if the connection data is a URI; otherwise false. + + + + + Attempts the next host in the list. Moves to the first element if the end of the list is reached. + + + + + Determines the next host on which to attempt a connection by checking the value of the Priority property in descending order. + + + + + Determines the next host on which to attempt a connection randomly. + + + + + Depicts a host which can be failed over to. + + + + + Gets and sets the name or address of the host. + + + + + Gets and sets the port number. + + + + + Gets a value between 0 and 100 which represents the priority of the host. + + + + + Flag to indicate if this host is currently being used. + + + + + Flag to indicate if this host has been attempted to connection. + + + + + Time since the host has been demoted. + + + + + Initializes a object. + + The host. + The port. + The priority. + + + + Compares two objects of type . + + FailoverServer object to compare. + True if host properties are the same. Otherwise, false. + + + + Manages the hosts available for client side failover using the Random Failover method. + The Random Failover method attempts to connect to the hosts specified in the list randomly until all the hosts have been attempted. + + + + + The initial host taken from the list. + + + + + The host for the current connection attempt. + + + + + Random object to get the next host. + + + + + Sets the initial active host. + + + + + Determines the next host. + + A object that represents the next available host. + + + + Manages the hosts available for client side failover using the Sequential Failover method. + The Sequential Failover method attempts to connect to the hosts specified in the list one after another until the initial host is reached. + + + + + The initial host taken from the list. + + + + + The index of the current host. + + + + + The host for the current connection attempt. + + + + + Sets the initial active host. + + + + + Determines the next host. + + A object that represents the next available host. + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to Improper MySqlCommandBuilder state: adapter is null. + + + + + Looks up a localized string similar to Improper MySqlCommandBuilder state: adapter's SelectCommand is null. + + + + + Looks up a localized string similar to Invalid attempt to access a field before calling Read(). + + + + + Looks up a localized string similar to Authentication to host '{0}' for user '{1}' using method '{2}' failed with message: {3}. + + + + + Looks up a localized string similar to Authentication method '{0}' not supported by any of the available plugins.. + + + + + Looks up a localized string similar to Authentication plugin '{0}' is currently not supported.. + + + + + Looks up a localized string similar to Version string not in acceptable format. + + + + + Looks up a localized string similar to The buffer cannot be null. + + + + + Looks up a localized string similar to The buffer is not large enough. + + + + + Looks up a localized string similar to Canceling an executing query requires MySQL 5.0 or higher.. + + + + + Looks up a localized string similar to Canceling an active query is only supported on MySQL 5.0.0 and above. . + + + + + Looks up a localized string similar to Parameters can only be derived for commands using the StoredProcedure command type.. + + + + + Looks up a localized string similar to MySqlCommandBuilder does not support multi-table statements. + + + + + Looks up a localized string similar to MySqlCommandBuilder cannot operate on tables with no unique or key columns. + + + + + Looks up a localized string similar to Chaos isolation level is not supported . + + + + + Looks up a localized string similar to Clear-password authentication is not supported over insecure channels.. + + + + + Looks up a localized string similar to The CommandText property has not been properly initialized.. + + + + + Looks up a localized string similar to Compression is not supported.. + + + + + Looks up a localized string similar to The connection is already open.. + + + + + Looks up a localized string similar to Connection unexpectedly terminated.. + + + + + Looks up a localized string similar to Connection must be valid and open. + + + + + Looks up a localized string similar to The connection is not open.. + + + + + Looks up a localized string similar to The connection property has not been set or is null.. + + + + + Looks up a localized string similar to Could not find specified column in results: {0}. + + + + + Looks up a localized string similar to Count cannot be negative. + + + + + Looks up a localized string similar to SetLength is not a valid operation on CompressedStream. + + + + + Looks up a localized string similar to The given value was not in a supported format.. + + + + + Looks up a localized string similar to There is already an open DataReader associated with this Connection which must be closed first.. + + + + + Looks up a localized string similar to The default connection encoding was not found. Please report this as a bug along with your connection string and system details.. + + + + + Looks up a localized string similar to MySQL Connector/NET does not currently support distributed transactions.. + + + + + Looks up a localized string similar to Specifying multiple host names with DNS SRV lookup is not permitted.. + + + + + Looks up a localized string similar to Specifying a port number with DNS SRV lookup is not permitted.. + + + + + Looks up a localized string similar to Using Unix domain sockets with DNS SRV lookup is not permitted.. + + + + + Looks up a localized string similar to Unable to locate any hosts for {0}.. + + + + + Looks up a localized string similar to Encoding error during validation.. + + + + + Looks up a localized string similar to Error creating socket connection. + + + + + Looks up a localized string similar to Verify that user '{0}'@'{1}' has enough privileges to execute.. + + + + + Looks up a localized string similar to Fatal error encountered during command execution.. + + + + + Looks up a localized string similar to Fatal error encountered during data read.. + + + + + Looks up a localized string similar to Fatal error encountered attempting to read the resultset.. + + + + + Looks up a localized string similar to Challenge received is corrupt.. + + + + + Looks up a localized string similar to FIDO registration is missing.. + + + + + Looks up a localized string similar to File based certificates are only supported when connecting to MySQL Server 5.1 or greater.. + + + + + Looks up a localized string similar to The specified file cannot be converted to a certificate.. + + + + + Looks up a localized string similar to The specified file cannot be converted to a key.. + + + + + Looks up a localized string similar to Failed to read file at the specified location.. + + + + + Looks up a localized string similar to No file path has been provided for the connection option {0}.. + + + + + Looks up a localized string similar to From index and length use more bytes than from contains. + + + + + Looks up a localized string similar to From index must be a valid index inside the from buffer. + + + + + Looks up a localized string similar to Call to GetHostEntry failed after {0} while querying for hostname '{1}': SocketErrorCode={2}, ErrorCode={3}, NativeErrorCode={4}.. + + + + + Looks up a localized string similar to Retrieving procedure metadata for {0} from server.. + + + + + Looks up a localized string similar to Value has an unsupported format.. + + + + + Looks up a localized string similar to An incorrect response was received from the server.. + + + + + Looks up a localized string similar to Index and length use more bytes than to has room for. + + + + + Looks up a localized string similar to Index must be a valid position in the buffer. + + + + + Looks up a localized string similar to The provided key is invalid.. + + + + + Looks up a localized string similar to Certificate with Thumbprint '{0}' not found.. + + + + + Looks up a localized string similar to You have specified an invalid column ordinal.. + + + + + Looks up a localized string similar to The requested value '{0}' is invalid for the given keyword '{1}'.. + + + + + Looks up a localized string similar to The host name or IP address is invalid.. + + + + + Looks up a localized string similar to Microsecond must be a value between 0 and 999999.. + + + + + Looks up a localized string similar to Millisecond must be a value between 0 and 999. For more precision use Microsecond.. + + + + + Looks up a localized string similar to Either provide a valid path for 'allowloadlocalinfileinpath' or enable 'allowloadlocalinfile'.. + + + + + Looks up a localized string similar to Procedure or function '{0}' cannot be found in database '{1}'.. + + + + + Looks up a localized string similar to The certificate is invalid.. + + + + + Looks up a localized string similar to Unable to validate the signature.. + + + + + Looks up a localized string similar to Unable to verify the signature.. + + + + + Looks up a localized string similar to Value '{0}' is not of the correct type.. + + + + + Looks up a localized string similar to '{0}' is an illegal value for a boolean option.. + + + + + Looks up a localized string similar to Keyword does not allow null values.. + + + + + Looks up a localized string similar to Option not supported.. + + + + + Looks up a localized string similar to Server asked for stream in response to LOAD DATA LOCAL INFILE, but the functionality is disabled by the client setting 'allowlocalinfile' to 'false'.. + + + + + Looks up a localized string similar to Mixing named and unnamed parameters is not allowed.. + + + + + Looks up a localized string similar to INTERNAL ERROR: More than one output parameter row detected.. + + + + + Looks up a localized string similar to Multiple simultaneous connections or connections with different connection strings inside the same transaction are not currently supported.. + + + + + Looks up a localized string similar to NamedPipeStream does not support seeking. + + + + + Looks up a localized string similar to NamedPipeStream doesn't support SetLength. + + + + + Looks up a localized string similar to The new value must be a MySqlParameter object.. + + + + + Looks up a localized string similar to Invalid attempt to call NextResult when the reader is closed.. + + + + + Looks up a localized string similar to When calling stored procedures and 'Use Procedure Bodies' is false, all parameters must have their type explicitly set.. + + + + + Looks up a localized string similar to Nested transactions are not supported.. + + + + + Looks up a localized string similar to The host {0} does not support SSL connections.. + + + + + Looks up a localized string similar to Unix sockets are not supported on Windows.. + + + + + Looks up a localized string similar to Cannot retrieve Windows identity for current user. Connections that use IntegratedSecurity cannot be pooled. Use either 'ConnectionReset=true' or 'Pooling=false' in the connection string to fix.. + + + + + Looks up a localized string similar to The object is not open or has been disposed.. + + + + + Looks up a localized string similar to OCI configuration file could not be read.. + + + + + Looks up a localized string similar to OCI configuration profile not found.. + + + + + Looks up a localized string similar to OCI configuration file does not contain a 'fingerprint' or 'key_file' entry.. + + + + + Looks up a localized string similar to OCI configuration entry 'key_file' does not reference a valid key file.. + + + + + Looks up a localized string similar to Private key could not be found at location given by OCI configuration entry 'key_file'.. + + + + + Looks up a localized string similar to The OCI SDK cannot be found or is not installed.. + + + + + Looks up a localized string similar to Secutiry token file could not be found at location given by OCI configuration entry 'security_token_file'.. + + + + + Looks up a localized string similar to The size of the OCI security token file exceeds the maximum value of 10KB allowed.. + + + + + Looks up a localized string similar to The offset cannot be negative. + + + + + Looks up a localized string similar to Offset must be a valid position in buffer. + + + + + Looks up a localized string similar to Authentication with old password no longer supported, use 4.1 style passwords.. + + + + + Looks up a localized string similar to The option '{0}' is not currently supported.. + + + + + Looks up a localized string similar to Parameter '{0}' has already been defined.. + + + + + Looks up a localized string similar to Parameter cannot have a negative value. + + + + + Looks up a localized string similar to Parameter cannot be null. + + + + + Looks up a localized string similar to Parameter '{0}' can't be null or empty.. + + + + + Looks up a localized string similar to Parameter index was not found in Parameter Collection.. + + + + + Looks up a localized string similar to Parameter is invalid.. + + + + + Looks up a localized string similar to Parameter '{0}' must be defined.. + + + + + Looks up a localized string similar to Parameter '{0}' was not found during prepare.. + + + + + Looks up a localized string similar to Parameter can't be null or empty.. + + + + + Looks up a localized string similar to Password must be valid and contain length characters. + + + + + Looks up a localized string similar to This category includes a series of counters for MySQL. + + + + + Looks up a localized string similar to .NET Data Provider for MySQL. + + + + + Looks up a localized string similar to The number of times a procedures metadata had to be queried from the server.. + + + + + Looks up a localized string similar to Hard Procedure Queries. + + + + + Looks up a localized string similar to The number of times a procedures metadata was retrieved from the client-side cache.. + + + + + Looks up a localized string similar to Soft Procedure Queries. + + + + + Looks up a localized string similar to same name are not supported.. + + + + + Looks up a localized string similar to MySQL Server {0} dos not support query attributes.. + + + + + Looks up a localized string similar to MySQL Connector/NET does not support query attributes with prepared statements for this version of MySQL Server.. + + + + + Looks up a localized string similar to Packets larger than max_allowed_packet are not allowed.. + + + + + Looks up a localized string similar to Reading from the stream has failed.. + + + + + Looks up a localized string similar to Invalid attempt to read a prior column using SequentialAccess. + + + + + Looks up a localized string similar to Replicated connections allow only readonly statements.. + + + + + Looks up a localized string similar to Attempt to connect to '{0}' server failed.. + + + + + Looks up a localized string similar to No available server found.. + + + + + Looks up a localized string similar to Replication group '{0}' not found.. + + + + + Looks up a localized string similar to Replicated server not found: '{0}'. + + + + + Looks up a localized string similar to Routine '{0}' cannot be found. Either check the spelling or make sure you have sufficient rights to execute the routine.. + + + + + Looks up a localized string similar to Attempt to call stored function '{0}' without specifying a return parameter. + + + + + Looks up a localized string similar to Retrieval of the RSA public key is not enabled for insecure connections.. + + + + + Looks up a localized string similar to Connector/NET no longer supports server versions prior to 5.0. + + + + + Looks up a localized string similar to Snapshot isolation level is not supported.. + + + + + Looks up a localized string similar to Socket streams do not support seeking. + + + + + Looks up a localized string similar to Retrieving procedure metadata for {0} from procedure cache.. + + + + + Looks up a localized string similar to Stored procedures are not supported on this version of MySQL. + + + + + Looks up a localized string similar to The certificate authority (CA) does not match.. + + + + + Looks up a localized string similar to The host name does not match the name on the certificate.. + + + + + Looks up a localized string similar to The certificate is not a certificate authority (CA).. + + + + + Looks up a localized string similar to SSL Connection error.. + + + + + Looks up a localized string similar to Connection protocol '{0}' does not support SSL connections.. + + + + + Looks up a localized string similar to The stream has already been closed. + + + + + Looks up a localized string similar to The stream does not support reading. + + + + + Looks up a localized string similar to The stream does not support writing. + + + + + Looks up a localized string similar to String can't be empty.. + + + + + Looks up a localized string similar to Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.. + + + + + Looks up a localized string similar to error connecting: Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.. + + + + + Looks up a localized string similar to All server connection attempts were aborted. Timeout of {0} seconds was exceeded for each selected server.. + + + + + Looks up a localized string similar to Specified list of TLS versions only contains non valid TLS protocols. Accepted values are TLSv1.2 and TLSv1.3. + + + + + Looks up a localized string similar to TLS protocols TLSv1 and TLSv1.1 are no longer supported. Accepted values are TLSv1.2 and TLSv1.3. + + + + + Looks up a localized string similar to Specified list of TLS versions is empty. Accepted values are TLSv1.2 and TLSv1.3. + + + + + Looks up a localized string similar to {0}: Connection Closed. + + + + + Looks up a localized string similar to Unable to trace. There are more than Int32.MaxValue connections in use.. + + + + + Looks up a localized string similar to {0}: Error encountered during row fetch. Number = {1}, Message={2}. + + + + + Looks up a localized string similar to {0}: Connection Opened: connection string = '{1}'. + + + + + Looks up a localized string similar to {0}: Error encountered attempting to open result: Number={1}, Message={2}. + + + + + Looks up a localized string similar to {0}: Query Closed. + + + + + Looks up a localized string similar to {0}: Query Normalized: {2}. + + + + + Looks up a localized string similar to {0}: Query Opened: {2}. + + + + + Looks up a localized string similar to {0}: Resultset Opened: field(s) = {1}, affected rows = {2}, inserted id = {3}. + + + + + Looks up a localized string similar to {0}: Resultset Closed. Total rows={1}, skipped rows={2}, size (bytes)={3}. + + + + + Looks up a localized string similar to {0}: Set Database: {1}. + + + + + Looks up a localized string similar to {0}: Statement closed: statement id = {1}. + + + + + Looks up a localized string similar to {0}: Statement executed: statement id = {1}. + + + + + Looks up a localized string similar to {0}: Statement prepared: sql='{1}', statement id={2}. + + + + + Looks up a localized string similar to {0}: Usage Advisor Warning: Query is using a bad index. + + + + + Looks up a localized string similar to {0}: Usage Advisor Warning: The field '{2}' was converted to the following types: {3}. + + + + + Looks up a localized string similar to {0}: Usage Advisor Warning: Query does not use an index. + + + + + Looks up a localized string similar to {0}: Usage Advisor Warning: The following columns were not accessed: {2}. + + + + + Looks up a localized string similar to {0}: Usage Advisor Warning: Skipped {2} rows. Consider a more focused query.. + + + + + Looks up a localized string similar to {0}: MySql Warning: Level={1}, Code={2}, Message={3}. + + + + + Looks up a localized string similar to Type '{0}' is not derived from BaseCommandInterceptor. + + + + + Looks up a localized string similar to Type '{0}' is not derived from BaseExceptionInterceptor. + + + + + Looks up a localized string similar to Unable to connect to any of the specified MySQL hosts.. + + + + + Looks up a localized string similar to Unable to create plugin for authentication method '{0}'. Please see inner exception for details.. + + + + + Looks up a localized string similar to Unable to derive stored routine parameters. The 'Parameters' information schema table is not available and access to the stored procedure body has been disabled.. + + + + + Looks up a localized string similar to Unable to enable query analysis. Be sure the MySql.Data.EMTrace assembly is properly located and registered.. + + + + + Looks up a localized string similar to An error occured attempting to enumerate the user-defined functions. Do you have SELECT privileges on the mysql.func table?. + + + + + Looks up a localized string similar to Unable to execute stored procedure '{0}'.. + + + + + Looks up a localized string similar to There was an error parsing the foreign key definition.. + + + + + Looks up a localized string similar to Error encountered reading the RSA public key.. + + + + + Looks up a localized string similar to Unable to retrieve stored procedure metadata for routine '{0}'. Either grant SELECT privilege to mysql.proc for this user or use "check parameters=false" with your connection string.. + + + + + Looks up a localized string similar to Unable to start a second async operation while one is running.. + + + + + Looks up a localized string similar to Unix sockets are not supported on Windows. + + + + + Looks up a localized string similar to Unknown authentication method '{0}' was requested.. + + + + + Looks up a localized string similar to Unknown connection protocol. + + + + + Looks up a localized string similar to MySQL user '{0}' does not equal the logged-in Windows user '{1}'.. + + + + + Looks up a localized string similar to Trying to upload a file from outside the path set on 'allowloadlocalinfileinpath' is invalid.. + + + + + Looks up a localized string similar to Value '{0}' is not of the correct type.. + + + + + Looks up a localized string similar to The requested column value could not be treated as or conveted to a Guid.. + + + + + Looks up a localized string similar to An event handler for WebAuthnActionRequested was not specified.. + + + + + Looks up a localized string similar to The timeout of 15 seconds for user interaction with FIDO device has been exceeded.. + + + + + Looks up a localized string similar to Windows authentication connections are not supported on {0}. + + + + + Looks up a localized string similar to Writing to the stream failed.. + + + + + Looks up a localized string similar to Parameter '{0}' is not found but a parameter with the name '{1}' is found. Parameter names must include the leading parameter marker.. + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to Appdata path is not defined.. + + + + + Looks up a localized string similar to Authentication failed using MYSQL41 and SHA256_MEMORY. Check the user name and password or try using a secure connection.. + + + + + Looks up a localized string similar to You can't get more sessions because Client is closed.. + + + + + Looks up a localized string similar to Client option '{0}' does not support value '{1}'.. + + + + + Looks up a localized string similar to Client option '{0}' is not recognized as valid.. + + + + + Looks up a localized string similar to {0} '{1}' does not exist in schema '{2}'.. + + + + + Looks up a localized string similar to Compression requested but the compression algorithm negotiation failed.. + + + + + Looks up a localized string similar to Compression using {0} is not supported.. + + + + + Looks up a localized string similar to Compression using {0} is not supported in .NET Framework.. + + + + + Looks up a localized string similar to The connection property 'compression' acceptable values are: 'preferred', 'required' or 'disabled'. The value '{0}' is not acceptable.. + + + + + Looks up a localized string similar to Compression is not enabled.. + + + + + Looks up a localized string similar to Compression requested but the server does not support it.. + + + + + Looks up a localized string similar to There are still decompressed messages pending to be processed.. + + + + + Looks up a localized string similar to Custom type mapping is only supported from .NET Core 3.1 and later.. + + + + + Looks up a localized string similar to '{0}' cannot be set to false with DNS SRV lookup enabled.. + + + + + Looks up a localized string similar to Scheme '{0}' is not valid.. + + + + + Looks up a localized string similar to The document path cannot be null or an empty string.. + + + + + Looks up a localized string similar to Duplicate key '{0}' used in "connection-attributes".. + + + + + Looks up a localized string similar to Key name in connection attribute cannot be an empty string.. + + + + + Looks up a localized string similar to At least one option must be specified.. + + + + + Looks up a localized string similar to This feature is currently not supported.. + + + + + Looks up a localized string similar to This functionality is only supported in MySQL {0} and higher.. + + + + + Looks up a localized string similar to Collation with id '{0}' not found.. + + + + + Looks up a localized string similar to The value of "connection-attributes" must be either a boolean or a list of key-value pairs.. + + + + + Looks up a localized string similar to Connection Data is incorrect.. + + + + + Looks up a localized string similar to The connection string is invalid.. + + + + + Looks up a localized string similar to '{0}' is not a valid connection string attribute.. + + + + + Looks up a localized string similar to The connection timeout value must be a positive integer (including 0).. + + + + + Looks up a localized string similar to Decimal (BCD) format is invalid.. + + + + + Looks up a localized string similar to Field type with name '{0}' not found.. + + + + + Looks up a localized string similar to Index type with name '{0}' not found.. + + + + + Looks up a localized string similar to The value provided is not a valid JSON document. {0}. + + + + + Looks up a localized string similar to {0} is not a valid column name in the row.. + + + + + Looks up a localized string similar to {0} is not a valid index for the row.. + + + + + Looks up a localized string similar to Session state is not valid.. + + + + + Looks up a localized string similar to Invalid Uri . + + + + + Looks up a localized string similar to Invalid uri query value. + + + + + Looks up a localized string similar to Key names in "connection-attributes" cannot start with "_".. + + + + + Looks up a localized string similar to Json configuration must contain 'uri' or 'host' but not both.. + + + + + Looks up a localized string similar to Keyword '{0}' not found.. + + + + + Looks up a localized string similar to Keyword not supported.. + + + + + Looks up a localized string similar to Field '{0}' is mandatory.. + + + + + Looks up a localized string similar to Missed required schema option.. + + + + + Looks up a localized string similar to More than one document id was generated. Please use the DocumentIds property instead.. + + + + + Looks up a localized string similar to There is no data at index {0}. + + + + + Looks up a localized string similar to No 'host' has been specified.. + + + + + Looks up a localized string similar to No more data in resultset.. + + + + + Looks up a localized string similar to Object '{0}' not found. + + + + + Looks up a localized string similar to No placeholders.. + + + + + Looks up a localized string similar to Connection closed. Reason: connection idle was too long. + + + + + Looks up a localized string similar to Connection closed. Reason: connection was killed by a different session. + + + + + Looks up a localized string similar to Connection closed. Reason: server was shutdown. + + + + + Looks up a localized string similar to {0} must be a value greater than 0.. + + + + + Looks up a localized string similar to Path not found '{0}'.. + + + + + Looks up a localized string similar to Queue timeout expired. The timeout period elapsed prior to getting a session from the pool.. + + + + + Looks up a localized string similar to Providing a port number as part of the host address isn't supported when using connection strings in basic format or anonymous objects. Use URI format instead.. + + + + + Looks up a localized string similar to You must either assign no priority to any of the hosts or give a priority for every host.. + + + + + Looks up a localized string similar to The priority must be between 0 and 100.. + + + + + Looks up a localized string similar to ProgramData path is not defined.. + + + + + Looks up a localized string similar to Replacement document has an '_id' that is + different from the matched document.. + + + + + Looks up a localized string similar to The server doesn't support the requested operation. Please update the MySQL Server, client library, or both.. + + + + + Looks up a localized string similar to The process of closing the resultset and resulted in results being lost.. + + + + + Looks up a localized string similar to All server connection attempts were aborted. Timeout of {0} milliseconds was exceeded for each selected server.. + + + + + Looks up a localized string similar to All server connection attempts were aborted. Timeout was exceeded for each selected server.. + + + + + Looks up a localized string similar to Connection attempt to the server was aborted. Timeout of {0} milliseconds was exceeded.. + + + + + Looks up a localized string similar to Connection attempt to the server was aborted. Timeout was exceeded.. + + + + + Looks up a localized string similar to Unable to connect to any specified host.. + + + + + Looks up a localized string similar to Unable to read or decode data value.. + + + + + Looks up a localized string similar to Unable to open a session.. + + + + + Looks up a localized string similar to Unexpected end of packet found while reading data values. + + + + + Looks up a localized string similar to Field name '{0}' is not allowed.. + + + + + Looks up a localized string similar to Unknown placeholder :{0}. + + + + + Looks up a localized string similar to Value '{0}' is not of the correct type.. + + + + + Summary description for MySqlUInt64. + + + + + An exception thrown by MySQL when a type conversion does not succeed. + + + + Initializes a new instance of the class with a specified error message. + Message describing the error. + + + + Represents a datetime data type object in a MySql database. + + + + + Defines whether the UTF or local timezone will be used. + + + + + Constructs a new MySqlDateTime object by setting the individual time properties to + the given values. + + The year to use. + The month to use. + The day to use. + The hour to use. + The minute to use. + The second to use. + The microsecond to use. + + + + Constructs a new MySqlDateTime object by using values from the given object. + + The object to copy. + + + + Constructs a new MySqlDateTime object by copying the current value of the given object. + + The MySqlDateTime object to copy. + + + + Enables the contruction of a MySqlDateTime object by parsing a string. + + + + + Indicates if this object contains a value that can be represented as a DateTime + + + + Returns the year portion of this datetime + + + Returns the month portion of this datetime + + + Returns the day portion of this datetime + + + Returns the hour portion of this datetime + + + Returns the minute portion of this datetime + + + Returns the second portion of this datetime + + + + Returns the milliseconds portion of this datetime + expressed as a value between 0 and 999 + + + + + Returns the microseconds portion of this datetime (6 digit precision) + + + + + Returns true if this datetime object has a null value + + + + + Retrieves the value of this as a DateTime object. + + + + Returns this value as a DateTime + + + Returns a MySQL specific string representation of this value + + + + + + + + + Represents a decimal data type object in a MySql database. + + + + + Gets a boolean value signaling if the type is null. + + + + + Gets or sets the decimal precision of the type. + + + + + Gets or sets the scale of the type. + + + + + Gets the decimal value associated to this type. + + + + + Converts this decimal value to a double value. + + The value of this type converted to a dobule value. + + + + Represents a geometry data type object in a MySql database. + + + + + Gets the x coordinate. + + + + + Gets the y coordinate. + + + + + Gets the SRID value. + + + + + Gets a boolean value that signals if the type is null. + + + + + Gets the value associated to this type. + + + + + Gets the value associated to this type. + + + + Returns the Well-Known Text representation of this value + POINT({0} {1})", longitude, latitude + http://dev.mysql.com/doc/refman/4.1/en/gis-wkt-format.html + + + + Get value from WKT format + SRID=0;POINT (x y) or POINT (x y) + + WKT string format + + + + Try to get value from WKT format + SRID=0;POINT (x y) or POINT (x y) + + WKT string format + Out mysqlGeometryValue + + + + Sets the DSInfo when GetSchema is called for the DataSourceInformation collection. + + + + + Gets the well-known text representation of the geomtry object. + + A string representation of the WKT. + + + + Enables X Protocol packets from the network stream to be retrieved and processed + + + + + The instance of the stream that holds the network connection with MySQL Server. + + + + + This field is used to enable compression and decompression actions in the communication channel. + + + + + A Queue to store the pending packets removed from the + + + + + Creates a new instance of XPacketProcessor. + + The stream to be used as communication channel. + + + + Creates a new instance of XPacketProcessor. + + The stream to be used as communication channel. + The XCompressionController to be used for compression actions. + + + + Identifies the kind of packet received over the network and execute + the corresponding processing. + + + + + Reads data from the network stream and create a packet of type . + + A . + + + + Sends the read/write actions to the MyNetworkStream class. + + + + + Reads the pending packets present in the network channel and processes them accordingly. + + + + + Implementation of EXTERNAL authentication type. + + + + + Implementation of MySQL41 authentication type. + + + + + Implementation of PLAIN authentication type. + + + + + Compares two Guids in string format. + + The first string to compare. + The first string to compare. + An integer that indicates the lexical relationship between the two comparands, similar to + + + + Compares two objects. + + The first to compare. + The second to compare. + An integer that indicates the lexical relationship between the two comparands, similar to + + + + Provides functionality for loading unmanaged libraries. + + + + + Loads the specified unmanaged library from the embedded resources. + + The application name. + The library name. + + + + Provides support for configuring X Protocol compressed messages. + + + + + The capabilities sub-key used to specify the compression algorithm. + + + + + The capabilities key used to specify the compression capability. + + + + + Messages with a value lower than this threshold will not be compressed. + + + + + Default value for enabling or disabling combined compressed messages. + + + + + Default value for the maximum number of combined compressed messages contained in a compression message. + + + + + The capabilities sub-key used to specify if combining compressed messages is permitted. + + + + + The capabilities sub-key used to specify the maximum number of compressed messages contained in a compression message. + + + + + Buffer used to store the data received from the server. + + + + + Deflate stream used for compressing data. + + + + + Deflate stream used for decompressing data. + + + + + Flag indicating if the initialization is for compression or decompression. + + + + + Stores the communication packet generated the last time ReadNextBufferedMessage method was called. + + + + + Stream used to store multiple X Protocol messages. + + + + + ZStandard stream used for decompressing data. + + + + + Main constructor used to set the compression algorithm and initialize the list of messages to + be compressed by the client. + + The compression algorithm to use. + Flag indicating if the initialization is for compression or decompression. + + + + Gets or sets the list of messages that should be compressed by the client when compression is enabled. + + + + + Gets or sets the compression algorithm. + + + + + Flag indicating if compression is enabled. + + + + + Flag indicating if the last decompressed message contains multiple messages. + + + + + General method used to compress data using the compression algorithm defined in the constructor. + + The data to compress. + A compressed byte array. + + + + Compresses data using the deflate_stream algorithm. + + The data to compress. + A compressed byte array. + + + + Compresses data using the lz4_message algorithm. + + The data to compress. + A compressed byte array. + + + + Compresses data using the zstd_stream algorithm. + + The data to compress. + A compressed byte array. + + + + General method used to decompress data using the compression algorithm defined in the constructor. + + The data to decompress. + The expected length of the decompressed data. + A decompressed byte array. + + + + Decompresses data using the deflate_stream compression algorithm. + + The data to decompress. + The expected length of the decompressed data. + A decompressed byte array. + + + + Decompresses data using the lz4_message compression algorithm. + + The data to decompress. + The expected length of the decompressed data. + A decompressed byte array. + + + + Decompresses data using the zstd_stream compression algorithm. + + The data to decompress. + The expected length of the decompressed data. + A decompressed byte array. + + + + Closes and disposes of any open streams. + + + + + Gets the byte array representing the next X Protocol frame that is stored in cache. + + A byte array representing an X Protocol frame. + + + + Gets a representing the next X Protocol frame that is stored in cache. + + A with the next X Protocol frame. + + + + Constructor that sets the stream used to read or write data. + + The stream used to read or write data. + The socket to use. + + + + Constructor that sets the stream used to read or write data and the compression controller. + + The stream used to read or write data. + The compression controller for reading. + The compression controller for writing. + The socket to use. + + + + Gets or sets the compression controller uses to manage compression operations. + + + + + Writes X Protocol frames to the X Plugin. + + The integer representation of the client message identifier used for the message. + The message to include in the X Protocol frame. + + + + Writes X Protocol frames to the X Plugin. + + The client message identifier used for the message. + The message to include in the X Protocol frame. + + + + Reads X Protocol frames incoming from the X Plugin. + + A instance representing the X Protocol frame that was read. + + + + Abstract class for the protocol base operations in client/server communication. + + + + + Expression parser for MySQL-X protocol. + + + string being parsed. + + + Token stream produced by lexer. + + + Parser's position in token stream. + + + Mapping of names to positions for named placeholders. Used for both string values ":arg" and numeric values ":2". + + + Number of positional placeholders. + + + Are relational columns identifiers allowed? + + + Token types used by the lexer. + + + Token. Includes type and string value of the token. + + + Mapping of reserved words to token types. + + + Does the next character equal the given character? (respects bounds) + + + Helper function to match integer or floating point numbers. This function should be called when the position is on the first character of the number (a + digit or '.'). + + @param i The current position in the string + @return the next position in the string after the number. + + + Lexer for MySQL-X expression language. + + + Assert that the token at pos is of type type. + + + Does the current token have type `t'? + + + Does the next token have type `t'? + + + Does the token at position `pos' have type `t'? + + + Consume token. + + @return the string value of the consumed token + + + Parse a paren-enclosed expression list. This is used for function params or IN params. + + @return a List of expressions + + + Parse a function call of the form: IDENTIFIER PAREN_EXPR_LIST. + + @return an Expr representing the function call. + + + Parse an identifier for a function call: [schema.]name + + + Parse a document path member. + + + Parse a document path array index. + + + Parse a JSON-style document path, like WL#7909, but prefix by @. instead of $. + + + Parse a document field. + + + Parse a column identifier (which may optionally include a JSON document path). + + + Build a unary operator expression. + + + Parse an atomic expression. (c.f. grammar at top) + + + Parse a left-associated binary operator. + + @param types + The token types that denote this operator. + @param innerParser + The inner parser that should be called to parse operands. + @return an expression tree of the binary operator or a single operand + + + Parse the entire string as an expression. + + @return an X-protocol expression tree + + + + Parse an ORDER BY specification which is a comma-separated list of expressions, each may be optionally suffixed by ASC/DESC. + + + Parse a SELECT projection which is a comma-separated list of expressions, each optionally suffixed with a target alias. + + + Parse an INSERT field name. + @todo unit test + + + Parse an UPDATE field which can include can document paths. + + + Parse a document projection which is similar to SELECT but with document paths as the target alias. + + + Parse a list of expressions used for GROUP BY. + + + @return the number of positional placeholders in the expression. + + + @return a mapping of parameter names to positions. + + + Proto-buf helper to build a LITERAL Expr with a Scalar NULL type. + + + Proto-buf helper to build a LITERAL Expr with a Scalar DOUBLE type (wrapped in Any). + + + Proto-buf helper to build a LITERAL Expr with a Scalar SINT (signed int) type (wrapped in Any). + + + Proto-buf helper to build a LITERAL Expr with a Scalar UINT (unsigned int) type (wrapped in Any). + + + Proto-buf helper to build a LITERAL Expr with a Scalar STRING type (wrapped in Any). + + + Proto-buf helper to build a LITERAL Expr with a Scalar OCTETS type (wrapped in Any). + + + Proto-buf helper to build a LITERAL Expr with a Scalar BOOL type (wrapped in Any). + + + Wrap an Any value in a LITERAL expression. + + + Build an Any with a string value. + + + + Parses an anonymous object into a dictionary. + + The object to parse. + A dictionary if the provided object is an anonymous object; otherwise, null. + + + List of operators which will be serialized as infix operators. + + + Scalar to string. + + + JSON document path to string. + + + Column identifier (or JSON path) to string. + + + Function call to string. + + + Create a string from a list of (already stringified) parameters. Surround by parens and separate by commas. + + + Convert an operator to a string. Includes special cases for chosen infix operators (AND, OR) and special forms such as LIKE and BETWEEN. + + + Escape a string literal. + + + Quote a named identifer. + + + Serialize an expression to a string. + + + + Build the message to be sent to MySQL Server to execute statement "Create" or "Modify" collection with schema options + + The namespace + The name of the command to be executed on MySql Server + Array of KeyValuePairs with the parameters required to build the message + void. + + + + Sends the delete documents message + + + + + Sends the CRUD modify message + + + + + Class implementation for a default communication kind. + + + + + Constructor method for the communication routing service + + A MySqlXConnectionStringBuilder setted with the information to use in the connection + + + + Gets the current connection base on the connection mode + + One of the values of ConnectionMode Offline, ReadOnly, WriteOnly, ReadWrite + + + + + Abstract class used to define the kind of server in environments with multiple types of distributed systems. + + + + + Main class for parsing json strings. + + + + + Initializes a new instance of the JsonParser class. + + + + + Parses the received string into a dictionary. + + The string to parse. + A object that represents the parsed string. + + + + Abstract class to manage and encapsulate one or more actual connections. + + + + + Creates a new session object with the values of the settings parameter. + + Settings to be used in the session object + + + + Sets the connection's charset default collation. + + The opened session. + The character set. + + + + Gets the version of the server. + + An instance of containing the server version. + + + + Gets the thread Id of the connection. + + Thread Id + + + + Implementation class for object that manages low-level work of queuing tasks onto threads. + + + + + Implementation class of InternalSession to manage connections using the Xprotocol type object. + + + + + Defines the compression controller that will be passed on the instance when + compression is enabled. + + + + + Defines the compression controller that will be passed on the instance when + compression is enabled. + + + + + Reorder the list of algorithms retrieved from server to the preferred order + + + + + Validate the algorithms given in the connection string are valid compared with enum CompressionAlgorithms + + + + + Negotiates compression capabilities with the server. + + An array containing the compression algorithms supported by the server. + An array containing the compression algorithms given by user/client. + + + + Prepare the dictionary of arguments required to create a MySQL message. + + The name of the MySQL schema. + The name of the collection. + This object hold the parameters required to create the collection. + + Collection referente. + + + + Prepare the dictionary of arguments required to Modify a MySQL message. + + The name of the MySQL schema. + The name of the collection. + This object hold the parameters required to Modify the collection. + + + + + Gets the compression algorithm being used to compress or decompress data. + + Flag to indicate if the compression algorithm should be + retrieved from the reader or writer controller. + The name of the compression algorithm being used if any. + null if no compression algorithm is being used. + + + + Represents a base class for a Session. + + + + + Flag to set if prepared statements are supported. + + + + + Gets the connection settings for this session. + + + + + Gets the currently active schema. + + + + + Gets the default schema provided when creating the session. + + + + + Gets the connection uri representation of the connection options provided during the creation of the session. + + + + + Initializes a new instance of the BaseSession class based on the specified connection string. + + The connection used to create the session. + A object. + is null. + Unable to parse the when + in URI format. + + When using Unix sockets the protocol=unix or protocol=unixsocket connection option is required. + This will enable elements passed in the server connection option to be treated as Unix sockets. The user is also required + to explicitly set sslmode to none since X Plugin does not support SSL when using Unix sockets. Note that + protocol=unix and protocol=unixsocket are synonyms. +   + Multiple hosts can be specified as part of the , + which enables client-side failover when trying to establish a connection. +   + Connection URI examples: + - mysqlx://test:test@[192.1.10.10,localhost] + - mysqlx://test:test@[192.1.10.10,127.0.0.1] + - mysqlx://root:@[../tmp/mysqlx.sock,/tmp/mysqld.sock]?protocol=unix&sslmode=none + - mysqlx://test:test@[192.1.10.10:33060,127.0.0.1:33060] + - mysqlx://test:test@[192.1.10.10,120.0.0.2:22000,[::1]:33060]/test?connectiontimeout=10 + - mysqlx://test:test@[(address=server.example,priority=20),(address=127.0.0.1,priority=100)] + - mysqlx://test:test@[(address=server.example,priority=100),(address=127.0.0.1,priority=75),(address=192.0.10.56,priority=25)] + +   + Connection string examples: + - server=10.10.10.10,localhost;port=33060;uid=test;password=test; + - host=10.10.10.10,192.101.10.2,localhost;port=5202;uid=test;password=test; + - host=./tmp/mysqld.sock,/var/run/mysqldx.sock;port=5202;uid=root;protocol=unix;sslmode=none; + - server=(address=server.example,priority=20),(address=127.0.0.1,priority=100);port=33060;uid=test;password=test; + - server=(address=server.example,priority=100),(address=127.0.0.1,priority=75),(address=192.0.10.56,priority=25);port=33060;uid=test;password=test; + +   + Failover methods + - Sequential: Connection attempts will be performed in a sequential order, that is, one after another until + a connection is successful or all the elements from the list have been tried. + + - Priority based: If a priority is provided, the connection attemps will be performed in descending order, starting + with the host with the highest priority. Priority must be a value between 0 and 100. Additionally, it is required to either + give a priority for every host or no priority to any host. + + + + + + Initializes a new instance of the BaseSession class based on the specified anonymous type object. + + The connection data as an anonymous type used to create the session. + A object. + is null. + + Multiple hosts can be specified as part of the , which enables client-side failover when trying to + establish a connection. +   + To assign multiple hosts, create a property similar to the connection string examples shown in + . Note that the value of the property must be a string. + + + + + + Drops the database/schema with the given name. + + The name of the schema. + is null. + + + + Creates a schema/database with the given name. + + The name of the schema/database. + A object that matches the recently created schema/database. + + + + Gets the schema with the given name. + + The name of the schema. + A object set with the provided schema name. + + + + Gets a list of schemas (or databases) in this session. + + A list containing all existing schemas (or databases). + + + + Starts a new transaction. + + + + + Commits the current transaction. + + A object containing the results of the commit operation. + + + + Rolls back the current transaction. + + + + + Closes this session or releases it to the pool. + + + + + Closes this session + + + + + Sets a transaction savepoint with an autogenerated name. + + The autogenerated name of the transaction savepoint. + + + + Sets a named transaction savepoint. + + The name of the transaction savepoint. + The name of the transaction savepoint. + + + + Removes the named savepoint from the set of savepoints within the current transaction. + + The name of the transaction savepoint. + + + + Rolls back a transaction to the named savepoint without terminating the transaction. + + The name of the transaction savepoint. + + + + Parses the connection data. + + The connection string or connection URI. + A object. + An updated connection string representation of the provided connection string or connection URI. + + + + Parses a connection URI. + + The connection URI to parse. + The connection string representation of the provided . + + + + Validates if the string provided is a Unix socket file. + + The Unix socket to evaluate. + true if is a valid Unix socket; otherwise, false. + + + + Converts the URI object into a connection string. + + An instance with the values for the provided connection options. + The path of the Unix socket file. + If true the replaces the value for the server connection option; otherwise, false + Flag indicating if this is a connection using DNS SRV. + A connection string. + + + + Parses a connection string. + + The connection string to parse. + The parsed connection string. + + + + Normalizes the Unix socket by removing leading and ending parenthesis as well as removing special characters. + + The Unix socket to normalize. + A normalized Unix socket. + + + + Disposes the current object. Disposes of the managed state if the flag is set to true. + + Flag to indicate if the managed state is to be disposed. + + + + Disposes the current object. Code added to correctly implement the disposable pattern. + + + + + Describes the state of the session. + + + + + The session is closed. + + + + + The session is open. + + + + + The session object is connecting to the data source. + + + + + The session object is executing a command. + + + + + Class encapsulating a session pooling functionality. + + + + + Queue of demoted hosts. + + + + + List of hosts that will be attempted to connect to. + + + + + Timer to be used when a host have been demoted. + + + + + Remove hosts from the demoted list that have already been there for more + than 120,000 milliseconds and add them to the available hosts list. + + + + + Get a session from pool or create a new one. + + + + + + Closes all sessions the Client object created and destroys the managed pool. + + + + + Represents a collection of documents. + + + + + Creates an containing the provided objects that can be used to add + one or more items to a collection. + + The objects to add. + An object containing the objects to add. + is null. + This method can take anonymous objects, domain objects, or just plain JSON strings. + The statement can be further modified before execution. + + + + Creates a with the given condition that can be used to remove + one or more documents from a collection.The statement can then be further modified before execution. + + The condition to match documents. + A object set with the given condition. + is null or white space. + The statement can then be further modified before execution. + + + + Creates a with the given condition that can be used to modify one or more + documents from a collection. + + The condition to match documents. + A object set with the given condition. + is null or white space. + The statement can then be further modified before execution. + + + + Replaces the document matching the given identifier. + + The unique identifier of the document to replace. + The document to replace the matching document. + A object containing the results of the execution. + is null or whitespace. + is null. + This is a direct execution method. Operation succeeds even if no matching document was found; + in which case, the Result.RecordsAffected property is zero. If the new document contains an identifier, the value + is ignored. + + + + Adds the given document to the collection unless the identifier or any other field that has a unique index + already exists, in which case it will update the matching document. + + The unique identifier of the document to replace. + The document to replace the matching document. + A object containing the results of the execution. + The server version is lower than 8.0.3. + is null or white space. + is null. + The is different from the one in . + This is a direct execution method. + + + + Creates a with the given condition, which can be used to find documents in a + collection. + + An optional condition to match documents. + A object set with the given condition. + The statement can then be further modified before execution. + + + + Returns the document with the given identifier. + + The unique identifier of the document to replace. + A object if a document matching given identifier exists; otherwise, null. + is null or white space. + This is a direct execution method. + + + + Base abstract class that defines elements inherited by all result types. + + + + + Gets the number of records affected by the statement that generated this result. + + + + + Gets the object of the session. + + + + + Gets a read-only collection of objects derived from statement execution. + + + + + Gets the number of warnings in the collection derived from statement execution. + + + + + No action is performed by this method. It is intended to be overriden by child classes if required. + + + + + Base abstract class for API statement. + + + + + + + Initializes a new instance of the BaseStatement class based on the specified session. + + The session where the statement will be executed. + + + + Gets the that owns the statement. + + + + + Executes the base statements. This method is intended to be defined by child classes. + + A result object containing the details of the execution. + + + + Executes a statement asynchronously. + + A result object containing the details of the execution. + + + + Validates if the session is open and valid. + + + + + Sets the status as Changed for prepared statement validation. + + + + + Converts a statement to prepared statement for a second execution + without any change but Bind, Limit, or Offset. + + + + + Abstract class for buffered results. + + Generic result type. + + + + Index of the current item. + + + + + List of generic items in this buffered result. + + + + + Flag that indicates if all items have been read. + + + + + Gets a dictionary containing the column names and their index. + + + + + Gets the page size set for this buffered result. + + + + + Loads the column data into the field. + + + + + Retrieves a read-only list of the generic items associated to this buffered result. + + A generic list representing items in this buffered result. + + + + Retrieves one element from the generic items associated to this buffered result. + + A generic object that corresponds to the current or default item. + + + + Determines if all items have already been read. + + True if all items have been retrived, false otherwise. + + + + Gets the current item. + + All items have already been read. + + + + Determines if all items have already been read. + + True if all items have been retrived, false otherwise. + + + + Resets the value of the field to zero. + + + + + Gets an representation of this object. + + An representation of this object. + + + + Gets an representation of this object. + + An representation of this object. + + + + Retrieves a read-only list of the generic items associated to this buffered result. + + A generic list representing items in this buffered result. + + + + No body has been defined for this method. + + + + + This object store the required parameters to create a Collection with schema validation. + + + + + If false, throws an exception if the collection exists. + + + + + Object which hold the Level and Schema parameters. + + + + + This object store the required parameters to modify a Collection with schema validation. + + + + + This object store the required parameters to Modify a Collection with schema validation. + + + + + This object store the required parameters to create a Collection with schema validation. + + + + + It can be STRICT to enable schema validation or OFF to disable . + + + + + The JSON which define the rules to be validated in the collection. + + + + + The possible values for parameter Level in Validation object. + + + + + Class to represent an error in this result. + + + + + Numeric code. + + + + + Return code indicating the outcome of the executed SQL statement. + + + + + Error message. + + + + + Initializes a new instance of the ErrorInfo class. + + + + + Abstract class for filterable statements. + + The filterable statement. + The database object. + The type of result. + The type of the implemented object. + + + + Initializes a new instance of the FiltarableStatement class based on the target and condition. + + The database object. + The optional filter condition. + + + + Enables the setting of Where condition for this operation. + + The Where condition. + The implementing statement type. + + + + Sets the number of items to be returned by the operation. + + The number of items to be returned. + The implementing statement type. + is equal or lower than 0. + + + + Sets the number of items to be skipped before including them into the result. + + The number of items to be skipped. + The implementing statement type. + + + + Binds the parameter values in filter expression. + + The parameter name. + The value of the parameter. + A generic object representing the implementing statement type. + + + + Binds the parameter values in filter expression. + + The parameters as a DbDoc object. + A generic object representing the implementing statement type. + + + + Binds the parameter values in filter expression. + + The parameters as a JSON string. + The implementing statement type. + + + + Binds the parameter values in filter expression. + + The parameters as an anonymous object: new { param1 = value1, param2 = value2, ... }. + The implementing statement type. + + + + Executes the statement. + + The function to execute. + The generic object to use. + A generic result object containing the results of the execution. + + + + Clones the filterable data but Session and Target remain the + same. + + A clone of this filterable statement. + + + + Represents a general statement result. + + + + + Gets the last inserted identifier (if there is one) by the statement that generated this result. + + + + + Gets the list of generated identifiers in the order of the Add() calls. + + + + + Abstract class to select a database object target. + + The database object. + The execution result. + The type of the implemented object. + + + + Initializes a new instance of the TargetedBaseStatement class based on the provided target. + + The database object. + + + + Gets the database target. + + + + + Represents a warning in this result. + + + + + Numeric value associated to the warning message. + + + + + Error message. + + + + + Strict level for the warning. + + + + + Initializes a new instance of the WarningInfo class based on the code and msg. + + The code for the warning. + The error message for the warning. + + + + Represents a chaining collection insert statement. + + + + + + Adds documents to the collection. + + The documents to add. + This object. + The array is null. + + + + Executes the Add statement. + + A object containing the results of the execution. + + + + Implementation class for CRUD statements with collections using an index. + + + + + + Executes this statement. + + A object containing the results of the execution. + + + + Represents a collection statement. + + Type of + Type of object + + + + Converts base s into objects. + + Array of objects to be converted to objects. + An enumerable collection of objects. + + + + Represents the result of an operation that includes a collection of documents. + + + + + + Represents a chaining collection find statement. + + + + + + List of column projections that shall be returned. + + List of columns. + This object set with the specified columns or fields. + + + + Executes the Find statement. + + A object containing the results of execution and data. + + + + Locks matching rows against updates. + + Optional row lock option to use. + This same object set with the lock shared option. + The server version is lower than 8.0.3. + + + + Locks matching rows so no other transaction can read or write to it. + + Optional row lock option to use. + This same object set with the lock exclusive option. + The server version is lower than 8.0.3. + + + + Sets the collection aggregation. + + The field list for aggregation. + This same object set with the specified group-by criteria. + + + + Filters criteria for aggregated groups. + + The filter criteria for aggregated groups. + This same object set with the specified filter criteria. + + + + Sets user-defined sorting criteria for the operation. The strings use normal SQL syntax like + "order ASC" or "pages DESC, age ASC". + + The order criteria. + This same object set with the specified order criteria. + + + + Enables the setting of Where condition for this operation. + + The Where condition. + This same object set with the specified condition criteria. + + + + Represents a chaining collection modify statement. + + + + + + Sets key and value. + + The document path key. + The new value. + This object. + + + + Changes value for a key. + + The document path key. + The new value. + This object. + + + + Removes keys or values from a document. + + An array of document paths representing the keys to be removed. + This object. + + + + Creates a object set with the changes to be applied to all matching documents. + + The JSON-formatted object describing the set of changes. + A object set with the changes described in . + can be a object, an anonymous object, a JSON string or a custom type object. + is null. + is null or white space. + + + + Inserts an item into the specified array. + + The document path key including the index on which the item will be inserted. + The value to insert into the array. + A object containing the updated array. + + + + Appends an item to the specified array. + + The document path key. + The value to append to the array. + A object containing the updated array. + + + + Allows the user to set the sorting criteria for the operation. The strings use normal SQL syntax like + "order ASC" or "pages DESC, age ASC". + + The order criteria. + A generic object representing the implementing statement type. + + + + Enables the setting of Where condition for this operation. + + The Where condition. + The implementing statement type. + + + + Executes the modify statement. + + A object containing the results of the execution. + + + + Represents a chaining collection remove statement. + + + + + + Sets user-defined sorting criteria for the operation. The strings use normal SQL syntax like + "order ASC" or "pages DESC, age ASC". + + The order criteria. + A generic object representing the implementing statement type. + + + + Enables the setting of Where condition for this operation. + + The Where condition. + The implementing statement type. + + + + Executes the remove statement. + + A object containing the results of the execution. + + + + Represents a database object. + + + + + Gets the session that owns the database object. + + + + + Gets the schema that owns the database object. + + + + + Gets the database object name. + + + + + Verifies that the database object exists in the database. + + True if the object exists in database, false otherwise. + + + + Represents a generic document in JSON format. + + + + + Initializes a new instance of the DbDoc class based on the object provided. The value can be a domain object, anonymous object, or JSON string. + + The value for this DbDoc. + + + + Gets the value of a document property. + + The key path for the property. + + + + + Gets the identifier of the document. + + + + + Gets a value indicating if this document has an identifier (property named _id with a value). + + + + + Sets a property on this document. + + The key of the property. + The new property value. + + + + Returns this document in Json format. + + A Json formatted string. + + + + Compares this DbDoc with another one. + + The DbDoc to compare to. + True if they are equal, false otherwise. + + + + Gets a value that serves as a hash function for a particular type. + + A hash code for the current object. + + + + Represents a collection of documents with a generic type. + + + + + + Initializes a new instance of the generic Collection class based on the specified schema + and name. + + The object associated to this collection. + The name of the collection. + + + + Creates an containing the provided generic object. The add + statement can be further modified before execution. + + The generic object to add. + An object containing the object to add. + + + + Creates a with the given condition that can be used to remove + one or more documents from a collection.The statement can then be further modified before execution. + + The condition to match documents. + A object set with the given condition. + is null or white space. + The statement can then be further modified before execution. + + + + Removes the document with the given identifier. + + The unique identifier of the document to replace. + A object containing the results of the execution. + is null or white space. + This is a direct execution method. + + + + Creates a with the given condition that can be used to modify one or more + documents from a collection. + + The condition to match documents. + A object set with the given condition. + is null or white space. + The statement can then be further modified before execution. + + + + Returns the number of documents in this collection on the server. + + The number of documents found. + + + + Creates a with the given condition which can be used to find documents in a + collection. + + An optional condition to match documents. + A object set with the given condition. + The statement can then be further modified before execution. + + + + Creates an index based on the properties provided in the JSON document. + + The index name. + JSON document describing the index to be created. + + is a JSON document with the following fields: + + - fields: array of IndexField objects, each describing a single document member to be + included in the index (see below). + - type: string, (optional) the type of index. One of INDEX or SPATIAL. Default is INDEX and may + be omitted. + +   + A single IndexField description consists of the following fields: + + - field: string, the full document path to the document member or field to be indexed. + - type: string, one of the supported SQL column types to map the field into (see the following list). + For numeric types, the optional UNSIGNED keyword may follow. For the TEXT type, the length to consider for + indexing may be added. + - required: bool, (optional) true if the field is required to exist in the document. defaults to + false, except for GEOJSON where it defaults to true. + - options: int, (optional) special option flags for use when decoding GEOJSON data. + - srid: int, (optional) srid value for use when decoding GEOJSON data. + +   + Supported SQL column types: + + - INT [UNSIGNED] + - TINYINT [UNSIGNED] + - SMALLINT[UNSIGNED] + - MEDIUMINT [UNSIGNED] + - INTEGER [UNSIGNED] + - BIGINT [UNSIGNED] + - REAL [UNSIGNED] + - FLOAT [UNSIGNED] + - DOUBLE [UNSIGNED] + - DECIMAL [UNSIGNED] + - NUMERIC [UNSIGNED] + - DATE + - TIME + - TIMESTAMP + - DATETIME + - TEXT[(length)] + - CHAR[(lenght)] + - GEOJSON (extra options: options, srid) + + + + + + Drops a collection index. + + The index name. + is null or white space. + + + + Verifies if the current collection exists in the server schema. + + true if the collection exists; otherwise, false. + + + + Returns the document with the given identifier. + + The unique identifier of the document to replace. + A object if a document matching given identifier exists; otherwise, null. + is null or white space. + This is a direct execution method. + + + + Defines elements that allow to iterate through the contents of various items. + + + + + Initializes a new instance of the Iterator class. + + + + + This method is not yet implemented. + + + + Exception is always thrown since the body of the method is not yet implemented. + + + + Defines a MySql expression. + + + + + Main class for session operations related to Connector/NET implementation of the X DevAPI. + + + + + Opens a session to the server given or to the first available server if multiple servers were specified. + + The connection string or URI string format. + + A object representing the established session. + Multiple hosts can be specified as part of the which + will enable client side failover when trying to establish a connection. For additional details and syntax + examples refer to the remarks section. + + + + Opens a session to the server given. + + The connection data for the server. + + A object representing the established session. + + + + Creates a new instance. + + The connection string or URI string format. + + The connection options in JSON string format. + A object representing a session pool. + + + + Creates a new instance. + + The connection string or URI string format. + + The connection options in object format. + + + new { pooling = new + { + enabled = true, + maxSize = 15, + maxIdleTime = 60000, + queueTimeout = 60000 + } + } + + + + A object representing a session pool. + + + + Creates a new instance. + + The connection data. + + The connection options in JSON string format. + A object representing a session pool. + + + + Creates a new instance. + + The connection data. + + The connection options in object format. + + + new { pooling = new + { + enabled = true, + maxSize = 15, + maxIdleTime = 60000, + queueTimeout = 60000 + } + } + + + + A object representing a session pool. + + + + Enables the creation of connection strings by exposing the connection options as properties. + Contains connection options specific to the X protocol. + + + + + Main constructor. + + + + + Constructor accepting a connection string. + + The connection string. + A flag indicating if the default port is used in the connection. + + + + Readonly field containing a collection of classic protocol and protocol shared connection options. + + + + + Gets or sets the connection timeout. + + + + + Gets or sets the connection attributes. + + + + + Path to a local file containing certificate revocation lists. + + + + + Gets or sets the compression type between client and server. + + + + + Gets or sets the compression algorithm. + + + + + Gets or sets a connection option. + + The keyword that identifies the connection option to modify. + + + + Retrieves the value corresponding to the supplied key from this . + + The key of the item to retrieve. + The value corresponding to the . + if was found within the connection string; + otherwise, . + contains a null value. + + + + Represents a table column. + + + + + Gets the original column name. + + + + + Gets the alias of the column name. + + + + + Gets the table name the column orginates from. + + + + + Gets the alias of the table name . + + + + + Gets the schema name the column originates from. + + + + + Gets the catalog the schema originates from. + In MySQL protocol this is `def` by default. + + + + + Gets the collation used for this column. + + + + + Gets the character set used for this column. + + + + + Gets the column length. + + + + + Gets the fractional decimal digits for floating point and fixed point numbers. + + + + + Gets the Mysql data type. + + + + + Gets the .NET Clr data type. + + + + + True if it's a signed number. + + + + + True if column is UINT zerofill or BYTES rightpad. + + + + + Initializes a new instance of the Column class. + + + + + Represents a resultset that contains rows of data. + + + + + Gets the columns in this resultset. + + + + + Gets the number of columns in this resultset. + + + + + Gets a list containing the column names in this resultset. + + + + + Gets the rows of this resultset. This collection will be incomplete unless all the rows have been read + either by using the Next method or the Buffer method. + + + + + Gets the value of the column value at the current index. + + The column index. + The CLR value at the column index. + + + + Allows getting the value of the column value at the current index. + + The column index. + The CLR value at the column index. + + + + Returns the index of the given column name. + + The name of the column to find. + The numeric index of column. + + + + Represents a single row of data in a table. + + + + + Gets the value of the row at the given index. + + The column index to retrieve the value. + The value at the index. + + + + Gets the value of the column as a string. + + The name of the column. + The value of the column as a string. + + + + Gets a string based indexer into the row. Returns the value as a CLR type. + + The column index to get. + The CLR value for the column. + + + + Inherits from . Creates a resultset that contains rows of data. + + + + + Represents a resultset that contains rows of data for relational operations. + + + + + Gets a boolean value indicating if this result has data. + + + + + Moves to next resultset. + + True if there is a new resultset, false otherwise. + + + + Represents a sql statement. + + + + + Initializes a new instance of the SqlStament class bassed on the session and sql statement. + + The session the Sql statement belongs to. + The Sql statement. + + + + Gets the current Sql statement. + + + + + Gets the list of parameters associated to this Sql statement. + + + + + Executes the current Sql statement. + + A object with the resultset and execution status. + + + + Binds the parameters values by position. + + The parameter values. + This set with the binded parameters. + + + + Represents a server Table or View. + + + + + Gets a value indicating whether the object is + a View (True) or a Table (False). + + + + + Creates a set with the columns to select. The table select + statement can be further modified before execution. This method is intended to select a set + of table rows. + + The optional column names to select. + A object for select chain operations. + + + + Creates a set with the fileds to insert to. The table + insert statement can be further modified before exeuction. This method is intended to + insert one or multiple rows into a table. + + The list of fields to insert. + A object for insert chain operations. + + + + Creates a . This method is intended to update table rows + values. + + A object for update chain operations. + + + + Creates a . This method is intended to delete rows from a + table. + + A object for delete chain operations. + + + + Returns the number of rows in the table on the server. + + The number of rows. + + + + Verifies if the table exists in the database. + + true if the table exists; otherwise, false. + + + + Represents a chaining table delete statement. + + + + + Sets user-defined sorting criteria for the operation. The strings use normal SQL syntax like + "order ASC" or "pages DESC, age ASC". + + The order criteria. + A generic object representing the implementing statement type. + + + + Executes the delete statement. + + A object containing the results of the delete execution. + + + + Represents a chaining table insert statement. + + + + + Executes the insert statement. + + A object containing the results of the insert statement. + + + + Values to be inserted. + Multiple rows supported. + + The values to be inserted. + This same object. + + + + Represents a chaining table select statement. + + + + + Executes the select statement. + + A object containing the results of the execution and data. + + + + Locks matching rows against updates. + + Optional row lock option to use. + This same object set with lock shared option. + The server version is lower than 8.0.3. + + + + Locks matching rows so no other transaction can read or write to it. + + Optional row lock option to use. + This same object set with the lock exclusive option. + The server version is lower than 8.0.3. + + + + Sets the table aggregation. + + The column list for aggregation. + This same object set with the specified group-by criteria. + + + + Filters criteria for aggregated groups. + + The filter criteria for aggregated groups. + This same object set with the specified filter criteria. + + + + Sets user-defined sorting criteria for the operation. The strings use normal SQL syntax like + "order ASC" or "pages DESC, age ASC". + + The order criteria. + A generic object that represents the implementing statement type. + + + + Represents a chaining table update statement. + + + + + Executes the update statement. + + A object ocntaining the results of the update statement execution. + + + + Column and value to be updated. + + Column name. + Value to be updated. + This same object. + + + + Sets user-defined sorting criteria for the operation. The strings use normal SQL syntax like + "order ASC" or "pages DESC, age ASC". + + The order criteria. + A generic object that represents the implementing statement type. + + + + Represents a schema or database. + + + + + Session related to current schema. + + + + + Returns a list of all collections in this schema. + + A list representing all found collections. + + + + Returns a list of all tables in this schema. + + A list representing all found tables. + + + + Gets a collection by name. + + The name of the collection to get. + Ensures the collection exists in the schema. + A object matching the given name. + + + + Gets a typed collection object. This is useful for using domain objects. + + The name of collection to get. + Ensures the collection exists in the schema. + A generic object set with the given name. + + + + Gets the given collection as a table. + + The name of the collection. + A object set with the given name. + + + + Gets a table object. Upon return the object may or may not be valid. + + The name of the table object. + A object set with the given name. + + + + Creates a . + + The name of the collection to create. + If false, throws an exception if the collection exists. + Collection referente. + + + + Creates a including a schema validation. + + The name of the collection to create. + This object hold the parameters required to create the collection. + + Collection referente. + + + + Modify a collection adding or removing schema validation parameters. + + The name of the collection to create. + This object encapsulate the Validation parameters level and schema. + Collection referente. + + + + Drops the given collection. + + The name of the collection to drop. + is null. + + + + Determines if this schema actually exists. + + True if exists, false otherwise. + + + + Represents a single server session. + + + + + Returns a object that can be used to execute the given SQL. + + The SQL to execute. + A object set with the provided SQL. + + + + Sets the schema in the database. + + The schema name to be set. + + + + Executes a query in the database to get the current schema. + + Current database object or null if no schema is selected. + + + + Closes the current session properly after it was closed by the server. + + + + Holder for reflection information generated from mysqlx.proto + + + File descriptor for mysqlx.proto + + + Holder for extension identifiers generated from the top level of mysqlx.proto + + + + * + IDs of messages that can be sent from client to the server. + + @note + This message is never sent on the wire. It is only used to let ``protoc``: + - generate constants + - check for uniqueness + + + + Container for nested types declared in the ClientMessages message type. + + + + * + IDs of messages that can be sent from server to client. + + @note + This message is never sent on the wire. It is only used to let ``protoc``: + - generate constants + - check for uniqueness + + + + Container for nested types declared in the ServerMessages message type. + + + + NOTICE has to stay at 11 forever + + + + Field number for the "msg" field. + + + Gets whether the "msg" field is set + + + Clears the value of the "msg" field + + + Field number for the "severity" field. + + + + * severity of the error message + + + + Gets whether the "severity" field is set + + + Clears the value of the "severity" field + + + Field number for the "code" field. + + + + * error code + + + + Gets whether the "code" field is set + + + Clears the value of the "code" field + + + Field number for the "sql_state" field. + + + + * SQL state + + + + Gets whether the "sql_state" field is set + + + Clears the value of the "sql_state" field + + + Field number for the "msg" field. + + + + * human-readable error message + + + + Gets whether the "msg" field is set + + + Clears the value of the "msg" field + + + Container for nested types declared in the Error message type. + + + Holder for reflection information generated from mysqlx_connection.proto + + + File descriptor for mysqlx_connection.proto + + + + * + Capability + + A tuple of a ``name`` and a @ref Mysqlx::Datatypes::Any + + + + Field number for the "name" field. + + + Gets whether the "name" field is set + + + Clears the value of the "name" field + + + Field number for the "value" field. + + + + * + Capabilities + + list of Capability + + + + Field number for the "capabilities" field. + + + + * + Get supported connection capabilities and their current state. + + @returns @ref Mysqlx::Connection::Capabilities or @ref Mysqlx::Error + + + + + * + Set connection capabilities atomically. + Only provided values are changed; other values are left + unchanged. If any of the changes fails, all changes are + discarded. + + @pre active sessions == 0 + + @returns @ref Mysqlx::Ok or @ref Mysqlx::Error + + + + Field number for the "capabilities" field. + + + + * + Announce to the server that the client wants to close the connection. + + It discards any session state of the server. + + @returns @ref Mysqlx::Ok + + + + Field number for the "uncompressed_size" field. + + + Gets whether the "uncompressed_size" field is set + + + Clears the value of the "uncompressed_size" field + + + Field number for the "server_messages" field. + + + Gets whether the "server_messages" field is set + + + Clears the value of the "server_messages" field + + + Field number for the "client_messages" field. + + + Gets whether the "client_messages" field is set + + + Clears the value of the "client_messages" field + + + Field number for the "payload" field. + + + Gets whether the "payload" field is set + + + Clears the value of the "payload" field + + + Holder for reflection information generated from mysqlx_crud.proto + + + File descriptor for mysqlx_crud.proto + + + + * + DataModel to use for filters, names, ... + + + + + * + ViewAlgorithm defines how MySQL Server processes the view + + + + + * MySQL chooses which algorithm to use + + + + + * the text of a statement that refers to the view and the view + definition are merged + + + + + * the view are retrieved into a temporary table + + + + + * + ViewSqlSecurity defines the security context in which the view is going to be + executed; this means that VIEW can be executed with current user permissions or + with permissions of the user who defined the VIEW + + + + + * use current user permissions + + + + + * use permissions of the user who defined the VIEW + + + + + * + ViewCheckOption limits the write operations done on a `VIEW` + (`INSERT`, `UPDATE`, `DELETE`) to rows in which the `WHERE` clause is `TRUE` + + + + + * the view WHERE clause is checked, but no underlying views are checked + + + + + * the view WHERE clause is checked, then checking recurses + to underlying views + + + + Field number for the "name" field. + + + Gets whether the "name" field is set + + + Clears the value of the "name" field + + + Field number for the "alias" field. + + + Gets whether the "alias" field is set + + + Clears the value of the "alias" field + + + Field number for the "document_path" field. + + + Field number for the "source" field. + + + + * the expression identifying an element from the source data, + which can include a column identifier or any expression + + + + Field number for the "alias" field. + + + + * optional alias. Required for DOCUMENTs (clients may use + the source string as default) + + + + Gets whether the "alias" field is set + + + Clears the value of the "alias" field + + + Field number for the "name" field. + + + Gets whether the "name" field is set + + + Clears the value of the "name" field + + + Field number for the "schema" field. + + + Gets whether the "schema" field is set + + + Clears the value of the "schema" field + + + Field number for the "row_count" field. + + + + * maximum rows to filter + + + + Gets whether the "row_count" field is set + + + Clears the value of the "row_count" field + + + Field number for the "offset" field. + + + + * maximum rows to skip before applying the row_count + + + + Gets whether the "offset" field is set + + + Clears the value of the "offset" field + + + + * + LimitExpr, in comparison to Limit, is able to specify that row_count and + offset are placeholders. + This message support expressions of following types Expr/literal/UINT, + Expr/PLACEHOLDER. + + + + Field number for the "row_count" field. + + + + * maximum rows to filter + + + + Field number for the "offset" field. + + + + * maximum rows to skip before applying the row_count + + + + + * + Sort order + + + + Field number for the "expr" field. + + + Field number for the "direction" field. + + + Gets whether the "direction" field is set + + + Clears the value of the "direction" field + + + Container for nested types declared in the Order message type. + + + Field number for the "source" field. + + + + * specification of the value to be updated + - if data_model is TABLE, a column name may be specified and also + a document path, if the column has type JSON + - if data_model is DOCUMENT, only document paths are allowed + + @note in both cases, schema and table must be not set + + + + Field number for the "operation" field. + + + + * the type of operation to be performed + + + + Gets whether the "operation" field is set + + + Clears the value of the "operation" field + + + Field number for the "value" field. + + + + * an expression to be computed as the new value for the operation + + + + Container for nested types declared in the UpdateOperation message type. + + + + * only allowed for TABLE + + + + + * no value (removes the identified path from a object or array) + + + + + * sets the new value on the identified path + + + + + * replaces a value if the path exists + + + + + * source and value must be documents + + + + + * insert the value in the array at the index identified in the source path + + + + + * append the value on the array at the identified path + + + + + * merge JSON object value with the provided patch expression + + + + + * + Find Documents/Rows in a Collection/Table + + @startuml + client -> server: Find + ... one or more Resultset ... + @enduml + + @returns @ref Mysqlx::Resultset + + + + Field number for the "collection" field. + + + + * collection in which to find + + + + Field number for the "data_model" field. + + + + * data model that the operations refer to + + + + Gets whether the "data_model" field is set + + + Clears the value of the "data_model" field + + + Field number for the "projection" field. + + + + * list of column projections that shall be returned + + + + Field number for the "args" field. + + + + * values for parameters used in filter expression + + + + Field number for the "criteria" field. + + + + * filter criteria + + + + Field number for the "limit" field. + + + + * numbers of rows that shall be skipped and returned + (user can set one of: limit, limit_expr) + + + + Field number for the "order" field. + + + + * sort-order in which the rows/document shall be returned in + + + + Field number for the "grouping" field. + + + + * column expression list for aggregation (GROUP BY) + + + + Field number for the "grouping_criteria" field. + + + + * filter criteria for aggregated groups + + + + Field number for the "locking" field. + + + + * perform row locking on matches + + + + Gets whether the "locking" field is set + + + Clears the value of the "locking" field + + + Field number for the "locking_options" field. + + + + * additional options how to handle locked rows + + + + Gets whether the "locking_options" field is set + + + Clears the value of the "locking_options" field + + + Field number for the "limit_expr" field. + + + + * numbers of rows that shall be skipped and returned + (user can set one of: limit, limit_expr) + + + + Container for nested types declared in the Find message type. + + + + * Lock matching rows against updates + + + + + * Lock matching rows so no other transaction can read or write to it + + + + + * Do not wait to acquire row lock, fail with an error + if a requested row is locked + + + + + * Do not wait to acquire a row lock, + remove locked rows from the result set + + + + + * + Insert documents/rows into a collection/table + + @returns @ref Mysqlx::Resultset + + + + Field number for the "collection" field. + + + + * collection to insert into + + + + Field number for the "data_model" field. + + + + * data model that the operations refer to + + + + Gets whether the "data_model" field is set + + + Clears the value of the "data_model" field + + + Field number for the "projection" field. + + + + * name of the columns to insert data into + (empty if data_model is DOCUMENT) + + + + Field number for the "row" field. + + + + * set of rows to insert into the collection/table (a single expression + with a JSON document literal or an OBJECT expression) + + + + Field number for the "args" field. + + + + * values for parameters used in row expressions + + + + Field number for the "upsert" field. + + + + * true if this should be treated as an Upsert + (that is, update on duplicate key) + + + + Gets whether the "upsert" field is set + + + Clears the value of the "upsert" field + + + Container for nested types declared in the Insert message type. + + + + * set of fields to insert as a one row + + + + Field number for the "field" field. + + + + * + Update documents/rows in a collection/table + + @returns @ref Mysqlx::Resultset + + + + Field number for the "collection" field. + + + + * collection to change + + + + Field number for the "data_model" field. + + + + * datamodel that the operations refer to + + + + Gets whether the "data_model" field is set + + + Clears the value of the "data_model" field + + + Field number for the "criteria" field. + + + + * filter expression to match rows that the operations will apply on + + + + Field number for the "limit" field. + + + + * limits the number of rows to match + (user can set one of: limit, limit_expr) + + + + Field number for the "order" field. + + + + * specifies order of matched rows + + + + Field number for the "operation" field. + + + + * list of operations to be applied. + Valid operations will depend on the data_model + + + + Field number for the "args" field. + + + + * values for parameters used in filter expression + + + + Field number for the "limit_expr" field. + + + + * limits the number of rows to match + (user can set one of: limit, limit_expr) + + + + + * + Delete documents/rows from a Collection/Table + + @returns @ref Mysqlx::Resultset + + + + Field number for the "collection" field. + + + + * collection to change + + + + Field number for the "data_model" field. + + + + * data model that the operations refer to + + + + Gets whether the "data_model" field is set + + + Clears the value of the "data_model" field + + + Field number for the "criteria" field. + + + + * filter expression to match rows that the operations will apply on + + + + Field number for the "limit" field. + + + + * limits the number of rows to match + (user can set one of: limit, limit_expr) + + + + Field number for the "order" field. + + + + * specifies order of matched rows + + + + Field number for the "args" field. + + + + * values for parameters used in filter expression + + + + Field number for the "limit_expr" field. + + + + * limits the number of rows to match + (user can set one of: limit, limit_expr) + + + + + * + CreateView create view based on indicated @ref Mysqlx::Crud::Find message + + + + Field number for the "collection" field. + + + + * name of the VIEW object, which should be created + + + + Field number for the "definer" field. + + + + * user name of the definer, if the value isn't set then the definer + is current user + + + + Gets whether the "definer" field is set + + + Clears the value of the "definer" field + + + Field number for the "algorithm" field. + + + + * defines how MySQL Server processes the view + + + + Gets whether the "algorithm" field is set + + + Clears the value of the "algorithm" field + + + Field number for the "security" field. + + + + * defines the security context in which the view is going be executed + + + + Gets whether the "security" field is set + + + Clears the value of the "security" field + + + Field number for the "check" field. + + + + * limits the write operations done on a VIEW + + + + Gets whether the "check" field is set + + + Clears the value of the "check" field + + + Field number for the "column" field. + + + + * defines the list of aliases for column names specified in `stmt` + + + + Field number for the "stmt" field. + + + + * Mysqlx.Crud.Find message from which the SELECT statement + is going to be build + + + + Field number for the "replace_existing" field. + + + + * if true then suppress error when created view already exists; + just replace it + + + + Gets whether the "replace_existing" field is set + + + Clears the value of the "replace_existing" field + + + + * + ModifyView modify existing view based on indicated + @ref Mysqlx::Crud::Find message + + + + Field number for the "collection" field. + + + + * name of the VIEW object, which should be modified + + + + Field number for the "definer" field. + + + + * user name of the definer, + if the value isn't set then the definer is current user + + + + Gets whether the "definer" field is set + + + Clears the value of the "definer" field + + + Field number for the "algorithm" field. + + + + * defined how MySQL Server processes the view + + + + Gets whether the "algorithm" field is set + + + Clears the value of the "algorithm" field + + + Field number for the "security" field. + + + + * defines the security context in which the view is going be executed + + + + Gets whether the "security" field is set + + + Clears the value of the "security" field + + + Field number for the "check" field. + + + + * limits the write operations done on a VIEW + + + + Gets whether the "check" field is set + + + Clears the value of the "check" field + + + Field number for the "column" field. + + + + * defines the list of aliases for column names specified in `stmt` + + + + Field number for the "stmt" field. + + + + * Mysqlx.Crud.Find message from which the SELECT statement + is going to be build + + + + + * + DropView removing existing view + + + + Field number for the "collection" field. + + + + * name of the VIEW object, which should be deleted + + + + Field number for the "if_exists" field. + + + + * if true then suppress error when deleted view does not exists + + + + Gets whether the "if_exists" field is set + + + Clears the value of the "if_exists" field + + + Holder for reflection information generated from mysqlx_cursor.proto + + + File descriptor for mysqlx_cursor.proto + + + + * + Open a cursor + + @startuml + client -> server: Open + alt Success + ... none or partial Resultsets or full Resultsets ... + client <- server: StmtExecuteOk + else Failure + client <- server: Error + end alt + @enduml + + @returns @ref Mysqlx::Ok + + + + Field number for the "cursor_id" field. + + + + * client-side assigned cursor ID; the ID is going to represent + the new cursor and assigned to it the statement + + + + Gets whether the "cursor_id" field is set + + + Clears the value of the "cursor_id" field + + + Field number for the "stmt" field. + + + + * statement for which the resultset is going to be iterated through by the cursor + + + + Field number for the "fetch_rows" field. + + + + * number of rows that should be retrieved from sequential cursor + + + + Gets whether the "fetch_rows" field is set + + + Clears the value of the "fetch_rows" field + + + Container for nested types declared in the Open message type. + + + Field number for the "type" field. + + + Gets whether the "type" field is set + + + Clears the value of the "type" field + + + Field number for the "prepare_execute" field. + + + Container for nested types declared in the OneOfMessage message type. + + + + * + Fetch next portion of data from a cursor + + @startuml + client -> server: Fetch + alt Success + ... none or partial Resultsets or full Resultsets ... + client <- server: StmtExecuteOk + else + client <- server: Error + end + @enduml + + + + Field number for the "cursor_id" field. + + + + * client-side assigned cursor ID; must be already open + + + + Gets whether the "cursor_id" field is set + + + Clears the value of the "cursor_id" field + + + Field number for the "fetch_rows" field. + + + + * number of rows that should be retrieved from sequential cursor + + + + Gets whether the "fetch_rows" field is set + + + Clears the value of the "fetch_rows" field + + + + * + Close cursor + + @startuml + client -> server: Close + alt Success + client <- server: Ok + else Failure + client <- server: Error + end + @enduml + + @returns @ref Mysqlx::Ok or @ref Mysqlx::Error + + + + Field number for the "cursor_id" field. + + + + * client-side assigned cursor ID; must be allocated/open + + + + Gets whether the "cursor_id" field is set + + + Clears the value of the "cursor_id" field + + + Holder for reflection information generated from mysqlx_datatypes.proto + + + File descriptor for mysqlx_datatypes.proto + + + + a scalar + + + + Field number for the "type" field. + + + Gets whether the "type" field is set + + + Clears the value of the "type" field + + + Field number for the "v_signed_int" field. + + + Gets whether the "v_signed_int" field is set + + + Clears the value of the "v_signed_int" field + + + Field number for the "v_unsigned_int" field. + + + Gets whether the "v_unsigned_int" field is set + + + Clears the value of the "v_unsigned_int" field + + + Field number for the "v_octets" field. + + + + 4 is unused, was Null which doesn't have a storage anymore + + + + Field number for the "v_double" field. + + + Gets whether the "v_double" field is set + + + Clears the value of the "v_double" field + + + Field number for the "v_float" field. + + + Gets whether the "v_float" field is set + + + Clears the value of the "v_float" field + + + Field number for the "v_bool" field. + + + Gets whether the "v_bool" field is set + + + Clears the value of the "v_bool" field + + + Field number for the "v_string" field. + + + Container for nested types declared in the Scalar message type. + + + + * a string with a charset/collation + + + + Field number for the "value" field. + + + Gets whether the "value" field is set + + + Clears the value of the "value" field + + + Field number for the "collation" field. + + + Gets whether the "collation" field is set + + + Clears the value of the "collation" field + + + + * an opaque octet sequence, with an optional content_type + See @ref Mysqlx::Resultset::ContentType_BYTES for list of known values. + + + + Field number for the "value" field. + + + Gets whether the "value" field is set + + + Clears the value of the "value" field + + + Field number for the "content_type" field. + + + Gets whether the "content_type" field is set + + + Clears the value of the "content_type" field + + + + * + An object + + + + Field number for the "fld" field. + + + Container for nested types declared in the Object message type. + + + Field number for the "key" field. + + + Gets whether the "key" field is set + + + Clears the value of the "key" field + + + Field number for the "value" field. + + + + * + An Array + + + + Field number for the "value" field. + + + + * + A helper to allow all field types + + + + Field number for the "type" field. + + + Gets whether the "type" field is set + + + Clears the value of the "type" field + + + Field number for the "scalar" field. + + + Field number for the "obj" field. + + + Field number for the "array" field. + + + Container for nested types declared in the Any message type. + + + Holder for reflection information generated from mysqlx_expect.proto + + + File descriptor for mysqlx_expect.proto + + + + * + Open an Expect block and set/unset the conditions that have to + be fulfilled. + + If any of the conditions fail, all enclosed messages will fail + with a ``Mysqlx::Error`` message. + + @returns @ref Mysqlx::Ok on success, @ref Mysqlx::Error on error + + + + Field number for the "op" field. + + + Gets whether the "op" field is set + + + Clears the value of the "op" field + + + Field number for the "cond" field. + + + Container for nested types declared in the Open message type. + + + + * copy the operations from the parent Expect-block + + + + + * start with a empty set of operations + + + + Field number for the "condition_key" field. + + + Gets whether the "condition_key" field is set + + + Clears the value of the "condition_key" field + + + Field number for the "condition_value" field. + + + Gets whether the "condition_value" field is set + + + Clears the value of the "condition_value" field + + + Field number for the "op" field. + + + Gets whether the "op" field is set + + + Clears the value of the "op" field + + + Container for nested types declared in the Condition message type. + + + + * Change error propagation behaviour + + + + + * Check if X Protocol field exists + + + + + * Check if X Protocol supports document _id generation + + + + + * set the condition; set, if not set; overwrite, if set + + + + + * unset the condition + + + + + * + Close a Expect block. + + Closing a Expect block restores the state of the previous Expect + block for the following messages. + + @returns @ref Mysqlx::Ok on success, @ref Mysqlx::Error on error + + + + Holder for reflection information generated from mysqlx_expr.proto + + + File descriptor for mysqlx_expr.proto + + + + * + The "root" of the expression tree. + + If expression type is PLACEHOLDER, then it refers to the value + of a parameter specified when executing a statement (see args + field of StmtExecute command). Field position (which must be + present for such an expression) gives 0-based position of the + parameter in the parameter list. + + @par production list + @code{unparsed} + expr: operator | + : identifier | + : function_call | + : variable | + : literal | + : object | + : array | + : placeholder + @endcode + + + + Field number for the "type" field. + + + Gets whether the "type" field is set + + + Clears the value of the "type" field + + + Field number for the "identifier" field. + + + Field number for the "variable" field. + + + Gets whether the "variable" field is set + + + Clears the value of the "variable" field + + + Field number for the "literal" field. + + + Field number for the "function_call" field. + + + Field number for the "operator" field. + + + Field number for the "position" field. + + + Gets whether the "position" field is set + + + Clears the value of the "position" field + + + Field number for the "object" field. + + + Field number for the "array" field. + + + Container for nested types declared in the Expr message type. + + + + * + Identifier: name, schame.name + + @par production list + @code{unparsed} + identifier: string "." string | + : string + @endcode + + + + Field number for the "name" field. + + + Gets whether the "name" field is set + + + Clears the value of the "name" field + + + Field number for the "schema_name" field. + + + Gets whether the "schema_name" field is set + + + Clears the value of the "schema_name" field + + + + * + Document path item + + @par production list + @code{unparsed} + document_path: path_item | path_item document_path + path_item : member | array_index | "**" + member : "." string | "." "*" + array_index : "[" number "]" | "[" "*" "]" + @endcode + + + + Field number for the "type" field. + + + Gets whether the "type" field is set + + + Clears the value of the "type" field + + + Field number for the "value" field. + + + Gets whether the "value" field is set + + + Clears the value of the "value" field + + + Field number for the "index" field. + + + + * used in case of ARRY_INDEX + + + + Gets whether the "index" field is set + + + Clears the value of the "index" field + + + Container for nested types declared in the DocumentPathItem message type. + + + + * .member + + + + + * \.* + + + + + * [index] + + + + + * [*] + + + + + * ** + + + + + Field number for the "document_path" field. + + + + * document path + + + + Field number for the "name" field. + + + + * name of column + + + + Gets whether the "name" field is set + + + Clears the value of the "name" field + + + Field number for the "table_name" field. + + + + * name of table + + + + Gets whether the "table_name" field is set + + + Clears the value of the "table_name" field + + + Field number for the "schema_name" field. + + + + * name of schema + + + + Gets whether the "schema_name" field is set + + + Clears the value of the "schema_name" field + + + + * + Function call: ``func(a, b, "1", 3)`` + + @par production list + @code{unparsed} + function_call: `identifier` "(" [ `expr` ["," `expr` ]* ] ")" + @endcode + + + + Field number for the "name" field. + + + + * identifier of function; at least name of it + + + + Field number for the "param" field. + + + + * list of parameters + + + + Field number for the "name" field. + + + + * name of operator + + + + Gets whether the "name" field is set + + + Clears the value of the "name" field + + + Field number for the "param" field. + + + + * list of parameters + + + + + * + An object (with expression values) + + + + Field number for the "fld" field. + + + + * list of fields + + + + Container for nested types declared in the Object message type. + + + Field number for the "key" field. + + + + * identifier of field + + + + Gets whether the "key" field is set + + + Clears the value of the "key" field + + + Field number for the "value" field. + + + + * value of field + + + + + * + An array of expressions + + + + Field number for the "value" field. + + + + * list of values + + + + Holder for reflection information generated from mysqlx_notice.proto + + + File descriptor for mysqlx_notice.proto + + + + * + Common frame for all notices + + | ``.type`` | Value | + |---------------------------------------------------|------ | + | @ref Mysqlx::Notice::Warning | 1 | + | @ref Mysqlx::Notice::SessionVariableChanged | 2 | + | @ref Mysqlx::Notice::SessionStateChanged | 3 | + | @ref Mysqlx::Notice::GroupReplicationStateChanged | 4 | + | @ref Mysqlx::Notice::ServerHello | 5 | + + + + Field number for the "type" field. + + + + * the type of the payload + + + + Gets whether the "type" field is set + + + Clears the value of the "type" field + + + Field number for the "scope" field. + + + + * global or local notification + + + + Gets whether the "scope" field is set + + + Clears the value of the "scope" field + + + Field number for the "payload" field. + + + + * the payload of the notification + + + + Gets whether the "payload" field is set + + + Clears the value of the "payload" field + + + Container for nested types declared in the Frame message type. + + + + * scope of notice + + + + + * type of notice payload + + + + + * + Server-side warnings and notes + + @par ``.scope`` == ``local`` + ``.level``, ``.code`` and ``.msg`` map the content of: + @code{sql} + SHOW WARNINGS + @endcode + + @par ``.scope`` == ``global`` + (undefined) Will be used for global, unstructured messages like: + - server is shutting down + - a node disconnected from group + - schema or table dropped + + | @ref Mysqlx::Notice::Frame Field | Value | + |-----------------------------------|-------------------------| + | ``.type`` | 1 | + | ``.scope`` | ``local`` or ``global`` | + + + + Field number for the "level" field. + + + + * Note or Warning + + + + Gets whether the "level" field is set + + + Clears the value of the "level" field + + + Field number for the "code" field. + + + + * warning code + + + + Gets whether the "code" field is set + + + Clears the value of the "code" field + + + Field number for the "msg" field. + + + + * warning message + + + + Gets whether the "msg" field is set + + + Clears the value of the "msg" field + + + Container for nested types declared in the Warning message type. + + + + * + Notify clients about changes to the current session variables. + + Every change to a variable that is accessible through: + + @code{sql} + SHOW SESSION VARIABLES + @endcode + + | @ref Mysqlx::Notice::Frame Field | Value | + |-----------------------------------|----------| + | ``.type`` | 2 | + | ``.scope`` | ``local``| + + + + Field number for the "param" field. + + + + * name of the variable + + + + Gets whether the "param" field is set + + + Clears the value of the "param" field + + + Field number for the "value" field. + + + + * the changed value of param + + + + Field number for the "param" field. + + + + * parameter key + + + + Gets whether the "param" field is set + + + Clears the value of the "param" field + + + Field number for the "value" field. + + + + * updated value + + + + Container for nested types declared in the SessionStateChanged message type. + + + + .. more to be added + + + + + * + Notify clients about group replication state changes + + | @ref Mysqlx::Notice::Frame Field | Value | + |-----------------------------------|------------| + |``.type`` | 4 | + |``.scope`` | ``global`` | + + + + Field number for the "type" field. + + + + * type of group replication event + + + + Gets whether the "type" field is set + + + Clears the value of the "type" field + + + Field number for the "view_id" field. + + + + * view identifier + + + + Gets whether the "view_id" field is set + + + Clears the value of the "view_id" field + + + Container for nested types declared in the GroupReplicationStateChanged message type. + + + + * + Notify clients about connection to X Protocol server + + | @ref Mysqlx::Notice::Frame Field | Value | + |-----------------------------------|------------| + |``.type`` | 5 | + |``.scope`` | ``global`` | + + + + Holder for reflection information generated from mysqlx_prepare.proto + + + File descriptor for mysqlx_prepare.proto + + + + * + Prepare a new statement + + @startuml + client -> server: Prepare + alt Success + client <- server: Ok + else Failure + client <- server: Error + end + @enduml + + @returns @ref Mysqlx::Ok or @ref Mysqlx::Error + + + + Field number for the "stmt_id" field. + + + + * client-side assigned statement ID, which is going to identify + the result of preparation + + + + Gets whether the "stmt_id" field is set + + + Clears the value of the "stmt_id" field + + + Field number for the "stmt" field. + + + + * defines one of following messages to be prepared: + Crud::Find, Crud::Insert, Crud::Delete, Crud::Upsert, Sql::StmtExecute + + + + Container for nested types declared in the Prepare message type. + + + Field number for the "type" field. + + + Gets whether the "type" field is set + + + Clears the value of the "type" field + + + Field number for the "find" field. + + + Field number for the "insert" field. + + + Field number for the "update" field. + + + Field number for the "delete" field. + + + Field number for the "stmt_execute" field. + + + Container for nested types declared in the OneOfMessage message type. + + + + Determine which of optional fields was set by the client + (Workaround for missing "oneof" keyword in pb2.5) + + + + + * + Execute already-prepared statement + + @startuml + + client -> server: Execute + alt Success + ... Resultsets... + client <- server: StmtExecuteOk + else Failure + client <- server: Error + end + @enduml + @returns @ref Mysqlx::Ok + + + + Field number for the "stmt_id" field. + + + + * client-side assigned statement ID, must be already prepared + + + + Gets whether the "stmt_id" field is set + + + Clears the value of the "stmt_id" field + + + Field number for the "args" field. + + + + * Arguments to bind to the prepared statement + + + + Field number for the "compact_metadata" field. + + + + * send only type information for + @ref Mysqlx::Resultset::ColumnMetaData, skipping names and others + + + + Gets whether the "compact_metadata" field is set + + + Clears the value of the "compact_metadata" field + + + + * + Deallocate already-prepared statement + + @startuml + client -> server: Deallocate + alt Success + client <- server: Ok + else Failure + client <- server: Error + end + @enduml + + @returns @ref Mysqlx::Ok or @ref Mysqlx::Error + + + + Field number for the "stmt_id" field. + + + + * client-side assigned statement ID, must be already prepared + + + + Gets whether the "stmt_id" field is set + + + Clears the value of the "stmt_id" field + + + Holder for reflection information generated from mysqlx_resultset.proto + + + File descriptor for mysqlx_resultset.proto + + + + * + A hint about the higher-level encoding of a BYTES field + + |type | value | description | + |------| -------|-------------------------| + |BYTES | 0x0001 | GEOMETRY (WKB encoding) | + |BYTES | 0x0002 | JSON (text encoding) | + |BYTES | 0x0003 | XML (text encoding) | + + @note + this list isn't comprehensive. As a guideline: the field's value is expected + to pass a validator check on client and server if this field is set. + If the server adds more internal datatypes that rely on BLOB storage + like image manipulation, seeking into complex types in BLOBs, ... more + types will be added. + + + + + * + A hint about the higher-level encoding of a DATETIME field + + |type |value |description | + |---------|-------|-------------------------------------------| + |DATE |0x0001 |DATETIME contains only date part | + |DATETIME |0x0002 |DATETIME contains both date and time parts | + + + + + * + Resultsets are finished, OUT paramset is next: + + + + + * + Resultset and out-params are finished, but more resultsets available + + + + + * + All resultsets are finished + + + + + * + Cursor is opened; still, the execution of PrepFetch or PrepExecute ended + + + + + * + Meta data of a column + + @note + The encoding used for the different ``bytes`` fields in the + meta data is externally controlled. See also: + https://dev.mysql.com/doc/refman/5.0/en/charset-connection.html + + @par + @note + The server may not set the ``original_{table|name}`` fields + if they are equal to the plain ``{table|name}`` field. + + @par + @note + A client has to reconstruct it like: + @code{py} + if .original_name is empty and .name is not empty: + .original_name = .name + + if .original_table is empty and .table is not empty: + .original_table = .table + @endcode + + @par + @note + ``Compact metadata format`` can be requested by the client. + In that case, only ``.type`` is set and all other fields are empty. + + Expected data type of Mysqlx.Resultset.Row per SQL Type for + non-NULL values: + + | SQL Type | .type | .length | .frac\_dig | .flags | .charset | + |-------------------|-----------|---------|------------|--------|----------| + | TINY | SINT | x | | | | + | TINY UNSIGNED | UINT | x | | x | | + | SHORT | SINT | x | | | | + | SHORT UNSIGNED | UINT | x | | x | | + | INT24 | SINT | x | | | | + | INT24 UNSIGNED | UINT | x | | x | | + | INT | SINT | x | | | | + | INT UNSIGNED | UINT | x | | x | | + | LONGLONG | SINT | x | | | | + | LONGLONG UNSIGNED | UINT | x | | x | | + | DOUBLE | DOUBLE | x | x | x | | + | FLOAT | FLOAT | x | x | x | | + | DECIMAL | DECIMAL | x | x | x | | + | VARCHAR,CHAR,... | BYTES | x | | x | x | + | GEOMETRY | BYTES | | | | | + | TIME | TIME | x | | | | + | DATE | DATETIME | x | | | | + | DATETIME | DATETIME | x | | | | + | YEAR | UINT | x | | x | | + | TIMESTAMP | DATETIME | x | | | | + | SET | SET | | | | x | + | ENUM | ENUM | | | | x | + | NULL | BYTES | | | | | + | BIT | BIT | x | | | | + + @note + The SQL "NULL" value is sent as an empty field value in + @ref Mysqlx::Resultset::Row. + + @par Tip + The protobuf encoding of primitive data types is described in + https://developers.google.com/protocol-buffers/docs/encoding + + + SINT + + - ``.length`` @n + Maximum number of displayable decimal digits (including + minus sign) of the type. + @note + The valid range is 0-255, but usually you'll see 1-20. + + | SQL Type | Maximum Digits per Type | + |------------------|-------------------------| + | TINY SIGNED | 4 | + | SHORT SIGNED | 6 | + | INT24 SIGNED | 8 | + | INT SIGNED | 11 | + | LONGLONG SIGNED | 20 | + + @par Tip + Definition of ``M`` are in + https://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html. + + - ``value``@n + Variable length encoded signed 64 integer. + + + UINT + + - ``.flags & 1`` (zerofill) @n + The client has to left pad with 0's up to .length. + + - ``.length`` @n + Maximum number of displayable decimal digits of the + type. + @note + The valid range is 0-255, but usually you'll see + 1-20. + + | SQL Type | max digits per type | + |----------------------|---------------------| + | TINY UNSIGNED | 3 | + | SHORT UNSIGNED | 5 | + | INT24 UNSIGNED | 8 | + | INT UNSIGNED | 10 | + | LONGLONG UNSIGNED | 20 | + + @par Tip + Definition of ``M`` are in + https://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html. + + - ``value`` @n + Variable length encoded unsigned 64 integer. + + + BIT + + - ``.length`` @n + Maximum number of displayable binary digits. + @note + The valid range for M of the ``BIT`` type is 1 - 64. + + @par Tip + https://dev.mysql.com/doc/refman/5.5/en/numeric-type-overview.html + + - ``value`` @n + Variable length encoded unsigned 64 integer. + + + DOUBLE + + - ``.length`` @n + Maximum number of displayable decimal digits (including + the decimal point and ``.fractional_digits``). + + - ``.fractional_digits`` @n + Maximum number of displayable decimal digits following + the decimal point. + + - ``value``@n + Encoded as protobuf's 'double'. + + + FLOAT + + - ``.length``@n + Maximum number of displayable decimal digits (including + the decimal point and ``.fractional_digits``). + + - ``.fractional_digits``@n + Maximum number of displayable decimal digits following + the decimal point. + + - ``value``@n + Encoded as protobuf's 'float'. + + + BYTES, ENUM + @note + BYTES is used for all opaque byte strings that may have a charset: + - TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB + - TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT + - VARCHAR, VARBINARY + - CHAR, BINARY + - ENUM + + - ``.length``@n + Maximum length of characters of the underlying type. + + - ``.flags & 1`` (rightpad) @n + If the length of the field is less than ``.length``, the + receiver is supposed to add padding characters to the + right end of the string. If the ``.charset`` is + "binary", the padding character is ``0x00``, otherwise + it is a space character as defined by that character + set. + | SQL Type | .length | .charset | .flags | + |---------------|----------|-----------|----------| + | TINYBLOB | 256 | binary | | + | BLOB | 65535 | binary | | + | VARCHAR(32) | 32 | utf8 | | + | VARBINARY(32) | 32 | utf8\_bin | | + | BINARY(32) | 32 | binary | rightpad | + | CHAR(32) | 32 | utf8 | rightpad | + + - ``value`` + Sequence of bytes with added one extra ``0x00`` byte at + the end. To obtain the original string, the extra + ``0x00`` should be removed. The length of the string can + be acquired with protobuf's field ``length()`` method: + + ``length of sequence-of-bytes = length-of-field - 1`` + @note + The extra byte allows to distinguish between a NULL + and empty byte sequence. + + + TIME + + A time value. + + - ``value``@n + The following bytes sequence: + + ``negate [ hour [ minutes [ seconds [ useconds ]]]]`` + + - negate - one byte, should be one of: 0x00 for "+", + 0x01 for "-" + + - hour - optional variable length encoded unsigned64 + value for the hour + + - minutes - optional variable length encoded unsigned64 + value for the minutes + + - seconds - optional variable length encoded unsigned64 + value for the seconds + + - useconds - optional variable length encoded + unsigned64 value for the microseconds + + @par Tip + The protobuf encoding in + https://developers.google.com/protocol-buffers/docs/encoding. + + @note + Hour, minutes, seconds, and useconds are optional if + all the values to the right are 0. + + Example: ``0x00 -> +00:00:00.000000`` + + + DATETIME + + A date or date and time value. + + - ``value`` @n + A sequence of variants, arranged as follows: + + ``| year | month | day | [ | hour | [ | minutes | [ | seconds | [ | useconds | ]]]]`` + + - year - variable length encoded unsigned64 value for + the year + + - month - variable length encoded unsigned64 value for + the month + + - day - variable length encoded unsigned64 value for + the day + + - hour - optional variable length encoded unsigned64 + value for the hour + + - minutes - optional variable length encoded unsigned64 + value for the minutes + + - seconds - optional variable length encoded unsigned64 + value for the seconds + + - useconds - optional variable length encoded + unsigned64 value for the microseconds + @note + Hour, minutes, seconds, useconds are optional if all + the values to the right are 0. + + - ``.flags``@n + | Name | Position | + |---------------|----------| + | is\_timestamp | 1 | + + + DECIMAL + + An arbitrary length number. The number is encoded as a + single byte indicating the position of the decimal point + followed by the Packed BCD encoded number. Packed BCD is + used to simplify conversion to and from strings and other + native arbitrary precision math data types. See also: packed + BCD in https://en.wikipedia.org/wiki/Binary-coded_decimal + + - ``.length`` + Maximum number of displayable decimal digits + (*excluding* the decimal point and sign, but including + ``.fractional_digits``). + @note + Should be in the range of 1 - 65. + + - ``.fractional_digits`` + The decimal digits to display out of length. + @note + Should be in the range of 0 - 30. + + ``value`` + The following bytes sequence: + + ``scale | BCD+ sign [0x00]?`` + + - scale - 8bit scale value (number of decimal digit after the '.') + + - BCD - BCD encoded digits (4 bits for each digit) + + - sign - sign encoded on 4 bits (0xc = "+", 0xd = "-") + + - 0x0 - last 4bits if length(digits) % 2 == 0 + + Example: ``x04 0x12 0x34 0x01 + 0xd0 -> -12.3401`` + + + SET + + A list of strings representing a SET of values. + + - ``value``@n + A sequence of 0 or more of protobuf's bytes (length + prepended octets) or one of the special sequences with a + predefined meaning listed below. + + Example (length of the bytes array shown in brackets): + - ``[0]`` - the NULL value + + - ``[1] 0x00`` - a set containing a blank string '' + + - ``[1] 0x01`` - this would be an invalid value, + but is to be treated as the empty set + + - ``[2] 0x01 0x00`` - a set with a single item, which is the '0' + character + + - ``[8] 0x03 F O O 0x03 B A R`` - a set with 2 items: FOO,BAR + + + + Field number for the "type" field. + + + + * datatype of the field in a row + + + + Gets whether the "type" field is set + + + Clears the value of the "type" field + + + Field number for the "name" field. + + + + * name of the column + + + + Gets whether the "name" field is set + + + Clears the value of the "name" field + + + Field number for the "original_name" field. + + + + * name of the column before an alias was applied + + + + Gets whether the "original_name" field is set + + + Clears the value of the "original_name" field + + + Field number for the "table" field. + + + + * name of the table the column originates from + + + + Gets whether the "table" field is set + + + Clears the value of the "table" field + + + Field number for the "original_table" field. + + + + * name of the table the column originates from before an alias was applied + + + + Gets whether the "original_table" field is set + + + Clears the value of the "original_table" field + + + Field number for the "schema" field. + + + + * schema the column originates from + + + + Gets whether the "schema" field is set + + + Clears the value of the "schema" field + + + Field number for the "catalog" field. + + + + * catalog the schema originates from + @note + As there is currently no support for catalogs in MySQL, + don't expect this field to be set. In the MySQL C/S + protocol the field had the value ``def`` all the time + + + + Gets whether the "catalog" field is set + + + Clears the value of the "catalog" field + + + Field number for the "collation" field. + + + Gets whether the "collation" field is set + + + Clears the value of the "collation" field + + + Field number for the "fractional_digits" field. + + + + * displayed factional decimal digits for floating point and + fixed point numbers + + + + Gets whether the "fractional_digits" field is set + + + Clears the value of the "fractional_digits" field + + + Field number for the "length" field. + + + + * maximum count of displayable characters of .type + + + + Gets whether the "length" field is set + + + Clears the value of the "length" field + + + Field number for the "flags" field. + + + + * ``.type`` specific flags + | Type | Value | Description | + |---------|--------|--------------| + | UINT | 0x0001 | zerofill | + | DOUBLE | 0x0001 | unsigned | + | FLOAT | 0x0001 | unsigned | + | DECIMAL | 0x0001 | unsigned | + | BYTES | 0x0001 | rightpad | + + | Value | Description | + |--------|-----------------| + | 0x0010 | NOT\_NULL | + | 0x0020 | PRIMARY\_KEY | + | 0x0040 | UNIQUE\_KEY | + | 0x0080 | MULTIPLE\_KEY | + | 0x0100 | AUTO\_INCREMENT | + + default: 0 + + + + Gets whether the "flags" field is set + + + Clears the value of the "flags" field + + + Field number for the "content_type" field. + + + + * a hint about the higher-level encoding of a BYTES field + | Type | Value | Description | + |--------|--------|-------------------------| + | BYTES | 0x0001 | GEOMETRY (WKB encoding) | + | BYTES | 0x0002 | JSON (text encoding) | + | BYTES | 0x0003 | XML (text encoding) | + @note + This list isn't comprehensive. As a guideline: the field's + value is expected to pass a validator check on client + and server if this field is set. If the server adds more + internal data types that rely on BLOB storage like image + manipulation, seeking into complex types in BLOBs, and + more types will be added + + + + Gets whether the "content_type" field is set + + + Clears the value of the "content_type" field + + + Container for nested types declared in the ColumnMetaData message type. + + + + * + Row in a Resultset. + + A row is represented as a list of fields encoded as byte blobs. + Value of each field is encoded as sequence of bytes using + encoding appropriate for the type of the value given by + ``ColumnMetadata``, as specified in the @ref Mysqlx::Resultset::ColumnMetaData + description. + + + + Field number for the "field" field. + + + Holder for reflection information generated from mysqlx_session.proto + + + File descriptor for mysqlx_session.proto + + + + * + The initial message send from the client to the server to start + the authentication process. + + @returns @ref Mysqlx::Session::AuthenticateContinue + + + + Field number for the "mech_name" field. + + + + * authentication mechanism name + + + + Gets whether the "mech_name" field is set + + + Clears the value of the "mech_name" field + + + Field number for the "auth_data" field. + + + + * authentication data + + + + Gets whether the "auth_data" field is set + + + Clears the value of the "auth_data" field + + + Field number for the "initial_response" field. + + + + * initial response + + + + Gets whether the "initial_response" field is set + + + Clears the value of the "initial_response" field + + + + * + Send by client or server after an @ref Mysqlx::Session::AuthenticateStart + to exchange more authentication data. + + @returns Mysqlx::Session::AuthenticateContinue + + + + Field number for the "auth_data" field. + + + + * authentication data + + + + Gets whether the "auth_data" field is set + + + Clears the value of the "auth_data" field + + + + * + Sent by the server after successful authentication. + + + + Field number for the "auth_data" field. + + + + * authentication data + + + + Gets whether the "auth_data" field is set + + + Clears the value of the "auth_data" field + + + + * + Reset the current session. + + @returns @ref Mysqlx::Ok + + + + Field number for the "keep_open" field. + + + + * if is true the session will be reset, but stays authenticated; otherwise, + the session will be closed and needs to be authenticated again + + + + Gets whether the "keep_open" field is set + + + Clears the value of the "keep_open" field + + + + * + Close the current session. + + @returns @ref Mysqlx::Ok + + + + Holder for reflection information generated from mysqlx_sql.proto + + + File descriptor for mysqlx_sql.proto + + + + + Execute a statement in the given namespace. + + @startuml "Execute Statements" + client -> server: StmtExecute + ... zero or more Resultsets ... + server --> client: StmtExecuteOk + @enduml + + @notice This message may generate a notice containing WARNINGs generated by + its execution. This message may generate a notice containing INFO messages + generated by its execution. + + @returns zero or more @ref Mysqlx::Resultset followed by @ref Mysqlx::Sql::StmtExecuteOk + + + + Field number for the "namespace" field. + + + + * namespace of the statement to be executed + + + + Gets whether the "namespace" field is set + + + Clears the value of the "namespace" field + + + Field number for the "stmt" field. + + + + * statement that shall be executed + + + + Gets whether the "stmt" field is set + + + Clears the value of the "stmt" field + + + Field number for the "args" field. + + + + * values for wildcard replacements + + + + Field number for the "compact_metadata" field. + + + + * send only type information for @ref Mysqlx::Resultset::ColumnMetaData, + skipping names and others + + + + Gets whether the "compact_metadata" field is set + + + Clears the value of the "compact_metadata" field + + + + * + Statement executed successfully + + + + diff --git a/sql2/bin/Debug/PaymentLogs.exe b/sql2/bin/Debug/PaymentLogs.exe new file mode 100644 index 0000000..bf54e21 Binary files /dev/null and b/sql2/bin/Debug/PaymentLogs.exe differ diff --git a/sql2/bin/Debug/PaymentLogs.exe.config b/sql2/bin/Debug/PaymentLogs.exe.config new file mode 100644 index 0000000..5c155bb --- /dev/null +++ b/sql2/bin/Debug/PaymentLogs.exe.config @@ -0,0 +1,13 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/sql2/bin/Debug/PaymentLogs.pdb b/sql2/bin/Debug/PaymentLogs.pdb new file mode 100644 index 0000000..cd125dc Binary files /dev/null and b/sql2/bin/Debug/PaymentLogs.pdb differ diff --git a/sql2/bin/Debug/System.Buffers.dll b/sql2/bin/Debug/System.Buffers.dll new file mode 100644 index 0000000..f2d83c5 Binary files /dev/null and b/sql2/bin/Debug/System.Buffers.dll differ diff --git a/sql2/bin/Debug/System.Memory.dll b/sql2/bin/Debug/System.Memory.dll new file mode 100644 index 0000000..4617199 Binary files /dev/null and b/sql2/bin/Debug/System.Memory.dll differ diff --git a/sql2/bin/Debug/System.Numerics.Vectors.dll b/sql2/bin/Debug/System.Numerics.Vectors.dll new file mode 100644 index 0000000..0865972 Binary files /dev/null and b/sql2/bin/Debug/System.Numerics.Vectors.dll differ diff --git a/sql2/bin/Debug/System.Threading.Tasks.Extensions.dll b/sql2/bin/Debug/System.Threading.Tasks.Extensions.dll new file mode 100644 index 0000000..eeec928 Binary files /dev/null and b/sql2/bin/Debug/System.Threading.Tasks.Extensions.dll differ diff --git a/sql2/bin/Debug/sql2.exe b/sql2/bin/Debug/sql2.exe new file mode 100644 index 0000000..07b1a27 Binary files /dev/null and b/sql2/bin/Debug/sql2.exe differ diff --git a/sql2/bin/Debug/sql2.exe.config b/sql2/bin/Debug/sql2.exe.config new file mode 100644 index 0000000..90133cf --- /dev/null +++ b/sql2/bin/Debug/sql2.exe.config @@ -0,0 +1,13 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/sql2/bin/Debug/sql2.pdb b/sql2/bin/Debug/sql2.pdb new file mode 100644 index 0000000..74eab1c Binary files /dev/null and b/sql2/bin/Debug/sql2.pdb differ diff --git a/sql2/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs b/sql2/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs new file mode 100644 index 0000000..3871b18 --- /dev/null +++ b/sql2/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] diff --git a/sql2/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/sql2/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000..1bb2490 Binary files /dev/null and b/sql2/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/sql2/obj/Debug/PaymentLogs.DataForm.resources b/sql2/obj/Debug/PaymentLogs.DataForm.resources new file mode 100644 index 0000000..11a6501 Binary files /dev/null and b/sql2/obj/Debug/PaymentLogs.DataForm.resources differ diff --git a/sql2/obj/Debug/PaymentLogs.LoginForm.resources b/sql2/obj/Debug/PaymentLogs.LoginForm.resources new file mode 100644 index 0000000..38900f4 Binary files /dev/null and b/sql2/obj/Debug/PaymentLogs.LoginForm.resources differ diff --git a/sql2/obj/Debug/PaymentLogs.Properties.Resources.resources b/sql2/obj/Debug/PaymentLogs.Properties.Resources.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/sql2/obj/Debug/PaymentLogs.Properties.Resources.resources differ diff --git a/sql2/obj/Debug/PaymentLogs.RegisterForm.resources b/sql2/obj/Debug/PaymentLogs.RegisterForm.resources new file mode 100644 index 0000000..0babd32 Binary files /dev/null and b/sql2/obj/Debug/PaymentLogs.RegisterForm.resources differ diff --git a/sql2/obj/Debug/PaymentLogs.exe b/sql2/obj/Debug/PaymentLogs.exe new file mode 100644 index 0000000..bf54e21 Binary files /dev/null and b/sql2/obj/Debug/PaymentLogs.exe differ diff --git a/sql2/obj/Debug/PaymentLogs.pdb b/sql2/obj/Debug/PaymentLogs.pdb new file mode 100644 index 0000000..cd125dc Binary files /dev/null and b/sql2/obj/Debug/PaymentLogs.pdb differ diff --git a/sql2/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll b/sql2/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll new file mode 100644 index 0000000..d4644e7 Binary files /dev/null and b/sql2/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll differ diff --git a/sql2/obj/Debug/TempPE/Отчет_оплаты_обучения_обучающихсяDataSet.Designer.cs.dll b/sql2/obj/Debug/TempPE/Отчет_оплаты_обучения_обучающихсяDataSet.Designer.cs.dll new file mode 100644 index 0000000..da6c839 Binary files /dev/null and b/sql2/obj/Debug/TempPE/Отчет_оплаты_обучения_обучающихсяDataSet.Designer.cs.dll differ diff --git a/sql2/obj/Debug/paymentLogs.csproj.AssemblyReference.cache b/sql2/obj/Debug/paymentLogs.csproj.AssemblyReference.cache new file mode 100644 index 0000000..b71d0df Binary files /dev/null and b/sql2/obj/Debug/paymentLogs.csproj.AssemblyReference.cache differ diff --git a/sql2/obj/Debug/paymentLogs.csproj.CoreCompileInputs.cache b/sql2/obj/Debug/paymentLogs.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..18aa3fe --- /dev/null +++ b/sql2/obj/Debug/paymentLogs.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +a26ca2b60032e6c6f1248178c3c1a21585c29cc4245869760a26f0de819fc4e6 diff --git a/sql2/obj/Debug/paymentLogs.csproj.FileListAbsolute.txt b/sql2/obj/Debug/paymentLogs.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..d3ccc60 --- /dev/null +++ b/sql2/obj/Debug/paymentLogs.csproj.FileListAbsolute.txt @@ -0,0 +1,19 @@ +D:\source\sql2\sql2\obj\Debug\paymentLogs.csproj.AssemblyReference.cache +D:\source\sql2\sql2\obj\Debug\PaymentLogs.DataForm.resources +D:\source\sql2\sql2\obj\Debug\PaymentLogs.LoginForm.resources +D:\source\sql2\sql2\obj\Debug\PaymentLogs.RegisterForm.resources +D:\source\sql2\sql2\obj\Debug\PaymentLogs.Properties.Resources.resources +D:\source\sql2\sql2\obj\Debug\paymentLogs.csproj.GenerateResource.cache +D:\source\sql2\sql2\obj\Debug\paymentLogs.csproj.CoreCompileInputs.cache +D:\source\sql2\sql2\bin\Debug\PaymentLogs.exe.config +D:\source\sql2\sql2\bin\Debug\PaymentLogs.exe +D:\source\sql2\sql2\bin\Debug\PaymentLogs.pdb +D:\source\sql2\sql2\bin\Debug\MySql.Data.dll +D:\source\sql2\sql2\bin\Debug\System.Memory.dll +D:\source\sql2\sql2\bin\Debug\System.Threading.Tasks.Extensions.dll +D:\source\sql2\sql2\bin\Debug\System.Numerics.Vectors.dll +D:\source\sql2\sql2\bin\Debug\System.Buffers.dll +D:\source\sql2\sql2\bin\Debug\MySql.Data.xml +D:\source\sql2\sql2\obj\Debug\paymentL.CB2ACF0F.Up2Date +D:\source\sql2\sql2\obj\Debug\PaymentLogs.exe +D:\source\sql2\sql2\obj\Debug\PaymentLogs.pdb diff --git a/sql2/obj/Debug/paymentLogs.csproj.GenerateResource.cache b/sql2/obj/Debug/paymentLogs.csproj.GenerateResource.cache new file mode 100644 index 0000000..0d1de0d Binary files /dev/null and b/sql2/obj/Debug/paymentLogs.csproj.GenerateResource.cache differ diff --git a/sql2/obj/Debug/sql2.Form1.resources b/sql2/obj/Debug/sql2.Form1.resources new file mode 100644 index 0000000..b14d6b3 Binary files /dev/null and b/sql2/obj/Debug/sql2.Form1.resources differ diff --git a/sql2/obj/Debug/sql2.Form2.resources b/sql2/obj/Debug/sql2.Form2.resources new file mode 100644 index 0000000..70768ad Binary files /dev/null and b/sql2/obj/Debug/sql2.Form2.resources differ diff --git a/sql2/obj/Debug/sql2.Form3.resources b/sql2/obj/Debug/sql2.Form3.resources new file mode 100644 index 0000000..e0a2dbf Binary files /dev/null and b/sql2/obj/Debug/sql2.Form3.resources differ diff --git a/sql2/obj/Debug/sql2.Properties.Resources.resources b/sql2/obj/Debug/sql2.Properties.Resources.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/sql2/obj/Debug/sql2.Properties.Resources.resources differ diff --git a/sql2/obj/Debug/sql2.csproj.AssemblyReference.cache b/sql2/obj/Debug/sql2.csproj.AssemblyReference.cache new file mode 100644 index 0000000..b3a49d8 Binary files /dev/null and b/sql2/obj/Debug/sql2.csproj.AssemblyReference.cache differ diff --git a/sql2/obj/Debug/sql2.csproj.CoreCompileInputs.cache b/sql2/obj/Debug/sql2.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..e55b8e0 --- /dev/null +++ b/sql2/obj/Debug/sql2.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +c97d5e8045a19ab1b4445b3aa971d754936e9e636d5fba73c44e020151866cba diff --git a/sql2/obj/Debug/sql2.csproj.FileListAbsolute.txt b/sql2/obj/Debug/sql2.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..ae56733 --- /dev/null +++ b/sql2/obj/Debug/sql2.csproj.FileListAbsolute.txt @@ -0,0 +1,31 @@ +D:\хуита\visual studio\visual X3\sql2\sql2\bin\Debug\sql2.exe.config +D:\хуита\visual studio\visual X3\sql2\sql2\bin\Debug\sql2.exe +D:\хуита\visual studio\visual X3\sql2\sql2\bin\Debug\sql2.pdb +D:\хуита\visual studio\visual X3\sql2\sql2\obj\Debug\sql2.csproj.AssemblyReference.cache +D:\хуита\visual studio\visual X3\sql2\sql2\obj\Debug\sql2.Form1.resources +D:\хуита\visual studio\visual X3\sql2\sql2\obj\Debug\sql2.Form2.resources +D:\хуита\visual studio\visual X3\sql2\sql2\obj\Debug\sql2.Form3.resources +D:\хуита\visual studio\visual X3\sql2\sql2\obj\Debug\sql2.Properties.Resources.resources +D:\хуита\visual studio\visual X3\sql2\sql2\obj\Debug\sql2.csproj.GenerateResource.cache +D:\хуита\visual studio\visual X3\sql2\sql2\obj\Debug\sql2.csproj.CoreCompileInputs.cache +D:\хуита\visual studio\visual X3\sql2\sql2\obj\Debug\sql2.exe +D:\хуита\visual studio\visual X3\sql2\sql2\obj\Debug\sql2.pdb +D:\source\sql2\sql2\obj\Debug\sql2.csproj.AssemblyReference.cache +D:\source\sql2\sql2\obj\Debug\sql2.exe +D:\source\sql2\sql2\obj\Debug\sql2.pdb +D:\source\sql2\sql2\bin\Debug\sql2.exe.config +D:\source\sql2\sql2\bin\Debug\sql2.exe +D:\source\sql2\sql2\bin\Debug\sql2.pdb +D:\source\sql2\sql2\bin\Debug\MySql.Data.dll +D:\source\sql2\sql2\bin\Debug\System.Memory.dll +D:\source\sql2\sql2\bin\Debug\System.Threading.Tasks.Extensions.dll +D:\source\sql2\sql2\bin\Debug\System.Numerics.Vectors.dll +D:\source\sql2\sql2\bin\Debug\System.Buffers.dll +D:\source\sql2\sql2\bin\Debug\MySql.Data.xml +D:\source\sql2\sql2\obj\Debug\sql2.Form3.resources +D:\source\sql2\sql2\obj\Debug\sql2.Form1.resources +D:\source\sql2\sql2\obj\Debug\sql2.Form2.resources +D:\source\sql2\sql2\obj\Debug\sql2.Properties.Resources.resources +D:\source\sql2\sql2\obj\Debug\sql2.csproj.GenerateResource.cache +D:\source\sql2\sql2\obj\Debug\sql2.csproj.CoreCompileInputs.cache +D:\source\sql2\sql2\obj\Debug\sql2.csproj.Up2Date diff --git a/sql2/obj/Debug/sql2.csproj.GenerateResource.cache b/sql2/obj/Debug/sql2.csproj.GenerateResource.cache new file mode 100644 index 0000000..f9245d4 Binary files /dev/null and b/sql2/obj/Debug/sql2.csproj.GenerateResource.cache differ diff --git a/sql2/obj/Debug/sql2.csproj.Up2Date b/sql2/obj/Debug/sql2.csproj.Up2Date new file mode 100644 index 0000000..e69de29 diff --git a/sql2/obj/Debug/sql2.exe b/sql2/obj/Debug/sql2.exe new file mode 100644 index 0000000..07b1a27 Binary files /dev/null and b/sql2/obj/Debug/sql2.exe differ diff --git a/sql2/obj/Debug/sql2.pdb b/sql2/obj/Debug/sql2.pdb new file mode 100644 index 0000000..74eab1c Binary files /dev/null and b/sql2/obj/Debug/sql2.pdb differ diff --git a/sql2/obj/Release/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs b/sql2/obj/Release/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs new file mode 100644 index 0000000..dcf55de --- /dev/null +++ b/sql2/obj/Release/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = "")] diff --git a/sql2/obj/Release/sql2.csproj.AssemblyReference.cache b/sql2/obj/Release/sql2.csproj.AssemblyReference.cache new file mode 100644 index 0000000..9f80ff2 Binary files /dev/null and b/sql2/obj/Release/sql2.csproj.AssemblyReference.cache differ diff --git a/sql2/paymentLogs.csproj b/sql2/paymentLogs.csproj new file mode 100644 index 0000000..72f064b --- /dev/null +++ b/sql2/paymentLogs.csproj @@ -0,0 +1,133 @@ + + + + + Debug + AnyCPU + {20A35319-9577-418B-BF43-512CDB3AD0EF} + WinExe + PaymentLogs + PaymentLogs + v4.7.2 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + False + C:\Program Files (x86)\MySQL\MySQL Connector NET 8.4\MySql.Data.dll + + + + + + + + + + + + + + + + + + + + + Form + + + DataForm.cs + + + Form + + + LoginForm.cs + + + Form + + + RegisterForm.cs + + + + + + + + + + + True + True + Отчет_оплаты_обучения_обучающихсяDataSet.xsd + + + DataForm.cs + + + LoginForm.cs + + + RegisterForm.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + Отчет_оплаты_обучения_обучающихсяDataSet.xsd + + + MSDataSetGenerator + Отчет_оплаты_обучения_обучающихсяDataSet.Designer.cs + Designer + + + Отчет_оплаты_обучения_обучающихсяDataSet.xsd + + + + + + + \ No newline at end of file diff --git a/sql2/Отчет_оплаты_обучения_обучающихсяDataSet.Designer.cs b/sql2/Отчет_оплаты_обучения_обучающихсяDataSet.Designer.cs new file mode 100644 index 0000000..19debcc --- /dev/null +++ b/sql2/Отчет_оплаты_обучения_обучающихсяDataSet.Designer.cs @@ -0,0 +1,4291 @@ +//------------------------------------------------------------------------------ +// +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. +// +//------------------------------------------------------------------------------ + +#pragma warning disable 1591 + +namespace PaymentLogs { + + + /// + ///Represents a strongly typed in-memory cache of data. + /// + [global::System.Serializable()] + [global::System.ComponentModel.DesignerCategoryAttribute("code")] + [global::System.ComponentModel.ToolboxItem(true)] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedDataSetSchema")] + [global::System.Xml.Serialization.XmlRootAttribute("Отчет_оплаты_обучения_обучающихсяDataSet")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.DataSet")] + public partial class Отчет_оплаты_обучения_обучающихсяDataSet : global::System.Data.DataSet { + + private для_визулDataTable tableдля_визул; + + private КурсыDataTable tableКурсы; + + private СтудентыDataTable tableСтуденты; + + private ФинансыDataTable tableФинансы; + + private global::System.Data.SchemaSerializationMode _schemaSerializationMode = global::System.Data.SchemaSerializationMode.IncludeSchema; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public Отчет_оплаты_обучения_обучающихсяDataSet() { + this.BeginInit(); + this.InitClass(); + global::System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler = new global::System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged); + base.Tables.CollectionChanged += schemaChangedHandler; + base.Relations.CollectionChanged += schemaChangedHandler; + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected Отчет_оплаты_обучения_обучающихсяDataSet(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context, false) { + if ((this.IsBinarySerialized(info, context) == true)) { + this.InitVars(false); + global::System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler1 = new global::System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged); + this.Tables.CollectionChanged += schemaChangedHandler1; + this.Relations.CollectionChanged += schemaChangedHandler1; + return; + } + string strSchema = ((string)(info.GetValue("XmlSchema", typeof(string)))); + if ((this.DetermineSchemaSerializationMode(info, context) == global::System.Data.SchemaSerializationMode.IncludeSchema)) { + global::System.Data.DataSet ds = new global::System.Data.DataSet(); + ds.ReadXmlSchema(new global::System.Xml.XmlTextReader(new global::System.IO.StringReader(strSchema))); + if ((ds.Tables["для визул"] != null)) { + base.Tables.Add(new для_визулDataTable(ds.Tables["для визул"])); + } + if ((ds.Tables["Курсы"] != null)) { + base.Tables.Add(new КурсыDataTable(ds.Tables["Курсы"])); + } + if ((ds.Tables["Студенты"] != null)) { + base.Tables.Add(new СтудентыDataTable(ds.Tables["Студенты"])); + } + if ((ds.Tables["Финансы"] != null)) { + base.Tables.Add(new ФинансыDataTable(ds.Tables["Финансы"])); + } + this.DataSetName = ds.DataSetName; + this.Prefix = ds.Prefix; + this.Namespace = ds.Namespace; + this.Locale = ds.Locale; + this.CaseSensitive = ds.CaseSensitive; + this.EnforceConstraints = ds.EnforceConstraints; + this.Merge(ds, false, global::System.Data.MissingSchemaAction.Add); + this.InitVars(); + } + else { + this.ReadXmlSchema(new global::System.Xml.XmlTextReader(new global::System.IO.StringReader(strSchema))); + } + this.GetSerializationData(info, context); + global::System.ComponentModel.CollectionChangeEventHandler schemaChangedHandler = new global::System.ComponentModel.CollectionChangeEventHandler(this.SchemaChanged); + base.Tables.CollectionChanged += schemaChangedHandler; + this.Relations.CollectionChanged += schemaChangedHandler; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public для_визулDataTable для_визул { + get { + return this.tableдля_визул; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public КурсыDataTable Курсы { + get { + return this.tableКурсы; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public СтудентыDataTable Студенты { + get { + return this.tableСтуденты; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + [global::System.ComponentModel.DesignerSerializationVisibility(global::System.ComponentModel.DesignerSerializationVisibility.Content)] + public ФинансыDataTable Финансы { + get { + return this.tableФинансы; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.BrowsableAttribute(true)] + [global::System.ComponentModel.DesignerSerializationVisibilityAttribute(global::System.ComponentModel.DesignerSerializationVisibility.Visible)] + public override global::System.Data.SchemaSerializationMode SchemaSerializationMode { + get { + return this._schemaSerializationMode; + } + set { + this._schemaSerializationMode = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.DesignerSerializationVisibilityAttribute(global::System.ComponentModel.DesignerSerializationVisibility.Hidden)] + public new global::System.Data.DataTableCollection Tables { + get { + return base.Tables; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.DesignerSerializationVisibilityAttribute(global::System.ComponentModel.DesignerSerializationVisibility.Hidden)] + public new global::System.Data.DataRelationCollection Relations { + get { + return base.Relations; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void InitializeDerivedDataSet() { + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataSet Clone() { + Отчет_оплаты_обучения_обучающихсяDataSet cln = ((Отчет_оплаты_обучения_обучающихсяDataSet)(base.Clone())); + cln.InitVars(); + cln.SchemaSerializationMode = this.SchemaSerializationMode; + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override bool ShouldSerializeTables() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override bool ShouldSerializeRelations() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void ReadXmlSerializable(global::System.Xml.XmlReader reader) { + if ((this.DetermineSchemaSerializationMode(reader) == global::System.Data.SchemaSerializationMode.IncludeSchema)) { + this.Reset(); + global::System.Data.DataSet ds = new global::System.Data.DataSet(); + ds.ReadXml(reader); + if ((ds.Tables["для визул"] != null)) { + base.Tables.Add(new для_визулDataTable(ds.Tables["для визул"])); + } + if ((ds.Tables["Курсы"] != null)) { + base.Tables.Add(new КурсыDataTable(ds.Tables["Курсы"])); + } + if ((ds.Tables["Студенты"] != null)) { + base.Tables.Add(new СтудентыDataTable(ds.Tables["Студенты"])); + } + if ((ds.Tables["Финансы"] != null)) { + base.Tables.Add(new ФинансыDataTable(ds.Tables["Финансы"])); + } + this.DataSetName = ds.DataSetName; + this.Prefix = ds.Prefix; + this.Namespace = ds.Namespace; + this.Locale = ds.Locale; + this.CaseSensitive = ds.CaseSensitive; + this.EnforceConstraints = ds.EnforceConstraints; + this.Merge(ds, false, global::System.Data.MissingSchemaAction.Add); + this.InitVars(); + } + else { + this.ReadXml(reader); + this.InitVars(); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Xml.Schema.XmlSchema GetSchemaSerializable() { + global::System.IO.MemoryStream stream = new global::System.IO.MemoryStream(); + this.WriteXmlSchema(new global::System.Xml.XmlTextWriter(stream, null)); + stream.Position = 0; + return global::System.Xml.Schema.XmlSchema.Read(new global::System.Xml.XmlTextReader(stream), null); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.InitVars(true); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars(bool initTable) { + this.tableдля_визул = ((для_визулDataTable)(base.Tables["для визул"])); + if ((initTable == true)) { + if ((this.tableдля_визул != null)) { + this.tableдля_визул.InitVars(); + } + } + this.tableКурсы = ((КурсыDataTable)(base.Tables["Курсы"])); + if ((initTable == true)) { + if ((this.tableКурсы != null)) { + this.tableКурсы.InitVars(); + } + } + this.tableСтуденты = ((СтудентыDataTable)(base.Tables["Студенты"])); + if ((initTable == true)) { + if ((this.tableСтуденты != null)) { + this.tableСтуденты.InitVars(); + } + } + this.tableФинансы = ((ФинансыDataTable)(base.Tables["Финансы"])); + if ((initTable == true)) { + if ((this.tableФинансы != null)) { + this.tableФинансы.InitVars(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.DataSetName = "Отчет_оплаты_обучения_обучающихсяDataSet"; + this.Prefix = ""; + this.Namespace = "http://tempuri.org/Отчет_оплаты_обучения_обучающихсяDataSet.xsd"; + this.EnforceConstraints = true; + this.SchemaSerializationMode = global::System.Data.SchemaSerializationMode.IncludeSchema; + this.tableдля_визул = new для_визулDataTable(); + base.Tables.Add(this.tableдля_визул); + this.tableКурсы = new КурсыDataTable(); + base.Tables.Add(this.tableКурсы); + this.tableСтуденты = new СтудентыDataTable(); + base.Tables.Add(this.tableСтуденты); + this.tableФинансы = new ФинансыDataTable(); + base.Tables.Add(this.tableФинансы); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private bool ShouldSerializeдля_визул() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private bool ShouldSerializeКурсы() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private bool ShouldSerializeСтуденты() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private bool ShouldSerializeФинансы() { + return false; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void SchemaChanged(object sender, global::System.ComponentModel.CollectionChangeEventArgs e) { + if ((e.Action == global::System.ComponentModel.CollectionChangeAction.Remove)) { + this.InitVars(); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedDataSetSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + Отчет_оплаты_обучения_обучающихсяDataSet ds = new Отчет_оплаты_обучения_обучающихсяDataSet(); + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + global::System.Xml.Schema.XmlSchemaAny any = new global::System.Xml.Schema.XmlSchemaAny(); + any.Namespace = ds.Namespace; + sequence.Items.Add(any); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public delegate void для_визулRowChangeEventHandler(object sender, для_визулRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public delegate void КурсыRowChangeEventHandler(object sender, КурсыRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public delegate void СтудентыRowChangeEventHandler(object sender, СтудентыRowChangeEvent e); + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public delegate void ФинансыRowChangeEventHandler(object sender, ФинансыRowChangeEvent e); + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class для_визулDataTable : global::System.Data.TypedTableBase<для_визулRow> { + + private global::System.Data.DataColumn columnid; + + private global::System.Data.DataColumn columnФИО; + + private global::System.Data.DataColumn columnНаименование_курсов; + + private global::System.Data.DataColumn columnСтоимость_обучения; + + private global::System.Data.DataColumn columnОплачено; + + private global::System.Data.DataColumn columnДолг; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public для_визулDataTable() { + this.TableName = "для визул"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal для_визулDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected для_визулDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn idColumn { + get { + return this.columnid; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ФИОColumn { + get { + return this.columnФИО; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn Наименование_курсовColumn { + get { + return this.columnНаименование_курсов; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn Стоимость_обученияColumn { + get { + return this.columnСтоимость_обучения; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ОплаченоColumn { + get { + return this.columnОплачено; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ДолгColumn { + get { + return this.columnДолг; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public для_визулRow this[int index] { + get { + return ((для_визулRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event для_визулRowChangeEventHandler для_визулRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event для_визулRowChangeEventHandler для_визулRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event для_визулRowChangeEventHandler для_визулRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event для_визулRowChangeEventHandler для_визулRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void Addдля_визулRow(для_визулRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public для_визулRow Addдля_визулRow(string id, string ФИО, string Наименование_курсов, string Стоимость_обучения, string Оплачено, string Долг) { + для_визулRow rowдля_визулRow = ((для_визулRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + id, + ФИО, + Наименование_курсов, + Стоимость_обучения, + Оплачено, + Долг}; + rowдля_визулRow.ItemArray = columnValuesArray; + this.Rows.Add(rowдля_визулRow); + return rowдля_визулRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataTable Clone() { + для_визулDataTable cln = ((для_визулDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new для_визулDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.columnid = base.Columns["id"]; + this.columnФИО = base.Columns["ФИО"]; + this.columnНаименование_курсов = base.Columns["Наименование курсов"]; + this.columnСтоимость_обучения = base.Columns["Стоимость обучения"]; + this.columnОплачено = base.Columns["Оплачено"]; + this.columnДолг = base.Columns["Долг"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.columnid = new global::System.Data.DataColumn("id", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnid); + this.columnФИО = new global::System.Data.DataColumn("ФИО", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnФИО); + this.columnНаименование_курсов = new global::System.Data.DataColumn("Наименование курсов", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnНаименование_курсов); + this.columnСтоимость_обучения = new global::System.Data.DataColumn("Стоимость обучения", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnСтоимость_обучения); + this.columnОплачено = new global::System.Data.DataColumn("Оплачено", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnОплачено); + this.columnДолг = new global::System.Data.DataColumn("Долг", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnДолг); + this.columnid.MaxLength = 10; + this.columnФИО.MaxLength = 10; + this.columnНаименование_курсов.MaxLength = 10; + this.columnСтоимость_обучения.MaxLength = 10; + this.columnОплачено.MaxLength = 10; + this.columnДолг.MaxLength = 10; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public для_визулRow Newдля_визулRow() { + return ((для_визулRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new для_визулRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(для_визулRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.для_визулRowChanged != null)) { + this.для_визулRowChanged(this, new для_визулRowChangeEvent(((для_визулRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.для_визулRowChanging != null)) { + this.для_визулRowChanging(this, new для_визулRowChangeEvent(((для_визулRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.для_визулRowDeleted != null)) { + this.для_визулRowDeleted(this, new для_визулRowChangeEvent(((для_визулRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.для_визулRowDeleting != null)) { + this.для_визулRowDeleting(this, new для_визулRowChangeEvent(((для_визулRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void Removeдля_визулRow(для_визулRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + Отчет_оплаты_обучения_обучающихсяDataSet ds = new Отчет_оплаты_обучения_обучающихсяDataSet(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "для_визулDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class КурсыDataTable : global::System.Data.TypedTableBase<КурсыRow> { + + private global::System.Data.DataColumn columnid; + + private global::System.Data.DataColumn columnНаименование_курсов; + + private global::System.Data.DataColumn columnВид_обучения; + + private global::System.Data.DataColumn columnСтоимость_обучения; + + private global::System.Data.DataColumn columnСрок_обучения_в_часах; + + private global::System.Data.DataColumn columnКоличество_обучающихся; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public КурсыDataTable() { + this.TableName = "Курсы"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal КурсыDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected КурсыDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn idColumn { + get { + return this.columnid; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn Наименование_курсовColumn { + get { + return this.columnНаименование_курсов; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn Вид_обученияColumn { + get { + return this.columnВид_обучения; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn Стоимость_обученияColumn { + get { + return this.columnСтоимость_обучения; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn Срок_обучения_в_часахColumn { + get { + return this.columnСрок_обучения_в_часах; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn Количество_обучающихсяColumn { + get { + return this.columnКоличество_обучающихся; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public КурсыRow this[int index] { + get { + return ((КурсыRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event КурсыRowChangeEventHandler КурсыRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event КурсыRowChangeEventHandler КурсыRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event КурсыRowChangeEventHandler КурсыRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event КурсыRowChangeEventHandler КурсыRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void AddКурсыRow(КурсыRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public КурсыRow AddКурсыRow(string Наименование_курсов, string Вид_обучения, decimal Стоимость_обучения, int Срок_обучения_в_часах, int Количество_обучающихся) { + КурсыRow rowКурсыRow = ((КурсыRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + null, + Наименование_курсов, + Вид_обучения, + Стоимость_обучения, + Срок_обучения_в_часах, + Количество_обучающихся}; + rowКурсыRow.ItemArray = columnValuesArray; + this.Rows.Add(rowКурсыRow); + return rowКурсыRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public КурсыRow FindByid(long id) { + return ((КурсыRow)(this.Rows.Find(new object[] { + id}))); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataTable Clone() { + КурсыDataTable cln = ((КурсыDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new КурсыDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.columnid = base.Columns["id"]; + this.columnНаименование_курсов = base.Columns["Наименование курсов"]; + this.columnВид_обучения = base.Columns["Вид обучения"]; + this.columnСтоимость_обучения = base.Columns["Стоимость обучения"]; + this.columnСрок_обучения_в_часах = base.Columns["Срок обучения в часах"]; + this.columnКоличество_обучающихся = base.Columns["Количество обучающихся"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.columnid = new global::System.Data.DataColumn("id", typeof(long), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnid); + this.columnНаименование_курсов = new global::System.Data.DataColumn("Наименование курсов", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnНаименование_курсов); + this.columnВид_обучения = new global::System.Data.DataColumn("Вид обучения", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnВид_обучения); + this.columnСтоимость_обучения = new global::System.Data.DataColumn("Стоимость обучения", typeof(decimal), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnСтоимость_обучения); + this.columnСрок_обучения_в_часах = new global::System.Data.DataColumn("Срок обучения в часах", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnСрок_обучения_в_часах); + this.columnКоличество_обучающихся = new global::System.Data.DataColumn("Количество обучающихся", typeof(int), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnКоличество_обучающихся); + this.Constraints.Add(new global::System.Data.UniqueConstraint("Constraint1", new global::System.Data.DataColumn[] { + this.columnid}, true)); + this.columnid.AutoIncrement = true; + this.columnid.AutoIncrementSeed = -1; + this.columnid.AutoIncrementStep = -1; + this.columnid.AllowDBNull = false; + this.columnid.ReadOnly = true; + this.columnid.Unique = true; + this.columnНаименование_курсов.MaxLength = 2147483647; + this.columnВид_обучения.MaxLength = 50; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public КурсыRow NewКурсыRow() { + return ((КурсыRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new КурсыRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(КурсыRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.КурсыRowChanged != null)) { + this.КурсыRowChanged(this, new КурсыRowChangeEvent(((КурсыRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.КурсыRowChanging != null)) { + this.КурсыRowChanging(this, new КурсыRowChangeEvent(((КурсыRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.КурсыRowDeleted != null)) { + this.КурсыRowDeleted(this, new КурсыRowChangeEvent(((КурсыRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.КурсыRowDeleting != null)) { + this.КурсыRowDeleting(this, new КурсыRowChangeEvent(((КурсыRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void RemoveКурсыRow(КурсыRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + Отчет_оплаты_обучения_обучающихсяDataSet ds = new Отчет_оплаты_обучения_обучающихсяDataSet(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "КурсыDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class СтудентыDataTable : global::System.Data.TypedTableBase<СтудентыRow> { + + private global::System.Data.DataColumn columnID; + + private global::System.Data.DataColumn columnФИО; + + private global::System.Data.DataColumn columnДата_рождения; + + private global::System.Data.DataColumn columnМесто_проживания; + + private global::System.Data.DataColumn columnНаименование_курсов; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public СтудентыDataTable() { + this.TableName = "Студенты"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal СтудентыDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected СтудентыDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn IDColumn { + get { + return this.columnID; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ФИОColumn { + get { + return this.columnФИО; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn Дата_рожденияColumn { + get { + return this.columnДата_рождения; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn Место_проживанияColumn { + get { + return this.columnМесто_проживания; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn Наименование_курсовColumn { + get { + return this.columnНаименование_курсов; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public СтудентыRow this[int index] { + get { + return ((СтудентыRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event СтудентыRowChangeEventHandler СтудентыRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event СтудентыRowChangeEventHandler СтудентыRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event СтудентыRowChangeEventHandler СтудентыRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event СтудентыRowChangeEventHandler СтудентыRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void AddСтудентыRow(СтудентыRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public СтудентыRow AddСтудентыRow(long ID, string ФИО, System.DateTime Дата_рождения, string Место_проживания, string Наименование_курсов) { + СтудентыRow rowСтудентыRow = ((СтудентыRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + ID, + ФИО, + Дата_рождения, + Место_проживания, + Наименование_курсов}; + rowСтудентыRow.ItemArray = columnValuesArray; + this.Rows.Add(rowСтудентыRow); + return rowСтудентыRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataTable Clone() { + СтудентыDataTable cln = ((СтудентыDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new СтудентыDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.columnID = base.Columns["ID"]; + this.columnФИО = base.Columns["ФИО"]; + this.columnДата_рождения = base.Columns["Дата рождения"]; + this.columnМесто_проживания = base.Columns["Место проживания"]; + this.columnНаименование_курсов = base.Columns["Наименование курсов"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.columnID = new global::System.Data.DataColumn("ID", typeof(long), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnID); + this.columnФИО = new global::System.Data.DataColumn("ФИО", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnФИО); + this.columnДата_рождения = new global::System.Data.DataColumn("Дата рождения", typeof(global::System.DateTime), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnДата_рождения); + this.columnМесто_проживания = new global::System.Data.DataColumn("Место проживания", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnМесто_проживания); + this.columnНаименование_курсов = new global::System.Data.DataColumn("Наименование курсов", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnНаименование_курсов); + this.columnID.AllowDBNull = false; + this.columnФИО.MaxLength = 2147483647; + this.columnМесто_проживания.MaxLength = 2147483647; + this.columnНаименование_курсов.MaxLength = 2147483647; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public СтудентыRow NewСтудентыRow() { + return ((СтудентыRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new СтудентыRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(СтудентыRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.СтудентыRowChanged != null)) { + this.СтудентыRowChanged(this, new СтудентыRowChangeEvent(((СтудентыRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.СтудентыRowChanging != null)) { + this.СтудентыRowChanging(this, new СтудентыRowChangeEvent(((СтудентыRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.СтудентыRowDeleted != null)) { + this.СтудентыRowDeleted(this, new СтудентыRowChangeEvent(((СтудентыRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.СтудентыRowDeleting != null)) { + this.СтудентыRowDeleting(this, new СтудентыRowChangeEvent(((СтудентыRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void RemoveСтудентыRow(СтудентыRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + Отчет_оплаты_обучения_обучающихсяDataSet ds = new Отчет_оплаты_обучения_обучающихсяDataSet(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "СтудентыDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents the strongly named DataTable class. + /// + [global::System.Serializable()] + [global::System.Xml.Serialization.XmlSchemaProviderAttribute("GetTypedTableSchema")] + public partial class ФинансыDataTable : global::System.Data.TypedTableBase<ФинансыRow> { + + private global::System.Data.DataColumn columnФИО; + + private global::System.Data.DataColumn columnНаименование_курсов; + + private global::System.Data.DataColumn columnСтоимость_обучения; + + private global::System.Data.DataColumn columnОплачено; + + private global::System.Data.DataColumn columnДолг; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public ФинансыDataTable() { + this.TableName = "Финансы"; + this.BeginInit(); + this.InitClass(); + this.EndInit(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal ФинансыDataTable(global::System.Data.DataTable table) { + this.TableName = table.TableName; + if ((table.CaseSensitive != table.DataSet.CaseSensitive)) { + this.CaseSensitive = table.CaseSensitive; + } + if ((table.Locale.ToString() != table.DataSet.Locale.ToString())) { + this.Locale = table.Locale; + } + if ((table.Namespace != table.DataSet.Namespace)) { + this.Namespace = table.Namespace; + } + this.Prefix = table.Prefix; + this.MinimumCapacity = table.MinimumCapacity; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected ФинансыDataTable(global::System.Runtime.Serialization.SerializationInfo info, global::System.Runtime.Serialization.StreamingContext context) : + base(info, context) { + this.InitVars(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ФИОColumn { + get { + return this.columnФИО; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn Наименование_курсовColumn { + get { + return this.columnНаименование_курсов; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn Стоимость_обученияColumn { + get { + return this.columnСтоимость_обучения; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ОплаченоColumn { + get { + return this.columnОплачено; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataColumn ДолгColumn { + get { + return this.columnДолг; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int Count { + get { + return this.Rows.Count; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public ФинансыRow this[int index] { + get { + return ((ФинансыRow)(this.Rows[index])); + } + } + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event ФинансыRowChangeEventHandler ФинансыRowChanging; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event ФинансыRowChangeEventHandler ФинансыRowChanged; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event ФинансыRowChangeEventHandler ФинансыRowDeleting; + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public event ФинансыRowChangeEventHandler ФинансыRowDeleted; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void AddФинансыRow(ФинансыRow row) { + this.Rows.Add(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public ФинансыRow AddФинансыRow(long ФИО, string Наименование_курсов, decimal Стоимость_обучения, decimal Оплачено, decimal Долг) { + ФинансыRow rowФинансыRow = ((ФинансыRow)(this.NewRow())); + object[] columnValuesArray = new object[] { + ФИО, + Наименование_курсов, + Стоимость_обучения, + Оплачено, + Долг}; + rowФинансыRow.ItemArray = columnValuesArray; + this.Rows.Add(rowФинансыRow); + return rowФинансыRow; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public override global::System.Data.DataTable Clone() { + ФинансыDataTable cln = ((ФинансыDataTable)(base.Clone())); + cln.InitVars(); + return cln; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataTable CreateInstance() { + return new ФинансыDataTable(); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal void InitVars() { + this.columnФИО = base.Columns["ФИО"]; + this.columnНаименование_курсов = base.Columns["Наименование курсов"]; + this.columnСтоимость_обучения = base.Columns["Стоимость обучения"]; + this.columnОплачено = base.Columns["Оплачено"]; + this.columnДолг = base.Columns["Долг"]; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitClass() { + this.columnФИО = new global::System.Data.DataColumn("ФИО", typeof(long), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnФИО); + this.columnНаименование_курсов = new global::System.Data.DataColumn("Наименование курсов", typeof(string), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnНаименование_курсов); + this.columnСтоимость_обучения = new global::System.Data.DataColumn("Стоимость обучения", typeof(decimal), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnСтоимость_обучения); + this.columnОплачено = new global::System.Data.DataColumn("Оплачено", typeof(decimal), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnОплачено); + this.columnДолг = new global::System.Data.DataColumn("Долг", typeof(decimal), null, global::System.Data.MappingType.Element); + base.Columns.Add(this.columnДолг); + this.columnНаименование_курсов.MaxLength = 2147483647; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public ФинансыRow NewФинансыRow() { + return ((ФинансыRow)(this.NewRow())); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Data.DataRow NewRowFromBuilder(global::System.Data.DataRowBuilder builder) { + return new ФинансыRow(builder); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override global::System.Type GetRowType() { + return typeof(ФинансыRow); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanged(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanged(e); + if ((this.ФинансыRowChanged != null)) { + this.ФинансыRowChanged(this, new ФинансыRowChangeEvent(((ФинансыRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowChanging(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowChanging(e); + if ((this.ФинансыRowChanging != null)) { + this.ФинансыRowChanging(this, new ФинансыRowChangeEvent(((ФинансыRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleted(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleted(e); + if ((this.ФинансыRowDeleted != null)) { + this.ФинансыRowDeleted(this, new ФинансыRowChangeEvent(((ФинансыRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected override void OnRowDeleting(global::System.Data.DataRowChangeEventArgs e) { + base.OnRowDeleting(e); + if ((this.ФинансыRowDeleting != null)) { + this.ФинансыRowDeleting(this, new ФинансыRowChangeEvent(((ФинансыRow)(e.Row)), e.Action)); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void RemoveФинансыRow(ФинансыRow row) { + this.Rows.Remove(row); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public static global::System.Xml.Schema.XmlSchemaComplexType GetTypedTableSchema(global::System.Xml.Schema.XmlSchemaSet xs) { + global::System.Xml.Schema.XmlSchemaComplexType type = new global::System.Xml.Schema.XmlSchemaComplexType(); + global::System.Xml.Schema.XmlSchemaSequence sequence = new global::System.Xml.Schema.XmlSchemaSequence(); + Отчет_оплаты_обучения_обучающихсяDataSet ds = new Отчет_оплаты_обучения_обучающихсяDataSet(); + global::System.Xml.Schema.XmlSchemaAny any1 = new global::System.Xml.Schema.XmlSchemaAny(); + any1.Namespace = "http://www.w3.org/2001/XMLSchema"; + any1.MinOccurs = new decimal(0); + any1.MaxOccurs = decimal.MaxValue; + any1.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any1); + global::System.Xml.Schema.XmlSchemaAny any2 = new global::System.Xml.Schema.XmlSchemaAny(); + any2.Namespace = "urn:schemas-microsoft-com:xml-diffgram-v1"; + any2.MinOccurs = new decimal(1); + any2.ProcessContents = global::System.Xml.Schema.XmlSchemaContentProcessing.Lax; + sequence.Items.Add(any2); + global::System.Xml.Schema.XmlSchemaAttribute attribute1 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute1.Name = "namespace"; + attribute1.FixedValue = ds.Namespace; + type.Attributes.Add(attribute1); + global::System.Xml.Schema.XmlSchemaAttribute attribute2 = new global::System.Xml.Schema.XmlSchemaAttribute(); + attribute2.Name = "tableTypeName"; + attribute2.FixedValue = "ФинансыDataTable"; + type.Attributes.Add(attribute2); + type.Particle = sequence; + global::System.Xml.Schema.XmlSchema dsSchema = ds.GetSchemaSerializable(); + if (xs.Contains(dsSchema.TargetNamespace)) { + global::System.IO.MemoryStream s1 = new global::System.IO.MemoryStream(); + global::System.IO.MemoryStream s2 = new global::System.IO.MemoryStream(); + try { + global::System.Xml.Schema.XmlSchema schema = null; + dsSchema.Write(s1); + for (global::System.Collections.IEnumerator schemas = xs.Schemas(dsSchema.TargetNamespace).GetEnumerator(); schemas.MoveNext(); ) { + schema = ((global::System.Xml.Schema.XmlSchema)(schemas.Current)); + s2.SetLength(0); + schema.Write(s2); + if ((s1.Length == s2.Length)) { + s1.Position = 0; + s2.Position = 0; + for (; ((s1.Position != s1.Length) + && (s1.ReadByte() == s2.ReadByte())); ) { + ; + } + if ((s1.Position == s1.Length)) { + return type; + } + } + } + } + finally { + if ((s1 != null)) { + s1.Close(); + } + if ((s2 != null)) { + s2.Close(); + } + } + } + xs.Add(dsSchema); + return type; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class для_визулRow : global::System.Data.DataRow { + + private для_визулDataTable tableдля_визул; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal для_визулRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableдля_визул = ((для_визулDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string id { + get { + try { + return ((string)(this[this.tableдля_визул.idColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("Значение для столбца \'id\' в таблице \'для визул\' равно DBNull.", e); + } + } + set { + this[this.tableдля_визул.idColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string ФИО { + get { + try { + return ((string)(this[this.tableдля_визул.ФИОColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("Значение для столбца \'ФИО\' в таблице \'для визул\' равно DBNull.", e); + } + } + set { + this[this.tableдля_визул.ФИОColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string Наименование_курсов { + get { + try { + return ((string)(this[this.tableдля_визул.Наименование_курсовColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("Значение для столбца \'Наименование курсов\' в таблице \'для визул\' равно DBNull.", e); + } + } + set { + this[this.tableдля_визул.Наименование_курсовColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string Стоимость_обучения { + get { + try { + return ((string)(this[this.tableдля_визул.Стоимость_обученияColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("Значение для столбца \'Стоимость обучения\' в таблице \'для визул\' равно DBNull.", e); + } + } + set { + this[this.tableдля_визул.Стоимость_обученияColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string Оплачено { + get { + try { + return ((string)(this[this.tableдля_визул.ОплаченоColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("Значение для столбца \'Оплачено\' в таблице \'для визул\' равно DBNull.", e); + } + } + set { + this[this.tableдля_визул.ОплаченоColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string Долг { + get { + try { + return ((string)(this[this.tableдля_визул.ДолгColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("Значение для столбца \'Долг\' в таблице \'для визул\' равно DBNull.", e); + } + } + set { + this[this.tableдля_визул.ДолгColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsidNull() { + return this.IsNull(this.tableдля_визул.idColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetidNull() { + this[this.tableдля_визул.idColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsФИОNull() { + return this.IsNull(this.tableдля_визул.ФИОColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetФИОNull() { + this[this.tableдля_визул.ФИОColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsНаименование_курсовNull() { + return this.IsNull(this.tableдля_визул.Наименование_курсовColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetНаименование_курсовNull() { + this[this.tableдля_визул.Наименование_курсовColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsСтоимость_обученияNull() { + return this.IsNull(this.tableдля_визул.Стоимость_обученияColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetСтоимость_обученияNull() { + this[this.tableдля_визул.Стоимость_обученияColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsОплаченоNull() { + return this.IsNull(this.tableдля_визул.ОплаченоColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetОплаченоNull() { + this[this.tableдля_визул.ОплаченоColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsДолгNull() { + return this.IsNull(this.tableдля_визул.ДолгColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetДолгNull() { + this[this.tableдля_визул.ДолгColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class КурсыRow : global::System.Data.DataRow { + + private КурсыDataTable tableКурсы; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal КурсыRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableКурсы = ((КурсыDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public long id { + get { + return ((long)(this[this.tableКурсы.idColumn])); + } + set { + this[this.tableКурсы.idColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string Наименование_курсов { + get { + try { + return ((string)(this[this.tableКурсы.Наименование_курсовColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("Значение для столбца \'Наименование курсов\' в таблице \'Курсы\' равно DBNull.", e); + } + } + set { + this[this.tableКурсы.Наименование_курсовColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string Вид_обучения { + get { + try { + return ((string)(this[this.tableКурсы.Вид_обученияColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("Значение для столбца \'Вид обучения\' в таблице \'Курсы\' равно DBNull.", e); + } + } + set { + this[this.tableКурсы.Вид_обученияColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public decimal Стоимость_обучения { + get { + try { + return ((decimal)(this[this.tableКурсы.Стоимость_обученияColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("Значение для столбца \'Стоимость обучения\' в таблице \'Курсы\' равно DBNull.", e); + } + } + set { + this[this.tableКурсы.Стоимость_обученияColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int Срок_обучения_в_часах { + get { + try { + return ((int)(this[this.tableКурсы.Срок_обучения_в_часахColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("Значение для столбца \'Срок обучения в часах\' в таблице \'Курсы\' равно DBNull.", e); + } + } + set { + this[this.tableКурсы.Срок_обучения_в_часахColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int Количество_обучающихся { + get { + try { + return ((int)(this[this.tableКурсы.Количество_обучающихсяColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("Значение для столбца \'Количество обучающихся\' в таблице \'Курсы\' равно DBNull.", e); + } + } + set { + this[this.tableКурсы.Количество_обучающихсяColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsНаименование_курсовNull() { + return this.IsNull(this.tableКурсы.Наименование_курсовColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetНаименование_курсовNull() { + this[this.tableКурсы.Наименование_курсовColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsВид_обученияNull() { + return this.IsNull(this.tableКурсы.Вид_обученияColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetВид_обученияNull() { + this[this.tableКурсы.Вид_обученияColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsСтоимость_обученияNull() { + return this.IsNull(this.tableКурсы.Стоимость_обученияColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetСтоимость_обученияNull() { + this[this.tableКурсы.Стоимость_обученияColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsСрок_обучения_в_часахNull() { + return this.IsNull(this.tableКурсы.Срок_обучения_в_часахColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetСрок_обучения_в_часахNull() { + this[this.tableКурсы.Срок_обучения_в_часахColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsКоличество_обучающихсяNull() { + return this.IsNull(this.tableКурсы.Количество_обучающихсяColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetКоличество_обучающихсяNull() { + this[this.tableКурсы.Количество_обучающихсяColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class СтудентыRow : global::System.Data.DataRow { + + private СтудентыDataTable tableСтуденты; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal СтудентыRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableСтуденты = ((СтудентыDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public long ID { + get { + return ((long)(this[this.tableСтуденты.IDColumn])); + } + set { + this[this.tableСтуденты.IDColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string ФИО { + get { + try { + return ((string)(this[this.tableСтуденты.ФИОColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("Значение для столбца \'ФИО\' в таблице \'Студенты\' равно DBNull.", e); + } + } + set { + this[this.tableСтуденты.ФИОColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public System.DateTime Дата_рождения { + get { + try { + return ((global::System.DateTime)(this[this.tableСтуденты.Дата_рожденияColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("Значение для столбца \'Дата рождения\' в таблице \'Студенты\' равно DBNull.", e); + } + } + set { + this[this.tableСтуденты.Дата_рожденияColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string Место_проживания { + get { + try { + return ((string)(this[this.tableСтуденты.Место_проживанияColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("Значение для столбца \'Место проживания\' в таблице \'Студенты\' равно DBNull.", e); + } + } + set { + this[this.tableСтуденты.Место_проживанияColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string Наименование_курсов { + get { + try { + return ((string)(this[this.tableСтуденты.Наименование_курсовColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("Значение для столбца \'Наименование курсов\' в таблице \'Студенты\' равно DBNull.", e); + } + } + set { + this[this.tableСтуденты.Наименование_курсовColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsФИОNull() { + return this.IsNull(this.tableСтуденты.ФИОColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetФИОNull() { + this[this.tableСтуденты.ФИОColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsДата_рожденияNull() { + return this.IsNull(this.tableСтуденты.Дата_рожденияColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetДата_рожденияNull() { + this[this.tableСтуденты.Дата_рожденияColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsМесто_проживанияNull() { + return this.IsNull(this.tableСтуденты.Место_проживанияColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetМесто_проживанияNull() { + this[this.tableСтуденты.Место_проживанияColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsНаименование_курсовNull() { + return this.IsNull(this.tableСтуденты.Наименование_курсовColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetНаименование_курсовNull() { + this[this.tableСтуденты.Наименование_курсовColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Represents strongly named DataRow class. + /// + public partial class ФинансыRow : global::System.Data.DataRow { + + private ФинансыDataTable tableФинансы; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal ФинансыRow(global::System.Data.DataRowBuilder rb) : + base(rb) { + this.tableФинансы = ((ФинансыDataTable)(this.Table)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public long ФИО { + get { + try { + return ((long)(this[this.tableФинансы.ФИОColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("Значение для столбца \'ФИО\' в таблице \'Финансы\' равно DBNull.", e); + } + } + set { + this[this.tableФинансы.ФИОColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public string Наименование_курсов { + get { + try { + return ((string)(this[this.tableФинансы.Наименование_курсовColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("Значение для столбца \'Наименование курсов\' в таблице \'Финансы\' равно DBNull.", e); + } + } + set { + this[this.tableФинансы.Наименование_курсовColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public decimal Стоимость_обучения { + get { + try { + return ((decimal)(this[this.tableФинансы.Стоимость_обученияColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("Значение для столбца \'Стоимость обучения\' в таблице \'Финансы\' равно DBNull.", e); + } + } + set { + this[this.tableФинансы.Стоимость_обученияColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public decimal Оплачено { + get { + try { + return ((decimal)(this[this.tableФинансы.ОплаченоColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("Значение для столбца \'Оплачено\' в таблице \'Финансы\' равно DBNull.", e); + } + } + set { + this[this.tableФинансы.ОплаченоColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public decimal Долг { + get { + try { + return ((decimal)(this[this.tableФинансы.ДолгColumn])); + } + catch (global::System.InvalidCastException e) { + throw new global::System.Data.StrongTypingException("Значение для столбца \'Долг\' в таблице \'Финансы\' равно DBNull.", e); + } + } + set { + this[this.tableФинансы.ДолгColumn] = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsФИОNull() { + return this.IsNull(this.tableФинансы.ФИОColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetФИОNull() { + this[this.tableФинансы.ФИОColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsНаименование_курсовNull() { + return this.IsNull(this.tableФинансы.Наименование_курсовColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetНаименование_курсовNull() { + this[this.tableФинансы.Наименование_курсовColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsСтоимость_обученияNull() { + return this.IsNull(this.tableФинансы.Стоимость_обученияColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetСтоимость_обученияNull() { + this[this.tableФинансы.Стоимость_обученияColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsОплаченоNull() { + return this.IsNull(this.tableФинансы.ОплаченоColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetОплаченоNull() { + this[this.tableФинансы.ОплаченоColumn] = global::System.Convert.DBNull; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool IsДолгNull() { + return this.IsNull(this.tableФинансы.ДолгColumn); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public void SetДолгNull() { + this[this.tableФинансы.ДолгColumn] = global::System.Convert.DBNull; + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public class для_визулRowChangeEvent : global::System.EventArgs { + + private для_визулRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public для_визулRowChangeEvent(для_визулRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public для_визулRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public class КурсыRowChangeEvent : global::System.EventArgs { + + private КурсыRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public КурсыRowChangeEvent(КурсыRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public КурсыRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public class СтудентыRowChangeEvent : global::System.EventArgs { + + private СтудентыRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public СтудентыRowChangeEvent(СтудентыRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public СтудентыRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + + /// + ///Row event argument class + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public class ФинансыRowChangeEvent : global::System.EventArgs { + + private ФинансыRow eventRow; + + private global::System.Data.DataRowAction eventAction; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public ФинансыRowChangeEvent(ФинансыRow row, global::System.Data.DataRowAction action) { + this.eventRow = row; + this.eventAction = action; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public ФинансыRow Row { + get { + return this.eventRow; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public global::System.Data.DataRowAction Action { + get { + return this.eventAction; + } + } + } + } +} +namespace PaymentLogs.Отчет_оплаты_обучения_обучающихсяDataSetTableAdapters { + + + /// + ///Represents the connection and commands used to retrieve and save data. + /// + [global::System.ComponentModel.DesignerCategoryAttribute("code")] + [global::System.ComponentModel.ToolboxItem(true)] + [global::System.ComponentModel.DataObjectAttribute(true)] + [global::System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterDesigner, Microsoft.VSDesigner" + + ", Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public partial class для_визулTableAdapter : global::System.ComponentModel.Component { + + private global::System.Data.SqlClient.SqlDataAdapter _adapter; + + private global::System.Data.SqlClient.SqlConnection _connection; + + private global::System.Data.SqlClient.SqlTransaction _transaction; + + private global::System.Data.SqlClient.SqlCommand[] _commandCollection; + + private bool _clearBeforeFill; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public для_визулTableAdapter() { + this.ClearBeforeFill = true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected internal global::System.Data.SqlClient.SqlDataAdapter Adapter { + get { + if ((this._adapter == null)) { + this.InitAdapter(); + } + return this._adapter; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal global::System.Data.SqlClient.SqlConnection Connection { + get { + if ((this._connection == null)) { + this.InitConnection(); + } + return this._connection; + } + set { + this._connection = value; + if ((this.Adapter.InsertCommand != null)) { + this.Adapter.InsertCommand.Connection = value; + } + if ((this.Adapter.DeleteCommand != null)) { + this.Adapter.DeleteCommand.Connection = value; + } + if ((this.Adapter.UpdateCommand != null)) { + this.Adapter.UpdateCommand.Connection = value; + } + for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) { + if ((this.CommandCollection[i] != null)) { + ((global::System.Data.SqlClient.SqlCommand)(this.CommandCollection[i])).Connection = value; + } + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal global::System.Data.SqlClient.SqlTransaction Transaction { + get { + return this._transaction; + } + set { + this._transaction = value; + for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) { + this.CommandCollection[i].Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.DeleteCommand != null))) { + this.Adapter.DeleteCommand.Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.InsertCommand != null))) { + this.Adapter.InsertCommand.Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.UpdateCommand != null))) { + this.Adapter.UpdateCommand.Transaction = this._transaction; + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected global::System.Data.SqlClient.SqlCommand[] CommandCollection { + get { + if ((this._commandCollection == null)) { + this.InitCommandCollection(); + } + return this._commandCollection; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool ClearBeforeFill { + get { + return this._clearBeforeFill; + } + set { + this._clearBeforeFill = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitAdapter() { + this._adapter = new global::System.Data.SqlClient.SqlDataAdapter(); + global::System.Data.Common.DataTableMapping tableMapping = new global::System.Data.Common.DataTableMapping(); + tableMapping.SourceTable = "Table"; + tableMapping.DataSetTable = "для визул"; + tableMapping.ColumnMappings.Add("id", "id"); + tableMapping.ColumnMappings.Add("ФИО", "ФИО"); + tableMapping.ColumnMappings.Add("Наименование курсов", "Наименование курсов"); + tableMapping.ColumnMappings.Add("Стоимость обучения", "Стоимость обучения"); + tableMapping.ColumnMappings.Add("Оплачено", "Оплачено"); + tableMapping.ColumnMappings.Add("Долг", "Долг"); + this._adapter.TableMappings.Add(tableMapping); + this._adapter.InsertCommand = new global::System.Data.SqlClient.SqlCommand(); + this._adapter.InsertCommand.Connection = this.Connection; + this._adapter.InsertCommand.CommandText = "INSERT INTO [dbo].[для визул] ([id], [ФИО], [Наименование курсов], [Стоимость обу" + + "чения], [Оплачено], [Долг]) VALUES (@id, @ФИО, @Наименование_курсов, @Стоимость_" + + "обучения, @Оплачено, @Долг)"; + this._adapter.InsertCommand.CommandType = global::System.Data.CommandType.Text; + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@id", global::System.Data.SqlDbType.NChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "id", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@ФИО", global::System.Data.SqlDbType.NChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "ФИО", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Наименование_курсов", global::System.Data.SqlDbType.NChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Наименование курсов", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Стоимость_обучения", global::System.Data.SqlDbType.NChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Стоимость обучения", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Оплачено", global::System.Data.SqlDbType.NChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Оплачено", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Долг", global::System.Data.SqlDbType.NChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Долг", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitConnection() { + this._connection = new global::System.Data.SqlClient.SqlConnection(); + this._connection.ConnectionString = global::PaymentLogs.Properties.Settings.Default.Отчет_оплаты_обучения_обучающихсяConnectionString; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitCommandCollection() { + this._commandCollection = new global::System.Data.SqlClient.SqlCommand[1]; + this._commandCollection[0] = new global::System.Data.SqlClient.SqlCommand(); + this._commandCollection[0].Connection = this.Connection; + this._commandCollection[0].CommandText = "SELECT id, ФИО, [Наименование курсов], [Стоимость обучения], Оплачено, Долг FROM " + + "dbo.[для визул]"; + this._commandCollection[0].CommandType = global::System.Data.CommandType.Text; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, true)] + public virtual int Fill(Отчет_оплаты_обучения_обучающихсяDataSet.для_визулDataTable dataTable) { + this.Adapter.SelectCommand = this.CommandCollection[0]; + if ((this.ClearBeforeFill == true)) { + dataTable.Clear(); + } + int returnValue = this.Adapter.Fill(dataTable); + return returnValue; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, true)] + public virtual Отчет_оплаты_обучения_обучающихсяDataSet.для_визулDataTable GetData() { + this.Adapter.SelectCommand = this.CommandCollection[0]; + Отчет_оплаты_обучения_обучающихсяDataSet.для_визулDataTable dataTable = new Отчет_оплаты_обучения_обучающихсяDataSet.для_визулDataTable(); + this.Adapter.Fill(dataTable); + return dataTable; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(Отчет_оплаты_обучения_обучающихсяDataSet.для_визулDataTable dataTable) { + return this.Adapter.Update(dataTable); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(Отчет_оплаты_обучения_обучающихсяDataSet dataSet) { + return this.Adapter.Update(dataSet, "для визул"); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(global::System.Data.DataRow dataRow) { + return this.Adapter.Update(new global::System.Data.DataRow[] { + dataRow}); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(global::System.Data.DataRow[] dataRows) { + return this.Adapter.Update(dataRows); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Insert, true)] + public virtual int Insert(string id, string ФИО, string Наименование_курсов, string Стоимость_обучения, string Оплачено, string Долг) { + if ((id == null)) { + this.Adapter.InsertCommand.Parameters[0].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[0].Value = ((string)(id)); + } + if ((ФИО == null)) { + this.Adapter.InsertCommand.Parameters[1].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[1].Value = ((string)(ФИО)); + } + if ((Наименование_курсов == null)) { + this.Adapter.InsertCommand.Parameters[2].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[2].Value = ((string)(Наименование_курсов)); + } + if ((Стоимость_обучения == null)) { + this.Adapter.InsertCommand.Parameters[3].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[3].Value = ((string)(Стоимость_обучения)); + } + if ((Оплачено == null)) { + this.Adapter.InsertCommand.Parameters[4].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[4].Value = ((string)(Оплачено)); + } + if ((Долг == null)) { + this.Adapter.InsertCommand.Parameters[5].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[5].Value = ((string)(Долг)); + } + global::System.Data.ConnectionState previousConnectionState = this.Adapter.InsertCommand.Connection.State; + if (((this.Adapter.InsertCommand.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + this.Adapter.InsertCommand.Connection.Open(); + } + try { + int returnValue = this.Adapter.InsertCommand.ExecuteNonQuery(); + return returnValue; + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + this.Adapter.InsertCommand.Connection.Close(); + } + } + } + } + + /// + ///Represents the connection and commands used to retrieve and save data. + /// + [global::System.ComponentModel.DesignerCategoryAttribute("code")] + [global::System.ComponentModel.ToolboxItem(true)] + [global::System.ComponentModel.DataObjectAttribute(true)] + [global::System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterDesigner, Microsoft.VSDesigner" + + ", Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public partial class КурсыTableAdapter : global::System.ComponentModel.Component { + + private global::System.Data.SqlClient.SqlDataAdapter _adapter; + + private global::System.Data.SqlClient.SqlConnection _connection; + + private global::System.Data.SqlClient.SqlTransaction _transaction; + + private global::System.Data.SqlClient.SqlCommand[] _commandCollection; + + private bool _clearBeforeFill; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public КурсыTableAdapter() { + this.ClearBeforeFill = true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected internal global::System.Data.SqlClient.SqlDataAdapter Adapter { + get { + if ((this._adapter == null)) { + this.InitAdapter(); + } + return this._adapter; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal global::System.Data.SqlClient.SqlConnection Connection { + get { + if ((this._connection == null)) { + this.InitConnection(); + } + return this._connection; + } + set { + this._connection = value; + if ((this.Adapter.InsertCommand != null)) { + this.Adapter.InsertCommand.Connection = value; + } + if ((this.Adapter.DeleteCommand != null)) { + this.Adapter.DeleteCommand.Connection = value; + } + if ((this.Adapter.UpdateCommand != null)) { + this.Adapter.UpdateCommand.Connection = value; + } + for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) { + if ((this.CommandCollection[i] != null)) { + ((global::System.Data.SqlClient.SqlCommand)(this.CommandCollection[i])).Connection = value; + } + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal global::System.Data.SqlClient.SqlTransaction Transaction { + get { + return this._transaction; + } + set { + this._transaction = value; + for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) { + this.CommandCollection[i].Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.DeleteCommand != null))) { + this.Adapter.DeleteCommand.Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.InsertCommand != null))) { + this.Adapter.InsertCommand.Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.UpdateCommand != null))) { + this.Adapter.UpdateCommand.Transaction = this._transaction; + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected global::System.Data.SqlClient.SqlCommand[] CommandCollection { + get { + if ((this._commandCollection == null)) { + this.InitCommandCollection(); + } + return this._commandCollection; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool ClearBeforeFill { + get { + return this._clearBeforeFill; + } + set { + this._clearBeforeFill = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitAdapter() { + this._adapter = new global::System.Data.SqlClient.SqlDataAdapter(); + global::System.Data.Common.DataTableMapping tableMapping = new global::System.Data.Common.DataTableMapping(); + tableMapping.SourceTable = "Table"; + tableMapping.DataSetTable = "Курсы"; + tableMapping.ColumnMappings.Add("id", "id"); + tableMapping.ColumnMappings.Add("Наименование курсов", "Наименование курсов"); + tableMapping.ColumnMappings.Add("Вид обучения", "Вид обучения"); + tableMapping.ColumnMappings.Add("Стоимость обучения", "Стоимость обучения"); + tableMapping.ColumnMappings.Add("Срок обучения в часах", "Срок обучения в часах"); + tableMapping.ColumnMappings.Add("Количество обучающихся", "Количество обучающихся"); + this._adapter.TableMappings.Add(tableMapping); + this._adapter.DeleteCommand = new global::System.Data.SqlClient.SqlCommand(); + this._adapter.DeleteCommand.Connection = this.Connection; + this._adapter.DeleteCommand.CommandText = @"DELETE FROM [dbo].[Курсы] WHERE (([id] = @Original_id) AND ((@IsNull_Вид_обучения = 1 AND [Вид обучения] IS NULL) OR ([Вид обучения] = @Original_Вид_обучения)) AND ((@IsNull_Стоимость_обучения = 1 AND [Стоимость обучения] IS NULL) OR ([Стоимость обучения] = @Original_Стоимость_обучения)) AND ((@IsNull_Срок_обучения_в_часах = 1 AND [Срок обучения в часах] IS NULL) OR ([Срок обучения в часах] = @Original_Срок_обучения_в_часах)) AND ((@IsNull_Количество_обучающихся = 1 AND [Количество обучающихся] IS NULL) OR ([Количество обучающихся] = @Original_Количество_обучающихся)))"; + this._adapter.DeleteCommand.CommandType = global::System.Data.CommandType.Text; + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_id", global::System.Data.SqlDbType.BigInt, 0, global::System.Data.ParameterDirection.Input, 0, 0, "id", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Вид_обучения", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Вид обучения", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Вид_обучения", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Вид обучения", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Стоимость_обучения", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Стоимость обучения", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Стоимость_обучения", global::System.Data.SqlDbType.Decimal, 0, global::System.Data.ParameterDirection.Input, 18, 0, "Стоимость обучения", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Срок_обучения_в_часах", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Срок обучения в часах", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Срок_обучения_в_часах", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Срок обучения в часах", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Количество_обучающихся", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Количество обучающихся", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.DeleteCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Количество_обучающихся", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Количество обучающихся", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.InsertCommand = new global::System.Data.SqlClient.SqlCommand(); + this._adapter.InsertCommand.Connection = this.Connection; + this._adapter.InsertCommand.CommandText = @"INSERT INTO [dbo].[Курсы] ([Наименование курсов], [Вид обучения], [Стоимость обучения], [Срок обучения в часах], [Количество обучающихся]) VALUES (@Наименование_курсов, @Вид_обучения, @Стоимость_обучения, @Срок_обучения_в_часах, @Количество_обучающихся); +SELECT id, [Наименование курсов], [Вид обучения], [Стоимость обучения], [Срок обучения в часах], [Количество обучающихся] FROM Курсы WHERE (id = SCOPE_IDENTITY())"; + this._adapter.InsertCommand.CommandType = global::System.Data.CommandType.Text; + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Наименование_курсов", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Наименование курсов", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Вид_обучения", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Вид обучения", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Стоимость_обучения", global::System.Data.SqlDbType.Decimal, 0, global::System.Data.ParameterDirection.Input, 18, 0, "Стоимость обучения", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Срок_обучения_в_часах", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Срок обучения в часах", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Количество_обучающихся", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Количество обучающихся", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand = new global::System.Data.SqlClient.SqlCommand(); + this._adapter.UpdateCommand.Connection = this.Connection; + this._adapter.UpdateCommand.CommandText = @"UPDATE [dbo].[Курсы] SET [Наименование курсов] = @Наименование_курсов, [Вид обучения] = @Вид_обучения, [Стоимость обучения] = @Стоимость_обучения, [Срок обучения в часах] = @Срок_обучения_в_часах, [Количество обучающихся] = @Количество_обучающихся WHERE (([id] = @Original_id) AND ((@IsNull_Вид_обучения = 1 AND [Вид обучения] IS NULL) OR ([Вид обучения] = @Original_Вид_обучения)) AND ((@IsNull_Стоимость_обучения = 1 AND [Стоимость обучения] IS NULL) OR ([Стоимость обучения] = @Original_Стоимость_обучения)) AND ((@IsNull_Срок_обучения_в_часах = 1 AND [Срок обучения в часах] IS NULL) OR ([Срок обучения в часах] = @Original_Срок_обучения_в_часах)) AND ((@IsNull_Количество_обучающихся = 1 AND [Количество обучающихся] IS NULL) OR ([Количество обучающихся] = @Original_Количество_обучающихся))); +SELECT id, [Наименование курсов], [Вид обучения], [Стоимость обучения], [Срок обучения в часах], [Количество обучающихся] FROM Курсы WHERE (id = @id)"; + this._adapter.UpdateCommand.CommandType = global::System.Data.CommandType.Text; + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Наименование_курсов", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Наименование курсов", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Вид_обучения", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Вид обучения", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Стоимость_обучения", global::System.Data.SqlDbType.Decimal, 0, global::System.Data.ParameterDirection.Input, 18, 0, "Стоимость обучения", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Срок_обучения_в_часах", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Срок обучения в часах", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Количество_обучающихся", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Количество обучающихся", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_id", global::System.Data.SqlDbType.BigInt, 0, global::System.Data.ParameterDirection.Input, 0, 0, "id", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Вид_обучения", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Вид обучения", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Вид_обучения", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Вид обучения", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Стоимость_обучения", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Стоимость обучения", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Стоимость_обучения", global::System.Data.SqlDbType.Decimal, 0, global::System.Data.ParameterDirection.Input, 18, 0, "Стоимость обучения", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Срок_обучения_в_часах", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Срок обучения в часах", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Срок_обучения_в_часах", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Срок обучения в часах", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@IsNull_Количество_обучающихся", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Количество обучающихся", global::System.Data.DataRowVersion.Original, true, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Original_Количество_обучающихся", global::System.Data.SqlDbType.Int, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Количество обучающихся", global::System.Data.DataRowVersion.Original, false, null, "", "", "")); + this._adapter.UpdateCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@id", global::System.Data.SqlDbType.BigInt, 8, global::System.Data.ParameterDirection.Input, 0, 0, "id", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitConnection() { + this._connection = new global::System.Data.SqlClient.SqlConnection(); + this._connection.ConnectionString = global::PaymentLogs.Properties.Settings.Default.Отчет_оплаты_обучения_обучающихсяConnectionString; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitCommandCollection() { + this._commandCollection = new global::System.Data.SqlClient.SqlCommand[1]; + this._commandCollection[0] = new global::System.Data.SqlClient.SqlCommand(); + this._commandCollection[0].Connection = this.Connection; + this._commandCollection[0].CommandText = "SELECT id, [Наименование курсов], [Вид обучения], [Стоимость обучения], [Срок обу" + + "чения в часах], [Количество обучающихся] FROM dbo.Курсы"; + this._commandCollection[0].CommandType = global::System.Data.CommandType.Text; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, true)] + public virtual int Fill(Отчет_оплаты_обучения_обучающихсяDataSet.КурсыDataTable dataTable) { + this.Adapter.SelectCommand = this.CommandCollection[0]; + if ((this.ClearBeforeFill == true)) { + dataTable.Clear(); + } + int returnValue = this.Adapter.Fill(dataTable); + return returnValue; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, true)] + public virtual Отчет_оплаты_обучения_обучающихсяDataSet.КурсыDataTable GetData() { + this.Adapter.SelectCommand = this.CommandCollection[0]; + Отчет_оплаты_обучения_обучающихсяDataSet.КурсыDataTable dataTable = new Отчет_оплаты_обучения_обучающихсяDataSet.КурсыDataTable(); + this.Adapter.Fill(dataTable); + return dataTable; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(Отчет_оплаты_обучения_обучающихсяDataSet.КурсыDataTable dataTable) { + return this.Adapter.Update(dataTable); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(Отчет_оплаты_обучения_обучающихсяDataSet dataSet) { + return this.Adapter.Update(dataSet, "Курсы"); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(global::System.Data.DataRow dataRow) { + return this.Adapter.Update(new global::System.Data.DataRow[] { + dataRow}); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(global::System.Data.DataRow[] dataRows) { + return this.Adapter.Update(dataRows); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Delete, true)] + public virtual int Delete(long Original_id, string Original_Вид_обучения, global::System.Nullable Original_Стоимость_обучения, global::System.Nullable Original_Срок_обучения_в_часах, global::System.Nullable Original_Количество_обучающихся) { + this.Adapter.DeleteCommand.Parameters[0].Value = ((long)(Original_id)); + if ((Original_Вид_обучения == null)) { + this.Adapter.DeleteCommand.Parameters[1].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[2].Value = global::System.DBNull.Value; + } + else { + this.Adapter.DeleteCommand.Parameters[1].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[2].Value = ((string)(Original_Вид_обучения)); + } + if ((Original_Стоимость_обучения.HasValue == true)) { + this.Adapter.DeleteCommand.Parameters[3].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[4].Value = ((decimal)(Original_Стоимость_обучения.Value)); + } + else { + this.Adapter.DeleteCommand.Parameters[3].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[4].Value = global::System.DBNull.Value; + } + if ((Original_Срок_обучения_в_часах.HasValue == true)) { + this.Adapter.DeleteCommand.Parameters[5].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[6].Value = ((int)(Original_Срок_обучения_в_часах.Value)); + } + else { + this.Adapter.DeleteCommand.Parameters[5].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[6].Value = global::System.DBNull.Value; + } + if ((Original_Количество_обучающихся.HasValue == true)) { + this.Adapter.DeleteCommand.Parameters[7].Value = ((object)(0)); + this.Adapter.DeleteCommand.Parameters[8].Value = ((int)(Original_Количество_обучающихся.Value)); + } + else { + this.Adapter.DeleteCommand.Parameters[7].Value = ((object)(1)); + this.Adapter.DeleteCommand.Parameters[8].Value = global::System.DBNull.Value; + } + global::System.Data.ConnectionState previousConnectionState = this.Adapter.DeleteCommand.Connection.State; + if (((this.Adapter.DeleteCommand.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + this.Adapter.DeleteCommand.Connection.Open(); + } + try { + int returnValue = this.Adapter.DeleteCommand.ExecuteNonQuery(); + return returnValue; + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + this.Adapter.DeleteCommand.Connection.Close(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Insert, true)] + public virtual int Insert(string Наименование_курсов, string Вид_обучения, global::System.Nullable Стоимость_обучения, global::System.Nullable Срок_обучения_в_часах, global::System.Nullable Количество_обучающихся) { + if ((Наименование_курсов == null)) { + this.Adapter.InsertCommand.Parameters[0].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[0].Value = ((string)(Наименование_курсов)); + } + if ((Вид_обучения == null)) { + this.Adapter.InsertCommand.Parameters[1].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[1].Value = ((string)(Вид_обучения)); + } + if ((Стоимость_обучения.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[2].Value = ((decimal)(Стоимость_обучения.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[2].Value = global::System.DBNull.Value; + } + if ((Срок_обучения_в_часах.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[3].Value = ((int)(Срок_обучения_в_часах.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[3].Value = global::System.DBNull.Value; + } + if ((Количество_обучающихся.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[4].Value = ((int)(Количество_обучающихся.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[4].Value = global::System.DBNull.Value; + } + global::System.Data.ConnectionState previousConnectionState = this.Adapter.InsertCommand.Connection.State; + if (((this.Adapter.InsertCommand.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + this.Adapter.InsertCommand.Connection.Open(); + } + try { + int returnValue = this.Adapter.InsertCommand.ExecuteNonQuery(); + return returnValue; + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + this.Adapter.InsertCommand.Connection.Close(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)] + public virtual int Update(string Наименование_курсов, string Вид_обучения, global::System.Nullable Стоимость_обучения, global::System.Nullable Срок_обучения_в_часах, global::System.Nullable Количество_обучающихся, long Original_id, string Original_Вид_обучения, global::System.Nullable Original_Стоимость_обучения, global::System.Nullable Original_Срок_обучения_в_часах, global::System.Nullable Original_Количество_обучающихся, long id) { + if ((Наименование_курсов == null)) { + this.Adapter.UpdateCommand.Parameters[0].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[0].Value = ((string)(Наименование_курсов)); + } + if ((Вид_обучения == null)) { + this.Adapter.UpdateCommand.Parameters[1].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[1].Value = ((string)(Вид_обучения)); + } + if ((Стоимость_обучения.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[2].Value = ((decimal)(Стоимость_обучения.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[2].Value = global::System.DBNull.Value; + } + if ((Срок_обучения_в_часах.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[3].Value = ((int)(Срок_обучения_в_часах.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[3].Value = global::System.DBNull.Value; + } + if ((Количество_обучающихся.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[4].Value = ((int)(Количество_обучающихся.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[4].Value = global::System.DBNull.Value; + } + this.Adapter.UpdateCommand.Parameters[5].Value = ((long)(Original_id)); + if ((Original_Вид_обучения == null)) { + this.Adapter.UpdateCommand.Parameters[6].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[7].Value = global::System.DBNull.Value; + } + else { + this.Adapter.UpdateCommand.Parameters[6].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[7].Value = ((string)(Original_Вид_обучения)); + } + if ((Original_Стоимость_обучения.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[8].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[9].Value = ((decimal)(Original_Стоимость_обучения.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[8].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[9].Value = global::System.DBNull.Value; + } + if ((Original_Срок_обучения_в_часах.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[10].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[11].Value = ((int)(Original_Срок_обучения_в_часах.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[10].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[11].Value = global::System.DBNull.Value; + } + if ((Original_Количество_обучающихся.HasValue == true)) { + this.Adapter.UpdateCommand.Parameters[12].Value = ((object)(0)); + this.Adapter.UpdateCommand.Parameters[13].Value = ((int)(Original_Количество_обучающихся.Value)); + } + else { + this.Adapter.UpdateCommand.Parameters[12].Value = ((object)(1)); + this.Adapter.UpdateCommand.Parameters[13].Value = global::System.DBNull.Value; + } + this.Adapter.UpdateCommand.Parameters[14].Value = ((long)(id)); + global::System.Data.ConnectionState previousConnectionState = this.Adapter.UpdateCommand.Connection.State; + if (((this.Adapter.UpdateCommand.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + this.Adapter.UpdateCommand.Connection.Open(); + } + try { + int returnValue = this.Adapter.UpdateCommand.ExecuteNonQuery(); + return returnValue; + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + this.Adapter.UpdateCommand.Connection.Close(); + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Update, true)] + public virtual int Update(string Наименование_курсов, string Вид_обучения, global::System.Nullable Стоимость_обучения, global::System.Nullable Срок_обучения_в_часах, global::System.Nullable Количество_обучающихся, long Original_id, string Original_Вид_обучения, global::System.Nullable Original_Стоимость_обучения, global::System.Nullable Original_Срок_обучения_в_часах, global::System.Nullable Original_Количество_обучающихся) { + return this.Update(Наименование_курсов, Вид_обучения, Стоимость_обучения, Срок_обучения_в_часах, Количество_обучающихся, Original_id, Original_Вид_обучения, Original_Стоимость_обучения, Original_Срок_обучения_в_часах, Original_Количество_обучающихся, Original_id); + } + } + + /// + ///Represents the connection and commands used to retrieve and save data. + /// + [global::System.ComponentModel.DesignerCategoryAttribute("code")] + [global::System.ComponentModel.ToolboxItem(true)] + [global::System.ComponentModel.DataObjectAttribute(true)] + [global::System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterDesigner, Microsoft.VSDesigner" + + ", Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public partial class СтудентыTableAdapter : global::System.ComponentModel.Component { + + private global::System.Data.SqlClient.SqlDataAdapter _adapter; + + private global::System.Data.SqlClient.SqlConnection _connection; + + private global::System.Data.SqlClient.SqlTransaction _transaction; + + private global::System.Data.SqlClient.SqlCommand[] _commandCollection; + + private bool _clearBeforeFill; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public СтудентыTableAdapter() { + this.ClearBeforeFill = true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected internal global::System.Data.SqlClient.SqlDataAdapter Adapter { + get { + if ((this._adapter == null)) { + this.InitAdapter(); + } + return this._adapter; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal global::System.Data.SqlClient.SqlConnection Connection { + get { + if ((this._connection == null)) { + this.InitConnection(); + } + return this._connection; + } + set { + this._connection = value; + if ((this.Adapter.InsertCommand != null)) { + this.Adapter.InsertCommand.Connection = value; + } + if ((this.Adapter.DeleteCommand != null)) { + this.Adapter.DeleteCommand.Connection = value; + } + if ((this.Adapter.UpdateCommand != null)) { + this.Adapter.UpdateCommand.Connection = value; + } + for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) { + if ((this.CommandCollection[i] != null)) { + ((global::System.Data.SqlClient.SqlCommand)(this.CommandCollection[i])).Connection = value; + } + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal global::System.Data.SqlClient.SqlTransaction Transaction { + get { + return this._transaction; + } + set { + this._transaction = value; + for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) { + this.CommandCollection[i].Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.DeleteCommand != null))) { + this.Adapter.DeleteCommand.Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.InsertCommand != null))) { + this.Adapter.InsertCommand.Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.UpdateCommand != null))) { + this.Adapter.UpdateCommand.Transaction = this._transaction; + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected global::System.Data.SqlClient.SqlCommand[] CommandCollection { + get { + if ((this._commandCollection == null)) { + this.InitCommandCollection(); + } + return this._commandCollection; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool ClearBeforeFill { + get { + return this._clearBeforeFill; + } + set { + this._clearBeforeFill = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitAdapter() { + this._adapter = new global::System.Data.SqlClient.SqlDataAdapter(); + global::System.Data.Common.DataTableMapping tableMapping = new global::System.Data.Common.DataTableMapping(); + tableMapping.SourceTable = "Table"; + tableMapping.DataSetTable = "Студенты"; + tableMapping.ColumnMappings.Add("ID", "ID"); + tableMapping.ColumnMappings.Add("ФИО", "ФИО"); + tableMapping.ColumnMappings.Add("Дата рождения", "Дата рождения"); + tableMapping.ColumnMappings.Add("Место проживания", "Место проживания"); + tableMapping.ColumnMappings.Add("Наименование курсов", "Наименование курсов"); + this._adapter.TableMappings.Add(tableMapping); + this._adapter.InsertCommand = new global::System.Data.SqlClient.SqlCommand(); + this._adapter.InsertCommand.Connection = this.Connection; + this._adapter.InsertCommand.CommandText = "INSERT INTO [dbo].[Студенты] ([ID], [ФИО], [Дата рождения], [Место проживания], [" + + "Наименование курсов]) VALUES (@ID, @ФИО, @Дата_рождения, @Место_проживания, @Наи" + + "менование_курсов)"; + this._adapter.InsertCommand.CommandType = global::System.Data.CommandType.Text; + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@ID", global::System.Data.SqlDbType.BigInt, 0, global::System.Data.ParameterDirection.Input, 0, 0, "ID", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@ФИО", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "ФИО", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Дата_рождения", global::System.Data.SqlDbType.Date, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Дата рождения", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Место_проживания", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Место проживания", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Наименование_курсов", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Наименование курсов", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitConnection() { + this._connection = new global::System.Data.SqlClient.SqlConnection(); + this._connection.ConnectionString = global::PaymentLogs.Properties.Settings.Default.Отчет_оплаты_обучения_обучающихсяConnectionString; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitCommandCollection() { + this._commandCollection = new global::System.Data.SqlClient.SqlCommand[1]; + this._commandCollection[0] = new global::System.Data.SqlClient.SqlCommand(); + this._commandCollection[0].Connection = this.Connection; + this._commandCollection[0].CommandText = "SELECT ID, ФИО, [Дата рождения], [Место проживания], [Наименование курсов] FROM d" + + "bo.Студенты"; + this._commandCollection[0].CommandType = global::System.Data.CommandType.Text; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, true)] + public virtual int Fill(Отчет_оплаты_обучения_обучающихсяDataSet.СтудентыDataTable dataTable) { + this.Adapter.SelectCommand = this.CommandCollection[0]; + if ((this.ClearBeforeFill == true)) { + dataTable.Clear(); + } + int returnValue = this.Adapter.Fill(dataTable); + return returnValue; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, true)] + public virtual Отчет_оплаты_обучения_обучающихсяDataSet.СтудентыDataTable GetData() { + this.Adapter.SelectCommand = this.CommandCollection[0]; + Отчет_оплаты_обучения_обучающихсяDataSet.СтудентыDataTable dataTable = new Отчет_оплаты_обучения_обучающихсяDataSet.СтудентыDataTable(); + this.Adapter.Fill(dataTable); + return dataTable; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(Отчет_оплаты_обучения_обучающихсяDataSet.СтудентыDataTable dataTable) { + return this.Adapter.Update(dataTable); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(Отчет_оплаты_обучения_обучающихсяDataSet dataSet) { + return this.Adapter.Update(dataSet, "Студенты"); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(global::System.Data.DataRow dataRow) { + return this.Adapter.Update(new global::System.Data.DataRow[] { + dataRow}); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(global::System.Data.DataRow[] dataRows) { + return this.Adapter.Update(dataRows); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Insert, true)] + public virtual int Insert(long ID, string ФИО, global::System.Nullable Дата_рождения, string Место_проживания, string Наименование_курсов) { + this.Adapter.InsertCommand.Parameters[0].Value = ((long)(ID)); + if ((ФИО == null)) { + this.Adapter.InsertCommand.Parameters[1].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[1].Value = ((string)(ФИО)); + } + if ((Дата_рождения.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[2].Value = ((System.DateTime)(Дата_рождения.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[2].Value = global::System.DBNull.Value; + } + if ((Место_проживания == null)) { + this.Adapter.InsertCommand.Parameters[3].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[3].Value = ((string)(Место_проживания)); + } + if ((Наименование_курсов == null)) { + this.Adapter.InsertCommand.Parameters[4].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[4].Value = ((string)(Наименование_курсов)); + } + global::System.Data.ConnectionState previousConnectionState = this.Adapter.InsertCommand.Connection.State; + if (((this.Adapter.InsertCommand.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + this.Adapter.InsertCommand.Connection.Open(); + } + try { + int returnValue = this.Adapter.InsertCommand.ExecuteNonQuery(); + return returnValue; + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + this.Adapter.InsertCommand.Connection.Close(); + } + } + } + } + + /// + ///Represents the connection and commands used to retrieve and save data. + /// + [global::System.ComponentModel.DesignerCategoryAttribute("code")] + [global::System.ComponentModel.ToolboxItem(true)] + [global::System.ComponentModel.DataObjectAttribute(true)] + [global::System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterDesigner, Microsoft.VSDesigner" + + ", Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public partial class ФинансыTableAdapter : global::System.ComponentModel.Component { + + private global::System.Data.SqlClient.SqlDataAdapter _adapter; + + private global::System.Data.SqlClient.SqlConnection _connection; + + private global::System.Data.SqlClient.SqlTransaction _transaction; + + private global::System.Data.SqlClient.SqlCommand[] _commandCollection; + + private bool _clearBeforeFill; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public ФинансыTableAdapter() { + this.ClearBeforeFill = true; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected internal global::System.Data.SqlClient.SqlDataAdapter Adapter { + get { + if ((this._adapter == null)) { + this.InitAdapter(); + } + return this._adapter; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal global::System.Data.SqlClient.SqlConnection Connection { + get { + if ((this._connection == null)) { + this.InitConnection(); + } + return this._connection; + } + set { + this._connection = value; + if ((this.Adapter.InsertCommand != null)) { + this.Adapter.InsertCommand.Connection = value; + } + if ((this.Adapter.DeleteCommand != null)) { + this.Adapter.DeleteCommand.Connection = value; + } + if ((this.Adapter.UpdateCommand != null)) { + this.Adapter.UpdateCommand.Connection = value; + } + for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) { + if ((this.CommandCollection[i] != null)) { + ((global::System.Data.SqlClient.SqlCommand)(this.CommandCollection[i])).Connection = value; + } + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal global::System.Data.SqlClient.SqlTransaction Transaction { + get { + return this._transaction; + } + set { + this._transaction = value; + for (int i = 0; (i < this.CommandCollection.Length); i = (i + 1)) { + this.CommandCollection[i].Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.DeleteCommand != null))) { + this.Adapter.DeleteCommand.Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.InsertCommand != null))) { + this.Adapter.InsertCommand.Transaction = this._transaction; + } + if (((this.Adapter != null) + && (this.Adapter.UpdateCommand != null))) { + this.Adapter.UpdateCommand.Transaction = this._transaction; + } + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected global::System.Data.SqlClient.SqlCommand[] CommandCollection { + get { + if ((this._commandCollection == null)) { + this.InitCommandCollection(); + } + return this._commandCollection; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool ClearBeforeFill { + get { + return this._clearBeforeFill; + } + set { + this._clearBeforeFill = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitAdapter() { + this._adapter = new global::System.Data.SqlClient.SqlDataAdapter(); + global::System.Data.Common.DataTableMapping tableMapping = new global::System.Data.Common.DataTableMapping(); + tableMapping.SourceTable = "Table"; + tableMapping.DataSetTable = "Финансы"; + tableMapping.ColumnMappings.Add("ФИО", "ФИО"); + tableMapping.ColumnMappings.Add("Наименование курсов", "Наименование курсов"); + tableMapping.ColumnMappings.Add("Стоимость обучения", "Стоимость обучения"); + tableMapping.ColumnMappings.Add("Оплачено", "Оплачено"); + tableMapping.ColumnMappings.Add("Долг", "Долг"); + this._adapter.TableMappings.Add(tableMapping); + this._adapter.InsertCommand = new global::System.Data.SqlClient.SqlCommand(); + this._adapter.InsertCommand.Connection = this.Connection; + this._adapter.InsertCommand.CommandText = "INSERT INTO [dbo].[Финансы] ([ФИО], [Наименование курсов], [Стоимость обучения], " + + "[Оплачено], [Долг]) VALUES (@ФИО, @Наименование_курсов, @Стоимость_обучения, @Оп" + + "лачено, @Долг)"; + this._adapter.InsertCommand.CommandType = global::System.Data.CommandType.Text; + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@ФИО", global::System.Data.SqlDbType.BigInt, 0, global::System.Data.ParameterDirection.Input, 0, 0, "ФИО", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Наименование_курсов", global::System.Data.SqlDbType.NVarChar, 0, global::System.Data.ParameterDirection.Input, 0, 0, "Наименование курсов", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Стоимость_обучения", global::System.Data.SqlDbType.Decimal, 0, global::System.Data.ParameterDirection.Input, 18, 0, "Стоимость обучения", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Оплачено", global::System.Data.SqlDbType.Decimal, 0, global::System.Data.ParameterDirection.Input, 18, 0, "Оплачено", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + this._adapter.InsertCommand.Parameters.Add(new global::System.Data.SqlClient.SqlParameter("@Долг", global::System.Data.SqlDbType.Decimal, 0, global::System.Data.ParameterDirection.Input, 18, 0, "Долг", global::System.Data.DataRowVersion.Current, false, null, "", "", "")); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitConnection() { + this._connection = new global::System.Data.SqlClient.SqlConnection(); + this._connection.ConnectionString = global::PaymentLogs.Properties.Settings.Default.Отчет_оплаты_обучения_обучающихсяConnectionString; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private void InitCommandCollection() { + this._commandCollection = new global::System.Data.SqlClient.SqlCommand[1]; + this._commandCollection[0] = new global::System.Data.SqlClient.SqlCommand(); + this._commandCollection[0].Connection = this.Connection; + this._commandCollection[0].CommandText = "SELECT ФИО, [Наименование курсов], [Стоимость обучения], Оплачено, Долг FROM dbo." + + "Финансы"; + this._commandCollection[0].CommandType = global::System.Data.CommandType.Text; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Fill, true)] + public virtual int Fill(Отчет_оплаты_обучения_обучающихсяDataSet.ФинансыDataTable dataTable) { + this.Adapter.SelectCommand = this.CommandCollection[0]; + if ((this.ClearBeforeFill == true)) { + dataTable.Clear(); + } + int returnValue = this.Adapter.Fill(dataTable); + return returnValue; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, true)] + public virtual Отчет_оплаты_обучения_обучающихсяDataSet.ФинансыDataTable GetData() { + this.Adapter.SelectCommand = this.CommandCollection[0]; + Отчет_оплаты_обучения_обучающихсяDataSet.ФинансыDataTable dataTable = new Отчет_оплаты_обучения_обучающихсяDataSet.ФинансыDataTable(); + this.Adapter.Fill(dataTable); + return dataTable; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(Отчет_оплаты_обучения_обучающихсяDataSet.ФинансыDataTable dataTable) { + return this.Adapter.Update(dataTable); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(Отчет_оплаты_обучения_обучающихсяDataSet dataSet) { + return this.Adapter.Update(dataSet, "Финансы"); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(global::System.Data.DataRow dataRow) { + return this.Adapter.Update(new global::System.Data.DataRow[] { + dataRow}); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + public virtual int Update(global::System.Data.DataRow[] dataRows) { + return this.Adapter.Update(dataRows); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] + [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Insert, true)] + public virtual int Insert(global::System.Nullable ФИО, string Наименование_курсов, global::System.Nullable Стоимость_обучения, global::System.Nullable Оплачено, global::System.Nullable Долг) { + if ((ФИО.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[0].Value = ((long)(ФИО.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[0].Value = global::System.DBNull.Value; + } + if ((Наименование_курсов == null)) { + this.Adapter.InsertCommand.Parameters[1].Value = global::System.DBNull.Value; + } + else { + this.Adapter.InsertCommand.Parameters[1].Value = ((string)(Наименование_курсов)); + } + if ((Стоимость_обучения.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[2].Value = ((decimal)(Стоимость_обучения.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[2].Value = global::System.DBNull.Value; + } + if ((Оплачено.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[3].Value = ((decimal)(Оплачено.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[3].Value = global::System.DBNull.Value; + } + if ((Долг.HasValue == true)) { + this.Adapter.InsertCommand.Parameters[4].Value = ((decimal)(Долг.Value)); + } + else { + this.Adapter.InsertCommand.Parameters[4].Value = global::System.DBNull.Value; + } + global::System.Data.ConnectionState previousConnectionState = this.Adapter.InsertCommand.Connection.State; + if (((this.Adapter.InsertCommand.Connection.State & global::System.Data.ConnectionState.Open) + != global::System.Data.ConnectionState.Open)) { + this.Adapter.InsertCommand.Connection.Open(); + } + try { + int returnValue = this.Adapter.InsertCommand.ExecuteNonQuery(); + return returnValue; + } + finally { + if ((previousConnectionState == global::System.Data.ConnectionState.Closed)) { + this.Adapter.InsertCommand.Connection.Close(); + } + } + } + } + + /// + ///TableAdapterManager is used to coordinate TableAdapters in the dataset to enable Hierarchical Update scenarios + /// + [global::System.ComponentModel.DesignerCategoryAttribute("code")] + [global::System.ComponentModel.ToolboxItem(true)] + [global::System.ComponentModel.DesignerAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterManagerDesigner, Microsoft.VSD" + + "esigner, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] + [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapterManager")] + public partial class TableAdapterManager : global::System.ComponentModel.Component { + + private UpdateOrderOption _updateOrder; + + private для_визулTableAdapter _для_визулTableAdapter; + + private КурсыTableAdapter _курсыTableAdapter; + + private СтудентыTableAdapter _студентыTableAdapter; + + private ФинансыTableAdapter _финансыTableAdapter; + + private bool _backupDataSetBeforeUpdate; + + private global::System.Data.IDbConnection _connection; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public UpdateOrderOption UpdateOrder { + get { + return this._updateOrder; + } + set { + this._updateOrder = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.EditorAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterManagerPropertyEditor, Microso" + + "ft.VSDesigner, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3" + + "a", "System.Drawing.Design.UITypeEditor")] + public для_визулTableAdapter для_визулTableAdapter { + get { + return this._для_визулTableAdapter; + } + set { + this._для_визулTableAdapter = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.EditorAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterManagerPropertyEditor, Microso" + + "ft.VSDesigner, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3" + + "a", "System.Drawing.Design.UITypeEditor")] + public КурсыTableAdapter КурсыTableAdapter { + get { + return this._курсыTableAdapter; + } + set { + this._курсыTableAdapter = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.EditorAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterManagerPropertyEditor, Microso" + + "ft.VSDesigner, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3" + + "a", "System.Drawing.Design.UITypeEditor")] + public СтудентыTableAdapter СтудентыTableAdapter { + get { + return this._студентыTableAdapter; + } + set { + this._студентыTableAdapter = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.EditorAttribute("Microsoft.VSDesigner.DataSource.Design.TableAdapterManagerPropertyEditor, Microso" + + "ft.VSDesigner, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3" + + "a", "System.Drawing.Design.UITypeEditor")] + public ФинансыTableAdapter ФинансыTableAdapter { + get { + return this._финансыTableAdapter; + } + set { + this._финансыTableAdapter = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public bool BackupDataSetBeforeUpdate { + get { + return this._backupDataSetBeforeUpdate; + } + set { + this._backupDataSetBeforeUpdate = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public global::System.Data.IDbConnection Connection { + get { + if ((this._connection != null)) { + return this._connection; + } + if (((this._для_визулTableAdapter != null) + && (this._для_визулTableAdapter.Connection != null))) { + return this._для_визулTableAdapter.Connection; + } + if (((this._курсыTableAdapter != null) + && (this._курсыTableAdapter.Connection != null))) { + return this._курсыTableAdapter.Connection; + } + if (((this._студентыTableAdapter != null) + && (this._студентыTableAdapter.Connection != null))) { + return this._студентыTableAdapter.Connection; + } + if (((this._финансыTableAdapter != null) + && (this._финансыTableAdapter.Connection != null))) { + return this._финансыTableAdapter.Connection; + } + return null; + } + set { + this._connection = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + [global::System.ComponentModel.Browsable(false)] + public int TableAdapterInstanceCount { + get { + int count = 0; + if ((this._для_визулTableAdapter != null)) { + count = (count + 1); + } + if ((this._курсыTableAdapter != null)) { + count = (count + 1); + } + if ((this._студентыTableAdapter != null)) { + count = (count + 1); + } + if ((this._финансыTableAdapter != null)) { + count = (count + 1); + } + return count; + } + } + + /// + ///Update rows in top-down order. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private int UpdateUpdatedRows(Отчет_оплаты_обучения_обучающихсяDataSet dataSet, global::System.Collections.Generic.List allChangedRows, global::System.Collections.Generic.List allAddedRows) { + int result = 0; + if ((this._для_визулTableAdapter != null)) { + global::System.Data.DataRow[] updatedRows = dataSet.для_визул.Select(null, null, global::System.Data.DataViewRowState.ModifiedCurrent); + updatedRows = this.GetRealUpdatedRows(updatedRows, allAddedRows); + if (((updatedRows != null) + && (0 < updatedRows.Length))) { + result = (result + this._для_визулTableAdapter.Update(updatedRows)); + allChangedRows.AddRange(updatedRows); + } + } + if ((this._курсыTableAdapter != null)) { + global::System.Data.DataRow[] updatedRows = dataSet.Курсы.Select(null, null, global::System.Data.DataViewRowState.ModifiedCurrent); + updatedRows = this.GetRealUpdatedRows(updatedRows, allAddedRows); + if (((updatedRows != null) + && (0 < updatedRows.Length))) { + result = (result + this._курсыTableAdapter.Update(updatedRows)); + allChangedRows.AddRange(updatedRows); + } + } + if ((this._студентыTableAdapter != null)) { + global::System.Data.DataRow[] updatedRows = dataSet.Студенты.Select(null, null, global::System.Data.DataViewRowState.ModifiedCurrent); + updatedRows = this.GetRealUpdatedRows(updatedRows, allAddedRows); + if (((updatedRows != null) + && (0 < updatedRows.Length))) { + result = (result + this._студентыTableAdapter.Update(updatedRows)); + allChangedRows.AddRange(updatedRows); + } + } + if ((this._финансыTableAdapter != null)) { + global::System.Data.DataRow[] updatedRows = dataSet.Финансы.Select(null, null, global::System.Data.DataViewRowState.ModifiedCurrent); + updatedRows = this.GetRealUpdatedRows(updatedRows, allAddedRows); + if (((updatedRows != null) + && (0 < updatedRows.Length))) { + result = (result + this._финансыTableAdapter.Update(updatedRows)); + allChangedRows.AddRange(updatedRows); + } + } + return result; + } + + /// + ///Insert rows in top-down order. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private int UpdateInsertedRows(Отчет_оплаты_обучения_обучающихсяDataSet dataSet, global::System.Collections.Generic.List allAddedRows) { + int result = 0; + if ((this._для_визулTableAdapter != null)) { + global::System.Data.DataRow[] addedRows = dataSet.для_визул.Select(null, null, global::System.Data.DataViewRowState.Added); + if (((addedRows != null) + && (0 < addedRows.Length))) { + result = (result + this._для_визулTableAdapter.Update(addedRows)); + allAddedRows.AddRange(addedRows); + } + } + if ((this._курсыTableAdapter != null)) { + global::System.Data.DataRow[] addedRows = dataSet.Курсы.Select(null, null, global::System.Data.DataViewRowState.Added); + if (((addedRows != null) + && (0 < addedRows.Length))) { + result = (result + this._курсыTableAdapter.Update(addedRows)); + allAddedRows.AddRange(addedRows); + } + } + if ((this._студентыTableAdapter != null)) { + global::System.Data.DataRow[] addedRows = dataSet.Студенты.Select(null, null, global::System.Data.DataViewRowState.Added); + if (((addedRows != null) + && (0 < addedRows.Length))) { + result = (result + this._студентыTableAdapter.Update(addedRows)); + allAddedRows.AddRange(addedRows); + } + } + if ((this._финансыTableAdapter != null)) { + global::System.Data.DataRow[] addedRows = dataSet.Финансы.Select(null, null, global::System.Data.DataViewRowState.Added); + if (((addedRows != null) + && (0 < addedRows.Length))) { + result = (result + this._финансыTableAdapter.Update(addedRows)); + allAddedRows.AddRange(addedRows); + } + } + return result; + } + + /// + ///Delete rows in bottom-up order. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private int UpdateDeletedRows(Отчет_оплаты_обучения_обучающихсяDataSet dataSet, global::System.Collections.Generic.List allChangedRows) { + int result = 0; + if ((this._финансыTableAdapter != null)) { + global::System.Data.DataRow[] deletedRows = dataSet.Финансы.Select(null, null, global::System.Data.DataViewRowState.Deleted); + if (((deletedRows != null) + && (0 < deletedRows.Length))) { + result = (result + this._финансыTableAdapter.Update(deletedRows)); + allChangedRows.AddRange(deletedRows); + } + } + if ((this._студентыTableAdapter != null)) { + global::System.Data.DataRow[] deletedRows = dataSet.Студенты.Select(null, null, global::System.Data.DataViewRowState.Deleted); + if (((deletedRows != null) + && (0 < deletedRows.Length))) { + result = (result + this._студентыTableAdapter.Update(deletedRows)); + allChangedRows.AddRange(deletedRows); + } + } + if ((this._курсыTableAdapter != null)) { + global::System.Data.DataRow[] deletedRows = dataSet.Курсы.Select(null, null, global::System.Data.DataViewRowState.Deleted); + if (((deletedRows != null) + && (0 < deletedRows.Length))) { + result = (result + this._курсыTableAdapter.Update(deletedRows)); + allChangedRows.AddRange(deletedRows); + } + } + if ((this._для_визулTableAdapter != null)) { + global::System.Data.DataRow[] deletedRows = dataSet.для_визул.Select(null, null, global::System.Data.DataViewRowState.Deleted); + if (((deletedRows != null) + && (0 < deletedRows.Length))) { + result = (result + this._для_визулTableAdapter.Update(deletedRows)); + allChangedRows.AddRange(deletedRows); + } + } + return result; + } + + /// + ///Remove inserted rows that become updated rows after calling TableAdapter.Update(inserted rows) first + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private global::System.Data.DataRow[] GetRealUpdatedRows(global::System.Data.DataRow[] updatedRows, global::System.Collections.Generic.List allAddedRows) { + if (((updatedRows == null) + || (updatedRows.Length < 1))) { + return updatedRows; + } + if (((allAddedRows == null) + || (allAddedRows.Count < 1))) { + return updatedRows; + } + global::System.Collections.Generic.List realUpdatedRows = new global::System.Collections.Generic.List(); + for (int i = 0; (i < updatedRows.Length); i = (i + 1)) { + global::System.Data.DataRow row = updatedRows[i]; + if ((allAddedRows.Contains(row) == false)) { + realUpdatedRows.Add(row); + } + } + return realUpdatedRows.ToArray(); + } + + /// + ///Update all changes to the dataset. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public virtual int UpdateAll(Отчет_оплаты_обучения_обучающихсяDataSet dataSet) { + if ((dataSet == null)) { + throw new global::System.ArgumentNullException("dataSet"); + } + if ((dataSet.HasChanges() == false)) { + return 0; + } + if (((this._для_визулTableAdapter != null) + && (this.MatchTableAdapterConnection(this._для_визулTableAdapter.Connection) == false))) { + throw new global::System.ArgumentException("Все адаптеры таблицы, управляемые диспетчером адаптера таблицы TableAdapterManage" + + "r, должны использовать одинаковую строку подключения."); + } + if (((this._курсыTableAdapter != null) + && (this.MatchTableAdapterConnection(this._курсыTableAdapter.Connection) == false))) { + throw new global::System.ArgumentException("Все адаптеры таблицы, управляемые диспетчером адаптера таблицы TableAdapterManage" + + "r, должны использовать одинаковую строку подключения."); + } + if (((this._студентыTableAdapter != null) + && (this.MatchTableAdapterConnection(this._студентыTableAdapter.Connection) == false))) { + throw new global::System.ArgumentException("Все адаптеры таблицы, управляемые диспетчером адаптера таблицы TableAdapterManage" + + "r, должны использовать одинаковую строку подключения."); + } + if (((this._финансыTableAdapter != null) + && (this.MatchTableAdapterConnection(this._финансыTableAdapter.Connection) == false))) { + throw new global::System.ArgumentException("Все адаптеры таблицы, управляемые диспетчером адаптера таблицы TableAdapterManage" + + "r, должны использовать одинаковую строку подключения."); + } + global::System.Data.IDbConnection workConnection = this.Connection; + if ((workConnection == null)) { + throw new global::System.ApplicationException("TableAdapterManager не содержит сведений о подключении. Укажите для каждого адапт" + + "ера таблицы TableAdapterManager допустимый экземпляр адаптера таблицы."); + } + bool workConnOpened = false; + if (((workConnection.State & global::System.Data.ConnectionState.Broken) + == global::System.Data.ConnectionState.Broken)) { + workConnection.Close(); + } + if ((workConnection.State == global::System.Data.ConnectionState.Closed)) { + workConnection.Open(); + workConnOpened = true; + } + global::System.Data.IDbTransaction workTransaction = workConnection.BeginTransaction(); + if ((workTransaction == null)) { + throw new global::System.ApplicationException("Не удается начать транзакцию. Текущее соединение данных не поддерживает транзакци" + + "и или текущее состояние не позволяет начать транзакцию."); + } + global::System.Collections.Generic.List allChangedRows = new global::System.Collections.Generic.List(); + global::System.Collections.Generic.List allAddedRows = new global::System.Collections.Generic.List(); + global::System.Collections.Generic.List adaptersWithAcceptChangesDuringUpdate = new global::System.Collections.Generic.List(); + global::System.Collections.Generic.Dictionary revertConnections = new global::System.Collections.Generic.Dictionary(); + int result = 0; + global::System.Data.DataSet backupDataSet = null; + if (this.BackupDataSetBeforeUpdate) { + backupDataSet = new global::System.Data.DataSet(); + backupDataSet.Merge(dataSet); + } + try { + // ---- Prepare for update ----------- + // + if ((this._для_визулTableAdapter != null)) { + revertConnections.Add(this._для_визулTableAdapter, this._для_визулTableAdapter.Connection); + this._для_визулTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(workConnection)); + this._для_визулTableAdapter.Transaction = ((global::System.Data.SqlClient.SqlTransaction)(workTransaction)); + if (this._для_визулTableAdapter.Adapter.AcceptChangesDuringUpdate) { + this._для_визулTableAdapter.Adapter.AcceptChangesDuringUpdate = false; + adaptersWithAcceptChangesDuringUpdate.Add(this._для_визулTableAdapter.Adapter); + } + } + if ((this._курсыTableAdapter != null)) { + revertConnections.Add(this._курсыTableAdapter, this._курсыTableAdapter.Connection); + this._курсыTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(workConnection)); + this._курсыTableAdapter.Transaction = ((global::System.Data.SqlClient.SqlTransaction)(workTransaction)); + if (this._курсыTableAdapter.Adapter.AcceptChangesDuringUpdate) { + this._курсыTableAdapter.Adapter.AcceptChangesDuringUpdate = false; + adaptersWithAcceptChangesDuringUpdate.Add(this._курсыTableAdapter.Adapter); + } + } + if ((this._студентыTableAdapter != null)) { + revertConnections.Add(this._студентыTableAdapter, this._студентыTableAdapter.Connection); + this._студентыTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(workConnection)); + this._студентыTableAdapter.Transaction = ((global::System.Data.SqlClient.SqlTransaction)(workTransaction)); + if (this._студентыTableAdapter.Adapter.AcceptChangesDuringUpdate) { + this._студентыTableAdapter.Adapter.AcceptChangesDuringUpdate = false; + adaptersWithAcceptChangesDuringUpdate.Add(this._студентыTableAdapter.Adapter); + } + } + if ((this._финансыTableAdapter != null)) { + revertConnections.Add(this._финансыTableAdapter, this._финансыTableAdapter.Connection); + this._финансыTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(workConnection)); + this._финансыTableAdapter.Transaction = ((global::System.Data.SqlClient.SqlTransaction)(workTransaction)); + if (this._финансыTableAdapter.Adapter.AcceptChangesDuringUpdate) { + this._финансыTableAdapter.Adapter.AcceptChangesDuringUpdate = false; + adaptersWithAcceptChangesDuringUpdate.Add(this._финансыTableAdapter.Adapter); + } + } + // + //---- Perform updates ----------- + // + if ((this.UpdateOrder == UpdateOrderOption.UpdateInsertDelete)) { + result = (result + this.UpdateUpdatedRows(dataSet, allChangedRows, allAddedRows)); + result = (result + this.UpdateInsertedRows(dataSet, allAddedRows)); + } + else { + result = (result + this.UpdateInsertedRows(dataSet, allAddedRows)); + result = (result + this.UpdateUpdatedRows(dataSet, allChangedRows, allAddedRows)); + } + result = (result + this.UpdateDeletedRows(dataSet, allChangedRows)); + // + //---- Commit updates ----------- + // + workTransaction.Commit(); + if ((0 < allAddedRows.Count)) { + global::System.Data.DataRow[] rows = new System.Data.DataRow[allAddedRows.Count]; + allAddedRows.CopyTo(rows); + for (int i = 0; (i < rows.Length); i = (i + 1)) { + global::System.Data.DataRow row = rows[i]; + row.AcceptChanges(); + } + } + if ((0 < allChangedRows.Count)) { + global::System.Data.DataRow[] rows = new System.Data.DataRow[allChangedRows.Count]; + allChangedRows.CopyTo(rows); + for (int i = 0; (i < rows.Length); i = (i + 1)) { + global::System.Data.DataRow row = rows[i]; + row.AcceptChanges(); + } + } + } + catch (global::System.Exception ex) { + workTransaction.Rollback(); + // ---- Restore the dataset ----------- + if (this.BackupDataSetBeforeUpdate) { + global::System.Diagnostics.Debug.Assert((backupDataSet != null)); + dataSet.Clear(); + dataSet.Merge(backupDataSet); + } + else { + if ((0 < allAddedRows.Count)) { + global::System.Data.DataRow[] rows = new System.Data.DataRow[allAddedRows.Count]; + allAddedRows.CopyTo(rows); + for (int i = 0; (i < rows.Length); i = (i + 1)) { + global::System.Data.DataRow row = rows[i]; + row.AcceptChanges(); + row.SetAdded(); + } + } + } + throw ex; + } + finally { + if (workConnOpened) { + workConnection.Close(); + } + if ((this._для_визулTableAdapter != null)) { + this._для_визулTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(revertConnections[this._для_визулTableAdapter])); + this._для_визулTableAdapter.Transaction = null; + } + if ((this._курсыTableAdapter != null)) { + this._курсыTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(revertConnections[this._курсыTableAdapter])); + this._курсыTableAdapter.Transaction = null; + } + if ((this._студентыTableAdapter != null)) { + this._студентыTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(revertConnections[this._студентыTableAdapter])); + this._студентыTableAdapter.Transaction = null; + } + if ((this._финансыTableAdapter != null)) { + this._финансыTableAdapter.Connection = ((global::System.Data.SqlClient.SqlConnection)(revertConnections[this._финансыTableAdapter])); + this._финансыTableAdapter.Transaction = null; + } + if ((0 < adaptersWithAcceptChangesDuringUpdate.Count)) { + global::System.Data.Common.DataAdapter[] adapters = new System.Data.Common.DataAdapter[adaptersWithAcceptChangesDuringUpdate.Count]; + adaptersWithAcceptChangesDuringUpdate.CopyTo(adapters); + for (int i = 0; (i < adapters.Length); i = (i + 1)) { + global::System.Data.Common.DataAdapter adapter = adapters[i]; + adapter.AcceptChangesDuringUpdate = true; + } + } + } + return result; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected virtual void SortSelfReferenceRows(global::System.Data.DataRow[] rows, global::System.Data.DataRelation relation, bool childFirst) { + global::System.Array.Sort(rows, new SelfReferenceComparer(relation, childFirst)); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + protected virtual bool MatchTableAdapterConnection(global::System.Data.IDbConnection inputConnection) { + if ((this._connection != null)) { + return true; + } + if (((this.Connection == null) + || (inputConnection == null))) { + return true; + } + if (string.Equals(this.Connection.ConnectionString, inputConnection.ConnectionString, global::System.StringComparison.Ordinal)) { + return true; + } + return false; + } + + /// + ///Update Order Option + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public enum UpdateOrderOption { + + InsertUpdateDelete = 0, + + UpdateInsertDelete = 1, + } + + /// + ///Used to sort self-referenced table's rows + /// + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private class SelfReferenceComparer : object, global::System.Collections.Generic.IComparer { + + private global::System.Data.DataRelation _relation; + + private int _childFirst; + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + internal SelfReferenceComparer(global::System.Data.DataRelation relation, bool childFirst) { + this._relation = relation; + if (childFirst) { + this._childFirst = -1; + } + else { + this._childFirst = 1; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + private global::System.Data.DataRow GetRoot(global::System.Data.DataRow row, out int distance) { + global::System.Diagnostics.Debug.Assert((row != null)); + global::System.Data.DataRow root = row; + distance = 0; + + global::System.Collections.Generic.IDictionary traversedRows = new global::System.Collections.Generic.Dictionary(); + traversedRows[row] = row; + + global::System.Data.DataRow parent = row.GetParentRow(this._relation, global::System.Data.DataRowVersion.Default); + for ( + ; ((parent != null) + && (traversedRows.ContainsKey(parent) == false)); + ) { + distance = (distance + 1); + root = parent; + traversedRows[parent] = parent; + parent = parent.GetParentRow(this._relation, global::System.Data.DataRowVersion.Default); + } + + if ((distance == 0)) { + traversedRows.Clear(); + traversedRows[row] = row; + parent = row.GetParentRow(this._relation, global::System.Data.DataRowVersion.Original); + for ( + ; ((parent != null) + && (traversedRows.ContainsKey(parent) == false)); + ) { + distance = (distance + 1); + root = parent; + traversedRows[parent] = parent; + parent = parent.GetParentRow(this._relation, global::System.Data.DataRowVersion.Original); + } + } + + return root; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "17.0.0.0")] + public int Compare(global::System.Data.DataRow row1, global::System.Data.DataRow row2) { + if (object.ReferenceEquals(row1, row2)) { + return 0; + } + if ((row1 == null)) { + return -1; + } + if ((row2 == null)) { + return 1; + } + + int distance1 = 0; + global::System.Data.DataRow root1 = this.GetRoot(row1, out distance1); + + int distance2 = 0; + global::System.Data.DataRow root2 = this.GetRoot(row2, out distance2); + + if (object.ReferenceEquals(root1, root2)) { + return (this._childFirst * distance1.CompareTo(distance2)); + } + else { + global::System.Diagnostics.Debug.Assert(((root1.Table != null) + && (root2.Table != null))); + if ((root1.Table.Rows.IndexOf(root1) < root2.Table.Rows.IndexOf(root2))) { + return -1; + } + else { + return 1; + } + } + } + } + } +} + +#pragma warning restore 1591 \ No newline at end of file diff --git a/sql2/Отчет_оплаты_обучения_обучающихсяDataSet.xsc b/sql2/Отчет_оплаты_обучения_обучающихсяDataSet.xsc new file mode 100644 index 0000000..05b0199 --- /dev/null +++ b/sql2/Отчет_оплаты_обучения_обучающихсяDataSet.xsc @@ -0,0 +1,9 @@ + + + + + \ No newline at end of file diff --git a/sql2/Отчет_оплаты_обучения_обучающихсяDataSet.xsd b/sql2/Отчет_оплаты_обучения_обучающихсяDataSet.xsd new file mode 100644 index 0000000..763c464 --- /dev/null +++ b/sql2/Отчет_оплаты_обучения_обучающихсяDataSet.xsd @@ -0,0 +1,314 @@ + + + + + + + + + + + + + + + INSERT INTO [dbo].[для визул] ([id], [ФИО], [Наименование курсов], [Стоимость обучения], [Оплачено], [Долг]) VALUES (@id, @ФИО, @Наименование_курсов, @Стоимость_обучения, @Оплачено, @Долг) + + + + + + + + + + + + + SELECT id, ФИО, [Наименование курсов], [Стоимость обучения], Оплачено, Долг FROM dbo.[для визул] + + + + + + + + + + + + + + + + + + + + + DELETE FROM [dbo].[Курсы] WHERE (([id] = @Original_id) AND ((@IsNull_Вид_обучения = 1 AND [Вид обучения] IS NULL) OR ([Вид обучения] = @Original_Вид_обучения)) AND ((@IsNull_Стоимость_обучения = 1 AND [Стоимость обучения] IS NULL) OR ([Стоимость обучения] = @Original_Стоимость_обучения)) AND ((@IsNull_Срок_обучения_в_часах = 1 AND [Срок обучения в часах] IS NULL) OR ([Срок обучения в часах] = @Original_Срок_обучения_в_часах)) AND ((@IsNull_Количество_обучающихся = 1 AND [Количество обучающихся] IS NULL) OR ([Количество обучающихся] = @Original_Количество_обучающихся))) + + + + + + + + + + + + + + + + INSERT INTO [dbo].[Курсы] ([Наименование курсов], [Вид обучения], [Стоимость обучения], [Срок обучения в часах], [Количество обучающихся]) VALUES (@Наименование_курсов, @Вид_обучения, @Стоимость_обучения, @Срок_обучения_в_часах, @Количество_обучающихся); +SELECT id, [Наименование курсов], [Вид обучения], [Стоимость обучения], [Срок обучения в часах], [Количество обучающихся] FROM Курсы WHERE (id = SCOPE_IDENTITY()) + + + + + + + + + + + + SELECT id, [Наименование курсов], [Вид обучения], [Стоимость обучения], [Срок обучения в часах], [Количество обучающихся] FROM dbo.Курсы + + + + + + UPDATE [dbo].[Курсы] SET [Наименование курсов] = @Наименование_курсов, [Вид обучения] = @Вид_обучения, [Стоимость обучения] = @Стоимость_обучения, [Срок обучения в часах] = @Срок_обучения_в_часах, [Количество обучающихся] = @Количество_обучающихся WHERE (([id] = @Original_id) AND ((@IsNull_Вид_обучения = 1 AND [Вид обучения] IS NULL) OR ([Вид обучения] = @Original_Вид_обучения)) AND ((@IsNull_Стоимость_обучения = 1 AND [Стоимость обучения] IS NULL) OR ([Стоимость обучения] = @Original_Стоимость_обучения)) AND ((@IsNull_Срок_обучения_в_часах = 1 AND [Срок обучения в часах] IS NULL) OR ([Срок обучения в часах] = @Original_Срок_обучения_в_часах)) AND ((@IsNull_Количество_обучающихся = 1 AND [Количество обучающихся] IS NULL) OR ([Количество обучающихся] = @Original_Количество_обучающихся))); +SELECT id, [Наименование курсов], [Вид обучения], [Стоимость обучения], [Срок обучения в часах], [Количество обучающихся] FROM Курсы WHERE (id = @id) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO [dbo].[Студенты] ([ID], [ФИО], [Дата рождения], [Место проживания], [Наименование курсов]) VALUES (@ID, @ФИО, @Дата_рождения, @Место_проживания, @Наименование_курсов) + + + + + + + + + + + + SELECT ID, ФИО, [Дата рождения], [Место проживания], [Наименование курсов] FROM dbo.Студенты + + + + + + + + + + + + + + + + + + + + INSERT INTO [dbo].[Финансы] ([ФИО], [Наименование курсов], [Стоимость обучения], [Оплачено], [Долг]) VALUES (@ФИО, @Наименование_курсов, @Стоимость_обучения, @Оплачено, @Долг) + + + + + + + + + + + + SELECT ФИО, [Наименование курсов], [Стоимость обучения], Оплачено, Долг FROM dbo.Финансы + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sql2/Отчет_оплаты_обучения_обучающихсяDataSet.xss b/sql2/Отчет_оплаты_обучения_обучающихсяDataSet.xss new file mode 100644 index 0000000..5f28270 --- /dev/null +++ b/sql2/Отчет_оплаты_обучения_обучающихсяDataSet.xss @@ -0,0 +1 @@ + \ No newline at end of file