public partial class N : System.Web.UI.Page
{
DB db;
//SqlConnection sqlcon;
//SqlCommand sqlcom;
private string strCon = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; //"data source=(local);database=Wcwork;uid=sa;pwd=123;";
protected void Page_Load(object sender, EventArgs e)
{
db = DB.getInstance();
if (!IsPostBack)
{
//bind();
}
if (!Page.IsPostBack)
{//Page.SmartNavigation = True;
//绑定Repeater控件数据源
jfktA.DataSource = db.getBySql("select * from 机房b1空调温度");
jfktA.DataBind();
jfkt2.DataSource = get_datatable("select * from 机房b2空调温度");
jfkt2.DataBind();
jfktC.DataSource = get_datatable("select * from 机房b3空调温度");
jfktC.DataBind();
jgnx1.DataSource = get_datatable("select * from b3gl");
jgnx1.DataBind();
jgnx2.DataSource = get_datatable("select * from b2gl");
jgnx2.DataBind();
jgnx3.DataSource = get_datatable("select * from b1gl");
jgnx3.DataBind();
jfsd.DataSource = get_datatable("select * from 机房湿度");
jfsd.DataBind();
Repeater1.DataSource = get_datatable("select * from b1");
Repeater1.DataBind();
Repeater2.DataSource = get_datatable("select * from b2");
Repeater2.DataBind();
Repeater3.DataSource = get_datatable("select * from b3");
Repeater3.DataBind();
}
}
public DataTable get_datatable(string sql)
{
//数据库连接字符串
string strconn = "server=;uid=sa;pwd=123;database=Wcwork";
//实例化连接对象,并赋值strconn
SqlConnection conn = new SqlConnection(strconn);
//打开连接对象
conn.Open();
//临时存储
DataTable Temp_dt = new DataTable();
//实例化数据库适配器
SqlDataAdapter Dad = new SqlDataAdapter(sql, conn);
//填充
Dad.Fill(Temp_dt);
//关闭连接对象
conn.Close();
//释放连接对象资源
conn.Dispose();
//返回DataTable
return Temp_dt;
}
protected void jfsd_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "update")//如果点击的是被标记为CommandName="update"的按钮,也就是修改按钮
{
int id = int.Parse(e.CommandArgument.ToString().Split(',')[0]);//这里还真必须用单引号来表示字符,而不是""的字符串~,C#的Split就一个以字符,而不是字符串参数的代码
int itemIndex = int.Parse(e.CommandArgument.ToString().Split(',')[1]);//藏在CommandArgument='<%#Eval("id")+","+(Container as RepeaterItem).ItemIndex%>'逗号后面的参数就是该行行号
TextBox TextBox16 = jfsd.Items[itemIndex].FindControl("TextBox16") as TextBox;//获得改行的TextBox1
TextBox TextBox17 = jfsd.Items[itemIndex].FindControl("TextBox17") as TextBox;//获得改行的TextBox2
//这里是修改数据库表的一般逻辑,不赘述了
if (TextBox16.Text.Trim().Equals("") || TextBox17.Text.Trim().Equals(""))
{
Response.Write("<b>用户名,密码不得为空!</b>");
}
else
{
//if (db.getBySql("select * from [机房b1空调温度] where [机房b1]='{0}'", new Object[] { TextBox1.Text }).Rows.Count == 0)//如果没有这个用户名才能修改
//{
//db.setBySql("update [机房b1空调温度] set [机房b1]='{0}' where [id]={1}", new Object[] { TextBox1.Text, id });
db.setBySql("update [机房湿度] set [湿度]='{0}' where [所有机房]={1}", new Object[] { TextBox17.Text, id });
//数据绑定并不意味着会自动刷新jfkt11,必须自己再用代码,刷新一下jfkt11
jfsd.DataSource = db.getBySql("select * from [机房湿度]");
jfsd.DataBind();
// Response.Write("<b>已修改!</b>");
//}
//else
//{
// Response.Write("<b>已有该用户名!</b>");
//}
}
}
}
}
public class DB : IDisposable
{
private SqlConnection sqlConnection;
// 以下代码,保证该类只能有一个实例
// 在自己内部定义自己的一个实例,只供内部调用
private static DB db = null;
// 这个类必须自动向整个系统提供这个实例对象
// 这里提供了一个供外部访问本class的静态方法,可以直接访问
public static DB getInstance()
{
if (db == null)
{
db = new DB();
}
return db;
}
private DB()// 私有无参构造函数
{
sqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ToString());
sqlConnection.Open();
}
//单例化结束
public DataTable getBySql(string sql, Object[] param)
{//查询
sql = String.Format(sql, param);//用字符串参数替换的形式防止注入
SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(new SqlCommand(sql, sqlConnection));
DataTable dataTable = new DataTable();
sqlDataAdapter.Fill(dataTable);
return dataTable;
}
public DataTable getBySql(string sql)
{//无参数的查询
SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(new SqlCommand(sql, sqlConnection));
DataTable dataTable = new DataTable();
sqlDataAdapter.Fill(dataTable);
return dataTable;
}
public void setBySql(string sql, Object[] param)
{ //无查询结果的修改
sql = String.Format(sql, param);//用字符串参数替换的形式防止注入
new SqlCommand(sql, sqlConnection).ExecuteNonQuery();
}
public void setBySql(string sql)
{ //无参数,无查询结果的修改
new SqlCommand(sql, sqlConnection).ExecuteNonQuery();
}
public void Dispose()
{//相当于析构函数
sqlConnection.Close();
//在C#中关闭数据库连接不能在类的析构函数中关,否则会抛“内部 .Net Framework 数据提供程序错误 1”的异常
//通过实现C#中IDisposable接口中的Dispose()方法主要用途是释放非托管资源。
}
}