里氏转换原则

里氏转换原则
1,子类直接赋值给父类
2,子类调用父类要强制转化
------------------------
完整的拼接参数过程 parameters 是集合类型
cmd.Parameters.Clear();
SqlParameter para=new SqlParameter("@id",DbType.Int32); //告诉计算机@id的类型。方便计算机执行
para.Value=Convert.ToInt32(“23”);
cmd.Parameters.Add(para)

这样写,是为了让计算机更效率的执行


-------------------------------
DataSet是数据集,是一个临时数据库

如何创建一个dataset

Dataset ds=new Dataset("Mydata1"); 括号内是自定义的数据库名字,括号内也可以为空,就是默认的数据库名
//就是一个数据库 里面可以村表 DataTable dt=new DataTable("Mytable");
创建列
DataColum dc1=new DataColum("id",typeof(int));
dc1.AutoIncrement=true;
dc1.AutoIncrementSeed=1;
dc1.AutiIncrementStep=1;

DataColum dc2=new DataColum("name",typeof(string));
将列加到table中
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
把表加到数据库中
ds.Tables.Add(dt);

来一行数据
DataRow r1=dt.newRow();
r1["name"]="张三";
DataRow r2=dt.newRow();
r2["name"]="李四";

dt.Rows.Add(r1);
dt.Rows.Add(r2);

遍历数据
foreach (DataRow r in dt.Rows)
{
Console.WriteLine("{0}\t"{1},r["id"],r["name"]);
}
还可以写成xml
ds.WriteXml("123.xml");
-------------------------
SqlDataAdapter
SqlDataAdapter sda=new SqlDataAdapter(@"select top 10 * from person order by fid",@"server=连接字符串");
Dataset ds=new Dataset();
sda.Fill(ds);
ds.WriteXml("1.xml")

--------------------------------
绑定数据 Combobox和datagridview都可以绑定数据,

//导入数据
DataSet ds=new DataSet();
SqlDataAdapter sda=new SqlDataAdapter(sql语句,连接语句);
sda.Fill(ds);
datagridview列要绑定数据表的列
然后
dgw.DataSource=ds.Tables

combox1.DisplayMember="表中列名" conmbox显示的值
combox1.ValueMember="表中列名" combox的实际值,看不见的
combox1.DataSource=ds.Tables

--------------------
Sqlhelper

static class SQLHelper
{
string strConn=System.Configuration.Configurationmanager.ConnectionStrings["sql"].Connectionstring;
//常用查询
//ExecuteNonQuery() 返回int
//ExecuteReader() 返回SqlDatareader对象
//ExexcuteScalar() //返回object
//Adapter //返回DataSet

public static int ExecuteNonQuery(string commandText, params sqlparameter[] para) //params 是可变数组
{
using(sqlconnection conn=new sqlconnection(strconn))
{
using(sqlcommand cmd=new sqlcommand(commandtext,conn))
{
if(para !=null)
{
cmd.parameters.AddRange(para); //装配参数
}
if(conn.state==system.data.connectionstate.closed)
{
conn.Open();
}
return cmd.ExecuteNonQuery(); //调用的是系统的,实例ExecuteNonquery
}
}
} }
小知识:
ExecuteNonQuery(“1”,p1,p2,p3)
params 可以把p1 p2 p3自动生成一个数组; 很强大啊
-----------------------------
使用sqlhelper
例子 使用上面的sqlhelper
string sql="sql语句";
int res=sqlhelper.ExecuteNonquery(sql,null);
console.WriteLine(res);
------------------------------------
SQLhelper

ExecuteScalar

public static object ExecuteScalar(string cmdtext,params SqlParameter[] para)
{
using(SqlConnection conn=new Sqlconnection(strconn))
{
using(SqlCommand cmd=new SqlCommand(cmdtext,conn))
{
if(para !=null)
{
cmd.Parameters.AddRange(para);
}
if(conn.State==ConnectionState.Closed)
{
conn.Open();
}
reaturn cmd.ExecuteScalar();
}
}
}
----------------------
SqlDataReadder 的sqlhelper
常用的关闭方法

public static SqlDataReader ExecuteReader(string cmdtxt,params SqlParameter[] para)
{
SqlConnection conn=new SqlConnection(strconn)
using(SqlCommand cmd=new SqlCommand(cmdtxt,conn))
{
cmd.Parameters.AddRange(para);
conn.Open();
return cmd.ExecuteReader(CommandBehavior.CloseConnection);//执行完reader自动关闭连接
}

}
在主函数里的用法

//SqlDataReader reader = SQLHelper.ExecuteReader(sql, null);
//using (reader)
//{
// if (reader.HasRows)
// {
// while (reader.Read())
// {
// Console.WriteLine("{0}\t{1}\t{2}", reader[0], reader[1], reader[2]);
// }
// }
//}
第二种关闭方法
public static SqlDataReader ExecuteReader(out SqlConnection conn, string cmdtxt,params SqlParameter[] para)

{
conn=new SqlConnection(strconn);
using(Sqlcommand cmd=new SqlCommand(cmdtxt,conn))
{
cmd.Parameters.AddRange(para);
conn.Open();
return cmd.ExecuteReader();
}
}
#region 关闭连接2
//string sql = @"select id, name, pwd from tblTest";
//SqlConnection conn;
//SqlDataReader reader = SQLHelper.ExecuteReader(out conn, sql, null);
//using (conn)
//{
// using (reader)
// {
// if (reader.HasRows)
// {
// while (reader.Read())
// {
// Console.WriteLine("{0}\t{1}\t{2}", reader[0], reader[1], reader[2]);
// }
// }
// }
//}
-------------
public static DataSet DataAdapter(string cmdtxt,params SqlPatameter[] para)
{
Dataset ds=new DataSet();
using(SqlDataAdapter sda=new SqlDataAdapter(cmdtxt,strconn))//SqlDataAdapter 内部实现连接
{
sda.SelectCommand.Parameters.AddRange(para);
sda.Fill(ds);
}
return ds;
}
用法遍历DataSet下所有表的所有数据
DataSet ds=SQLhelper.Adapter("select * from tbl")
froeach(DataTable dt in ds.Tables)
{
Console.WriteLine("{0}显示数据",dt.ToString());
foreach(DataRow row in dt.Rows)
{
Console.WriteLine("{0}\t{1}\t{2}",row[0],row[1],row[2]);
}

}
-------------------
复杂的 对象关系
namespace _05SQLHelper
{
class OBJ
{
public int Id
{
get;
set;
}
public string Name
{
get;
set;
}
public string Pwd
{
get;
set;
}
}
}

helper----
public static List<OBJ> MyAdapter(string commandText, params SqlParameter[] para)
{
// 查询数据
List<OBJ> list = new List<OBJ>();
using (SqlDataReader reader = ExecuteReader(commandText, para))
{
if (reader.HasRows)
{
while (reader.Read())
{
list.Add(
new OBJ()
{
Id = Convert.ToInt32(reader["id"]),
Name = reader["name"].ToString(),
Pwd = reader["pwd"].ToString()
}
);
}
}
}

return list;
}


执行
List<OBJ> list = SQLHelper.MyAdapter("select id, name, pwd from tblTest", null);
for (int i = 0; i < list.Count; i++)
{
Console.WriteLine("{0},{1},{2}", list[i].Id, list[i].Name, list[i].Pwd);
}

Console.ReadKey();

posted @ 2012-09-18 00:34  美国如来不如中国上帝  阅读(375)  评论(0编辑  收藏  举报