public void Connect(string h, string n, string u, string p) { host = h; user = u; password = p; QMsSql.ConnectString = "Server=" + h + ";Initial Catalog=" + n + ";User Id=" + u + ";Password="******";"; QMsSql.SqlInt("select count(*) FROM INFORMATION_SCHEMA.TABLES"); databaseName = n; }
public override void LoadStructure() { tables.Clear(); using (QMsSql s = new QMsSql()) { s.Open(@" SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_CATALOG=@1 order by 1,2", databaseName); while (s.GetRow()) { DbTable t = new DbTable(s[0], s[1], s[2]); tables.Add(t.name, t); } s.Open(@" SELECT c.COLUMN_NAME, c.COLUMN_DEFAULT,c.IS_NULLABLE, c.DATA_TYPE,c.CHARACTER_MAXIMUM_LENGTH, (select count(*) from INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE cc INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc on tc.CONSTRAINT_TYPE='PRIMARY KEY' and tc.TABLE_NAME=cc.TABLE_NAME and tc.CONSTRAINT_NAME=cc.CONSTRAINT_NAME where cc.TABLE_NAME=c.TABLE_NAME and CC.COLUMN_NAME=c.COLUMN_NAME) as pri, c.table_schema, c.TABLE_NAME from INFORMATION_SCHEMA.COLUMNS c where c.table_catalog=@1 order by c.ORDINAL_POSITION", databaseName); while (s.GetRow()) { string tableName = T.AppendTo(s[6], s[7], "."); if (tables.ContainsKey(tableName)) { // mssql allows views with columns that are multipart identifers - not supported here if (s[0].Contains('.')) { tables.Remove(tableName); continue; } DbTable t = tables[tableName]; DbColumn c = new DbColumn(t, s[0], s[3], s.GetInt(4), s.GetInt(5) > 0, s[2] == "YES", s[1]); t.columns.Add(c.name, c); tablesByColumnName.Add(c.name, t); } } } }
public override int SqlInt(bool useRawValues, string sql, params object[] args) { return(QMsSql.SqlInt(useRawValues, sql, args)); }
public override int SqlInt(string sql) { return(QMsSql.SqlInt(sql)); }