110,561
社区成员
发帖
与我相关
我的任务
分享
public partial class Form2 : Form
{
private DataTable dtSchema = new DataTable();
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
DataTable dt = ExecuteDataTableAndSchema("select * from Cg_PurSort", null, CommandType.Text, "myTable", out dtSchema);
string s = "";
for (int i = 0; i < dtSchema.Rows.Count; i++)
{
//for (int j = 0; j < dtSchema.Columns.Count; j++)
//{
// s += dtSchema.Columns[j].ToString(); ;
//}
s += dtSchema.Rows[i]["ColumnName"].ToString() + "小数位:" + dtSchema.Rows[i]["NumericScale"].ToString();
s += "\r\n";
}
MessageBox.Show(s);
}
public static IDbConnection GetConnection()
{
IDbConnection connection = null;
if (connection == null)//判断连接是否为空
{
connection = new SqlConnection();
connection.ConnectionString = "server=.;user id=sa;pwd=;database=C1Grid";//连接数据库的字符串 }
if (connection.State == ConnectionState.Closed)
{
connection.Open();//打开数据库连接
}
}
return connection;
}
/// <summary>
/// 执行一个 SQL 语句,返回一个数据表带表结构信息(传递连接)
/// </summary>
public static DataTable ExecuteDataTableAndSchema(string sqltext, Dictionary<string, object> parameters, CommandType ctyp, IDbConnection conn, string tableName, out DataTable dtSchema)
{
DataTable dt = null;
using (IDbCommand cmd = conn.CreateCommand())
{
cmd.Connection = conn;
cmd.CommandType = ctyp;
cmd.CommandText = sqltext;
if (parameters != null)
foreach (KeyValuePair<string, object> p in parameters)
{
IDataParameter idparam = cmd.CreateParameter();
idparam.ParameterName = p.Key;
idparam.Value = p.Value;
cmd.Parameters.Add(idparam);
}
using (IDataReader idr = cmd.ExecuteReader())
{
dtSchema = idr.GetSchemaTable();
dt = new DataTable(tableName);
dt.Load(idr);
}
}
return dt;
}
/// <summary>
/// 执行一个 SQL 语句,返回一个数据表带表结构信息(传递连接名)
/// </summary>
public static DataTable ExecuteDataTableAndSchema(string sqltext, Dictionary<string, object> parameters, CommandType ctyp, string tableName, out DataTable dtSchema)
{
using (IDbConnection conn = GetConnection())
{
return ExecuteDataTableAndSchema(sqltext, parameters, ctyp, conn,tableName, out dtSchema);
}
}
}
public static IDbConnection GetConnection(string name)
{
IDbConnection connection = null;
string connectionString = ConfigurationManager.ConnectionStrings[name].ConnectionString;
string providerName = ConfigurationManager.ConnectionStrings[name].ProviderName;
if (providerName == "System.Data.SqlClient")
{
connection = new SqlConnection(connectionString);
}
else if (providerName == "System.Data.OracleClient")
{
connection = new OracleConnection(connectionString);
}
connection.Open();
return connection;
}
/// <summary>
/// 执行一个 SQL 语句,返回一个数据表带表结构信息(传递连接)
/// </summary>
public static DataTable ExecuteDataTableAndSchema(string sqltext, Dictionary<string, object> parameters, CommandType ctyp, IDbConnection conn, List<string> oracleCursors, out DataTable dtSchema)
{
DataTable dt = null;
using (IDbCommand cmd = conn.CreateCommand())
{
cmd.Connection = conn;
cmd.CommandType = ctyp;
cmd.CommandText = sqltext;
if (parameters != null)
foreach (KeyValuePair<string, object> p in parameters)
{
IDataParameter idparam = cmd.CreateParameter();
idparam.ParameterName = p.Key;
idparam.Value = p.Value;
cmd.Parameters.Add(idparam);
}
if (oracleCursors != null)
foreach (var oracleCursor in oracleCursors)
{
cmd.Parameters.Add(new OracleParameter(oracleCursor, OracleType.Cursor) { Direction = ParameterDirection.Output });
}
using (IDataReader idr = cmd.ExecuteReader())
{
dtSchema = idr.GetSchemaTable();
dt = new DataTable("Table1");
dt.Load(idr);
}
}
return dt;
}
/// <summary>
/// 执行一个 SQL 语句,返回一个数据表带表结构信息(传递连接名)
/// </summary>
public static DataTable ExecuteDataTableAndSchema(string sqltext, Dictionary<string, object> parameters, CommandType ctyp, string dbname, List<string> oracleCursors, out DataTable dtSchema)
{
using (IDbConnection conn = GetConnection(dbname))
{
return ExecuteDataTableAndSchema(sqltext, parameters, ctyp, conn, oracleCursors, out dtSchema);
}
}
string a = "12345.10000";
double d = Convert.ToDouble(a).ToString("0.00");
//输出12345.10
double d = Convert.ToDouble(a).ToString("0.000");
//输出12345.100
string a = "1.10000";
double d = Convert.ToDouble(a).ToString("00.00");//输出01.10