Datei: Provider/MySqlConnectorProvider/NDO.MySqlConnector/Generator.cs

Last Commit (4b01a93)
1 -- File didn't exist --
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
New Commit (e404055)
1 //
2 // Copyright (c) 2002-2016 Mirko Matytschak
3 // (www.netdataobjects.de)
4 //
5 // Author: Mirko Matytschak
6 //
7 // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
8 // documentation files (the "Software"), to deal in the Software without restriction, including without limitation
9 // the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
10 // Software, and to permit persons to whom the Software is furnished to do so, subject to the following
11 // conditions:
12
13 // The above copyright notice and this permission notice shall be included in all copies or substantial portions
14 // of the Software.
15 //
16 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
17 // TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18 // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
19 // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20 // DEALINGS IN THE SOFTWARE.
21
22
23 using System;
24 using System.Text;
25 using System.Text.RegularExpressions;
26 using System.Data;
27 using NDOInterfaces;
28
29 namespace MySqlConnectorProvider
30 {
31 ····public class MySqlGenerator : AbstractSQLGenerator
32 ····{
33
34 ········public MySqlGenerator()
35 ········{············
36 ········}
37
38 ········public override string ProviderName
39 ········{
40 ············get { return "MySqlConnector"; }
41 ········}
42
43 ········public override string DropTable(string tableName)
44 ········{
45 ············return "DROP TABLE IF EXISTS " + tableName + ";";
46 ········}
47
48 ········public override string ConnectToDatabase(string connectionString)
49 ········{
50 ············Regex regex = new Regex(@"Database\s*=\s*([^;]+)");
51 ············Match match = regex.Match(connectionString);
52 ············if (match.Success)
53 ············{
54 ················return("USE " + match.Groups[1] + ";");
55 ············}
56 ············return string.Empty;
57 ········}
58
59
60
61 ········public override bool LengthAllowed(Type t)
62 ········{
63 ············return t == typeof(string) || t == typeof(decimal);
64 ········}
65
66 ········public override bool LengthAllowed(string dbType)
67 ········{
68 ············return (string.Compare(dbType, "varchar", true) == 0 || string.Compare(dbType, "decimal", true) == 0);
69 ········}
70
71 ········public override string DbTypeFromType(Type t, int size)
72 ········{
73 ············if (t == typeof( bool ) || t == typeof( Byte ))
74 ················return "Tinyint";
75 ············else if (t == typeof( DateTime ))
76 ················return "Datetime";
77 ············else if (t == typeof( decimal ))
78 ················return "Decimal";
79 ············else if (t == typeof( double ))
80 ················return "Double";
81 ············else if (t.IsEnum)
82 ················return "Int";
83 ············else if (t == typeof( float ))
84 ················return "Float";
85 ············else if (t == typeof( Guid ))
86 ················return "Varchar";
87 ············else if (t == typeof( Int16 ) || t == typeof( UInt16 ))
88 ················return "Smallint";
89 ············else if (t == typeof( Int32 ) || t == typeof( UInt32 ))
90 ················return "Int";
91 ············else if (t == typeof( Int64 ) || t == typeof( UInt64 ))
92 ················return "BigInt";
93 ············else if (t == typeof( string ) && size == -1)
94 ················return "TEXT";
95 ············else if (t == typeof( string ))
96 ················return "Varchar";
97 ············else if (t == typeof( byte[] ))
98 ················return "MediumBlob";
99 ············throw new Exception("Can't resolve type " + t.FullName + " as storable.");
100 ········}
101
102 ········public override string AutoIncrementColumn(string columnName, Type dataType, string columnType, string width)
103 ········{
104 ············return columnName + " Int AUTO_INCREMENT";
105 ········}
106
107 ········public override bool HasSpecialAutoIncrementColumnFormat
108 ········{
109 ············get { return true; }
110 ········}
111
112 ········public string CreateConstraint(DataColumn[] primaryKeyColumns, string constraintName, string tableName)
113 ········{
114 ············StringBuilder sb = new StringBuilder("CONSTRAINT ");
115 ············sb.Append(constraintName);
116 ············sb.Append(" PRIMARY KEY (");
117 ············int lastIndex = primaryKeyColumns.Length - 1;
118 ············for (int i = 0; i < primaryKeyColumns.Length; i++)
119 ············{
120 ················DataColumn dc = primaryKeyColumns[i];
121 ················sb.Append(Provider.GetQuotedName(dc.ColumnName));
122 ················if (i < lastIndex)
123 ····················sb.Append(",");
124 ············}
125 ············sb.Append(")");
126 ············return sb.ToString();
127 ········}
128
129
130 ········public override string RemoveColumn(string colName)
131 ········{
132 ············return "DROP " + colName;
133 ········}
134
135 ········//ALTER TABLE EMPLOYEE CHANGE old_col_name new_col_name char(20) (mysql)
136 ········public override string RenameColumn(string tableName, string oldName, string newName, string typeName)
137 ········{
138 ············return "ALTER TABLE " + tableName + " CHANGE " + oldName + ' ' + newName + ' ' + typeName;
139 ········}
140
141 ········public override string AlterColumnType()
142 ········{
143 ············return "MODIFY";
144 ········}
145
146
147
148 ····}
149
150 }
151