예제 #1
0
파일: tSQLtPrivate.cs 프로젝트: tSQLt/tmp
        private static List<String[]> getTableStringArray(SqlDataReader reader, SqlString PrintOnlyColumnNameAliasList)
        {
            DataTable schema = reader.GetSchemaTable();

            List<String[]> results = new List<string[]>();

            int numCols = schema.Rows.Count;

            if (PrintOnlyColumnNameAliasList.ToString().Equals(""))
            {
                String[] header = new String[numCols];
                for (int i = 0; i < numCols; i++)
                {
                    DataRow row = schema.Rows[i];
                    header[i] = (row["ColumnName"].ToString());
                }
                results.Add(header);
            }
            else
            {
                var colListArray = SplitColumnNameList(ref PrintOnlyColumnNameAliasList);
                var unquotedColList = new List<string>();

                foreach(var colName in colListArray)
                {
                    if (colName.Length != 0)
                    {
                        unquotedColList.Add(colName.Replace("]]", "]"));
                    }
                }

                results.Add(unquotedColList.ToArray());
            }

            while (reader.Read()) {
                String[] rowData = new String[numCols];
                for (int i = 0; i < reader.FieldCount; i++) {

                    if (reader.IsDBNull(i)) {
                        rowData[i] = NULL_STRING;
                    } else {
                        SqlDbType dbType = (SqlDbType)schema.Rows[i]["ProviderType"];

                        switch (dbType) {
                            case SqlDbType.Date:
                                rowData[i] = SqlDateToString(reader.GetDateTime(i));
                                break;
                            case SqlDbType.SmallDateTime:
                                rowData[i] = SmallDateTimeToString(reader.GetDateTime(i));
                                break;
                            case SqlDbType.DateTime:
                                rowData[i] = SqlDateTimeToString(reader.GetDateTime(i));
                                break;
                            case SqlDbType.DateTime2:
                                rowData[i] = SqlDateTime2ToString(reader.GetDateTime(i));
                                break;
                            case SqlDbType.DateTimeOffset:
                                rowData[i] = SqlDateTimeOffsetToString(reader.GetDateTimeOffset(i));
                                break;
                            case SqlDbType.Decimal:
                                rowData[i] = reader.GetSqlDecimal(i).ToString();
                                break;
                            case SqlDbType.Float:
                                rowData[i] = reader.GetSqlDouble(i).Value.ToString("0.000000000000000E+0");
                                break;
                            case SqlDbType.Timestamp:
                            case SqlDbType.Image:
                            case SqlDbType.VarBinary:
                                rowData[i] = SqlBinaryToString(reader.GetSqlBinary(i));
                                break;
                            default:
                                rowData[i] = reader.GetValue(i).ToString();
                                break;
                        }
                    }
                }

                results.Add(rowData);
            }
            return results;
        }
        public DateTimeOffset GetDateTimeOffset(SqlDataReader reader)
        {
            InitColumn(reader);
            if (reader.IsDBNull(Ordinal))
            {
                return DateTimeOffset.MinValue;
            }
            else
            {
                var date = reader.GetDateTimeOffset(Ordinal);

                return date;
            }
        }
예제 #3
0
        private static List<String[]> getTableStringArray(SqlDataReader reader, SqlString ColumnList)
        {
            DataTable schema = reader.GetSchemaTable();

            List<String[]> results = new List<string[]>();

            int numCols = schema.Rows.Count;

            if (ColumnList.ToString().Equals(""))
            {
                String[] header = new String[numCols];
                for (int i = 0; i < numCols; i++)
                {
                    DataRow row = schema.Rows[i];
                    header[i] = row["ColumnName"].ToString();
                }
                results.Add(header);
            }
            else
            {
                results.Add(ColumnList.ToString().Split(','));
            }

            while (reader.Read()) {
                String[] rowData = new String[numCols];
                for (int i = 0; i < reader.FieldCount; i++) {

                    if (reader.IsDBNull(i)) {
                        rowData[i] = NULL_STRING;
                    } else {
                        SqlDbType dbType = (SqlDbType)schema.Rows[i]["ProviderType"];

                        switch (dbType) {
                            case SqlDbType.Date:
                                rowData[i] = SqlDateToString(reader.GetDateTime(i));
                                break;
                            case SqlDbType.SmallDateTime:
                                rowData[i] = SmallDateTimeToString(reader.GetDateTime(i));
                                break;
                            case SqlDbType.DateTime:
                                rowData[i] = SqlDateTimeToString(reader.GetDateTime(i));
                                break;
                            case SqlDbType.DateTime2:
                                rowData[i] = SqlDateTime2ToString(reader.GetDateTime(i));
                                break;
                            case SqlDbType.DateTimeOffset:
                                rowData[i] = SqlDateTimeOffsetToString(reader.GetDateTimeOffset(i));
                                break;
                            case SqlDbType.Decimal:
                                rowData[i] = reader.GetSqlDecimal(i).ToString();
                                break;
                            case SqlDbType.Float:
                                rowData[i] = reader.GetSqlDouble(i).Value.ToString("0.000000000000000E+0");
                                break;
                            case SqlDbType.Timestamp:
                            case SqlDbType.Image:
                            case SqlDbType.VarBinary:
                                rowData[i] = SqlBinaryToString(reader.GetSqlBinary(i));
                                break;
                            default:
                                rowData[i] = reader.GetValue(i).ToString();
                                break;
                        }
                    }
                }

                results.Add(rowData);
            }
            return results;
        }