/// <summary> /// Writes the content of the view page. /// </summary> /// <param name="writer">The writer.</param> /// <param name="entityName">Name of the entity.</param> private void WriteViewPageContent(StreamWriter writer, DatabaseColumn[] info, string entityName, string namespaceName) { writer.WriteLine("<table width=" + "\"" + "100%" + "\"" + ">"); writer.WriteLine("<tr>"); writer.WriteLine("<td align='center'>"); // writer.WriteLine("<asp:Label ID='labelTitle' runat='server' Text=" + "\"" + entityName + "\"" + "/>"); writer.WriteLine("<h3>" + entityName + "</h3>"); writer.WriteLine("</td>"); writer.WriteLine("</tr>"); writer.WriteLine(" <tr>"); writer.WriteLine(" <td align=" + "\"" + "center" + "\"" + ">"); writer.WriteLine(" <asp:GridView OnRowCommand='gridView_RowCommand' ID='gridView' runat='server' AllowSorting='True' AllowPaging='True' AutoGenerateColumns='False' DataSourceId='objectDataSource" + entityName + "'>"); writer.WriteLine("<Columns>"); bool generateLink = false; DatabaseColumn primaryKeyColumn = null; for (int i = 0; i < info.Length; i++) { if (info[i].isPrimaryKey) { primaryKeyColumn = info[i]; continue; } if (primaryKeyColumn == null) { throw new ArgumentException("No primary key found"); } if (generateLink == false) { writer.WriteLine("<asp:TemplateField ItemStyle-HorizontalAlign='Left'>"); //generate delete button writer.WriteLine("<ItemTemplate>"); writer.WriteLine(" <asp:LinkButton CommandArgument='<%# DataBinder.Eval(Container.DataItem, " + "\"" + primaryKeyColumn.Name + "\"" + ") %>'"); writer.WriteLine(" CommandName='linkDelete' runat='server' Text='Delete' ></asp:LinkButton>"); writer.WriteLine("</ItemTemplate>"); writer.WriteLine("</asp:TemplateField>"); writer.WriteLine("<asp:TemplateField ItemStyle-HorizontalAlign='Left' HeaderText='" + info[i].Name + "' SortExpression='" + info[i].Name + "'>"); writer.WriteLine("<ItemTemplate>"); writer.WriteLine(" <asp:LinkButton CommandArgument='<%# DataBinder.Eval(Container.DataItem, " + "\"" + primaryKeyColumn.Name + "\"" + ") %>'"); writer.WriteLine(" CommandName='linkSelect' runat='server' Text='<%# DataBinder.Eval(Container.DataItem, " + "\"" + info[i].Name + "\"" + ") %>' ></asp:LinkButton>"); writer.WriteLine("</ItemTemplate>"); writer.WriteLine("</asp:TemplateField>"); generateLink = true; } else { //generate bound columns writer.WriteLine("<asp:BoundField DataField='" + info[i].Name + "' HeaderText='" + info[i].Name + "' SortExpression='" + info[i].Name + "' ItemStyle-HorizontalAlign='Center' />"); } } writer.WriteLine("</Columns>"); writer.WriteLine(" </asp:GridView>"); writer.WriteLine(" <asp:ObjectDataSource ID='objectDataSource" + entityName + "' runat='server' TypeName='" + namespaceName + ".Presenters." + entityName + "ViewPresenter" + "' SelectMethod='Get" + entityName + "'></asp:ObjectDataSource>"); writer.WriteLine(""); writer.WriteLine(" </td>"); writer.WriteLine("</tr>"); writer.WriteLine("<tr>"); writer.WriteLine("<td align='center'>"); writer.WriteLine("<br/>"); writer.WriteLine("<br/>"); writer.WriteLine("<asp:Button runat='server' OnClick='buttonNew_Click' ID='buttonNew' Text='New' />"); writer.WriteLine("</td>"); writer.WriteLine("</tr>"); //end page header here writer.WriteLine("</table>"); }
/// <summary> /// Gets the column info. /// </summary> /// <param name="tableName">Name of the table.</param> /// <param name="connectionString">The connection string.</param> /// <returns>Array of DatabaseColumn</returns> public DatabaseColumn[] GetColumnInfo(string tableName, string connectionString) { OleDbConnection ocon = null; OleDbCommand ocmd = null; IDataReader iread = null; DatabaseColumn[] info = null; try { ocon = new OleDbConnection(connectionString); ocmd = new OleDbCommand(); ocmd.CommandText = "SELECT * FROM [" + tableName + "]"; ocmd.Connection = ocon; ocon.Open(); //DataTable result2 = ocon.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] { null, null, tableName, null }); iread = ocmd.ExecuteReader(CommandBehavior.SchemaOnly); DataTable dt = iread.GetSchemaTable(); iread.Close(); info = new DatabaseColumn[dt.Rows.Count]; for (int i = 0; i < dt.Rows.Count; i++) { info[i] = new DatabaseColumn(dt.Rows[i]["ColumnName"].ToString(), dt.Rows[i]["DataType"].ToString(), false, false, Convert.ToBoolean(dt.Rows[i]["IsAutoincrement"]), 0); } iread.Close(); //get the primary key now DataTable result = ocon.GetOleDbSchemaTable(OleDbSchemaGuid.Primary_Keys, new object[] { null, null, tableName }); string pkName = string.Empty; for (int i = 0; i < result.Rows.Count; i++) { pkName = result.Rows[i]["Column_Name"].ToString(); for (int j = 0; j < info.Length; j++) { if (info[j].Name == pkName) { info[j].isPrimaryKey = true; break; } } } return(info); } catch (Exception ex) { throw ex; } finally { if (ocon != null && ocon.State != ConnectionState.Closed) { ocon.Close(); } if (iread != null && !iread.IsClosed) { iread.Close(); } } }
public DatabaseColumn[] GetColumnInfo(string tableName, string connectionString) { #region // NpgsqlConnection con = null; // NpgsqlCommand cmd = null; // IDataReader reader = null; // NpgsqlDataAdapter adapter = null; // DataSet ds = null; // try // { // con = new NpgsqlConnection(connectionString); // cmd = new NpgsqlCommand(); // adapter = new NpgsqlDataAdapter(); // ds = new DataSet(); // cmd.Connection = con; // con.Open(); //// cmd.CommandText = " select a.attname as field, t.typname as type, a.attlen as typesize, a.atttypmod as fieldsize, a.attnotnull as notnull, a.atthasdef as hasdefault, d.adsrc as default from pg_attribute a inner join pg_type t on a.atttypid = t.oid inner join pg_class c on a.attrelid = c.oid left join pg_attrdef d on c.oid = d.oid and a.attnum = d.adnum where a.attnum > 0 and a.attisdropped = 'f' and c.relname = '" + tableName + "'"; // cmd.CommandText = "SELECT * FROM " + tableName; // DataTable dtg = reader.GetSchemaTable(); // reader = cmd.ExecuteReader(CommandBehavior.SchemaOnly); // while (reader.Read()) // { // DataTable dt = reader.GetSchemaTable(); // } // //adapter.SelectCommand = cmd; // //adapter.Fill(ds); // return null; // } // catch // { // throw; // } // finally // { // if (con != null) // { // con.Close(); // con.Dispose(); // } // } #endregion OdbcConnection con = null; OdbcCommand cmd = null; DataTable dt = null; DatabaseColumn[] columns = null; try { if (PostgreSqlSchemaLoader.listDataTypes == null) { this.LoadDataTypesMapper(connectionString); } con = new OdbcConnection(connectionString); cmd = new OdbcCommand(); cmd.Connection = con; con.Open(); string[] a = { null, null, tableName }; dt = con.GetSchema("Columns", a); columns = new DatabaseColumn[dt.Rows.Count]; for (int i = 0; i < dt.Rows.Count; i++) { columns[i] = new DatabaseColumn(); columns[i].Name = dt.Rows[i][3].ToString(); columns[i].isAutoIncremented = (dt.Rows[i][5].ToString() == "0") ? false : true; columns[i].columnDataType = this.GetExternalType(dt.Rows[i][5].ToString()); //columns[i].isAutoIncremented = } return(columns); } catch { throw; } finally { if (con != null) { con.Close(); con.Dispose(); } if (dt != null) { dt.Dispose(); } } }