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
+ 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
+ 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
+
+
+
+
+ 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
+ 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