小山博客贴:
http://singlepine.cnblogs.com/articles/255374.html?Pending=true#Post//--------------------------------------------------------------
GetDataSet#region GetDataSet
public static DataSet GetDataSet(string sql)
{
SqlDataAdapter sda =new SqlDataAdapter(sql,ConnectionString);
DataSet ds=new DataSet();
sda.Fill(ds);
return ds;
}
#endregion
//--------------------------------------------------------------
Insert#region Insert
private void InsertUserInfo()
{
DataTable dt=ds.Tables[0];
dt.TableName="UserInfo";
DataRow dr=dt.NewRow();
dr["LoginName"]=this.txtUserName.Value;
dr["Pass"]=this.txtPassword.Value;
dr["NickName"]=this.txtNickName.Value;
dr["UserType"]=1;
dr["IsActive"]=false;
dr["RegisterDate"]=System.DateTime.Now;
dt.Rows.Add(dr);
dt.AcceptChanges();
DataHelper.InsertTable(dt,dt.TableName);
//这儿的两个参数?是否传到下面的(2)?
}
#endregion
//--------------------------------------------------------------
InsertTable#region InsertTable
//用于主键是数据库表名+ID类型的(1)
public static void InsertTable(DataTable dt)
{
string TableName="["+dt.TableName+"]";
string KeyName=dt.TableName+"ID";
foreach(DataRow dr in dt.Rows)
{
insertRow(dr,TableName,KeyName);
}
}
//用于主键是任意类型的(2)
public static void InsertTable(DataTable dt,string KeyName)
//这儿的KeyName是上面传下来的表名的吗????这儿搞乱我了,不知是关键字还是表名
{
string TableName="["+dt.TableName+"]";
foreach(DataRow dr in dt.Rows)
{
insertRow(dr,TableName,KeyName);//这儿又是表名,关键字?
}
}
#endregion //--------------------------下面看不明,希望大家给点注释---------------------------
insertRow#region insertRow
private static void insertRow(DataRow dr,string TableName,string KeyName)
{
string InsertSql = "Insert into {0}({1}) values({2})";
SqlCommand sqlcom=new SqlCommand();
DataTable dtb=dr.Table ;
StringBuilder insertValues = new StringBuilder();
StringBuilder cloumn_list = new StringBuilder();
for (int k=0; k<dr.Table.Columns.Count; ++k)
{
//just for genentae,
if (dtb.Columns[k].ColumnName==KeyName) continue;
System.Data.IDataParameter iparam=new SqlParameter();
iparam.ParameterName = "@"+ dtb.Columns[k].ColumnName;
iparam.DbType = GetDbType(dtb.Columns[k].DataType);
iparam.Value = dr[k];
sqlcom.Parameters .Add(iparam); cloumn_list.Append(dtb.Columns[k].ColumnName);
insertValues.Append("@"+dtb.Columns[k].ColumnName); cloumn_list.Append(",");
insertValues.Append(",");
}
string cols=cloumn_list.ToString();
cols=cols.Substring(0,cols.Length -1); string values=insertValues.ToString();
values=values.Substring(0,values.Length -1);
string sql = string.Format(InsertSql, TableName,cols ,values);
sqlcom.CommandText =sql;
try
{
ExecCommand(sqlcom);
}
catch(Exception ex)
{
throw ex;
}
}
#endregion
http://singlepine.cnblogs.com/articles/255374.html?Pending=true#Post//--------------------------------------------------------------
GetDataSet#region GetDataSet
public static DataSet GetDataSet(string sql)
{
SqlDataAdapter sda =new SqlDataAdapter(sql,ConnectionString);
DataSet ds=new DataSet();
sda.Fill(ds);
return ds;
}
#endregion
//--------------------------------------------------------------
Insert#region Insert
private void InsertUserInfo()
{
DataTable dt=ds.Tables[0];
dt.TableName="UserInfo";
DataRow dr=dt.NewRow();
dr["LoginName"]=this.txtUserName.Value;
dr["Pass"]=this.txtPassword.Value;
dr["NickName"]=this.txtNickName.Value;
dr["UserType"]=1;
dr["IsActive"]=false;
dr["RegisterDate"]=System.DateTime.Now;
dt.Rows.Add(dr);
dt.AcceptChanges();
DataHelper.InsertTable(dt,dt.TableName);
//这儿的两个参数?是否传到下面的(2)?
}
#endregion
//--------------------------------------------------------------
InsertTable#region InsertTable
//用于主键是数据库表名+ID类型的(1)
public static void InsertTable(DataTable dt)
{
string TableName="["+dt.TableName+"]";
string KeyName=dt.TableName+"ID";
foreach(DataRow dr in dt.Rows)
{
insertRow(dr,TableName,KeyName);
}
}
//用于主键是任意类型的(2)
public static void InsertTable(DataTable dt,string KeyName)
//这儿的KeyName是上面传下来的表名的吗????这儿搞乱我了,不知是关键字还是表名
{
string TableName="["+dt.TableName+"]";
foreach(DataRow dr in dt.Rows)
{
insertRow(dr,TableName,KeyName);//这儿又是表名,关键字?
}
}
#endregion //--------------------------下面看不明,希望大家给点注释---------------------------
insertRow#region insertRow
private static void insertRow(DataRow dr,string TableName,string KeyName)
{
string InsertSql = "Insert into {0}({1}) values({2})";
SqlCommand sqlcom=new SqlCommand();
DataTable dtb=dr.Table ;
StringBuilder insertValues = new StringBuilder();
StringBuilder cloumn_list = new StringBuilder();
for (int k=0; k<dr.Table.Columns.Count; ++k)
{
//just for genentae,
if (dtb.Columns[k].ColumnName==KeyName) continue;
System.Data.IDataParameter iparam=new SqlParameter();
iparam.ParameterName = "@"+ dtb.Columns[k].ColumnName;
iparam.DbType = GetDbType(dtb.Columns[k].DataType);
iparam.Value = dr[k];
sqlcom.Parameters .Add(iparam); cloumn_list.Append(dtb.Columns[k].ColumnName);
insertValues.Append("@"+dtb.Columns[k].ColumnName); cloumn_list.Append(",");
insertValues.Append(",");
}
string cols=cloumn_list.ToString();
cols=cols.Substring(0,cols.Length -1); string values=insertValues.ToString();
values=values.Substring(0,values.Length -1);
string sql = string.Format(InsertSql, TableName,cols ,values);
sqlcom.CommandText =sql;
try
{
ExecCommand(sqlcom);
}
catch(Exception ex)
{
throw ex;
}
}
#endregion
解决方案 »
- Datalist控件中的SelectTemplate模板中的Label控件无法绑定数据
- 急: 多文件上传时,无法遍历遍历File表单元素
- 如何让程序执行完上一段代码后在继续执行下面的代码
- 这个弹出对话框的特效在后台.cs怎么实现? 在线散分..
- (Asp.Net2.0下使用NHibernate-1.2.0)c# NHibernate配置问题
- COOKIE:怎么通过COOKIE判断IP失效!比如一天内只允许投3票,应该怎么写!
- 图片切换特效的问题
- ##--如何设置 prompt('input some thing!','')弹出来的位置--##
- 两个字符串怎么用大于号
- 如何将DropDownList中的重复项只留出一个
- 超级难的问题,估计很难有人能解决吧?
- [求助]请问怎么打开开源的项目
private static void insertRow(DataRow dr,string TableName,string KeyName)
{
string InsertSql = "Insert into {0}({1}) values({2})";
SqlCommand sqlcom=new SqlCommand();
DataTable dtb=dr.Table ;
StringBuilder insertValues = new StringBuilder();
StringBuilder cloumn_list = new StringBuilder();
for (int k=0; k<dr.Table.Columns.Count; ++k)
{
//just for genentae,
if (dtb.Columns[k].ColumnName==KeyName) continue;
System.Data.IDataParameter iparam=new SqlParameter();
iparam.ParameterName = "@"+ dtb.Columns[k].ColumnName;
iparam.DbType = GetDbType(dtb.Columns[k].DataType);
iparam.Value = dr[k];
sqlcom.Parameters .Add(iparam); cloumn_list.Append(dtb.Columns[k].ColumnName);
insertValues.Append("@"+dtb.Columns[k].ColumnName); cloumn_list.Append(",");
insertValues.Append(",");
}
string cols=cloumn_list.ToString();
cols=cols.Substring(0,cols.Length -1); string values=insertValues.ToString();
values=values.Substring(0,values.Length -1);
string sql = string.Format(InsertSql, TableName,cols ,values);
sqlcom.CommandText =sql;
try
{
ExecCommand(sqlcom);
}
catch(Exception ex)
{
throw ex;
}
}
#endregion
public static DataSet GetDataSet(string sql)
{
//这个方法是传入sql语句,返回dataset
}
private void InsertUserInfo()
{
DataTable dt=ds.Tables[0];
DataHelper.InsertTable(dt,dt.TableName);
//这是测试代码,实际用的时候调用方法InsertTable,传入datatable,和datatable主键名字就可以了,是我写错了,写成dt.TableName,更正
}
//用于主键是数据库表名+ID类型的(1),就是数据库结构是这样的,数据表叫user,主渐id叫userid
public static void InsertTable(DataTable dt)
{
string TableName="["+dt.TableName+"]";
string KeyName=dt.TableName+"ID";
foreach(DataRow dr in dt.Rows)
{
insertRow(dr,TableName,KeyName);
}
}
//用于主键是任意类型的(2)
public static void InsertTable(DataTable dt,string KeyName)//这儿的KeyName是表关键字
{
string TableName="["+dt.TableName+"]";
foreach(DataRow dr in dt.Rows)
{
insertRow(dr,TableName,KeyName);//TableName是表名,KeyName是关键字
}
}
private static void insertRow(DataRow dr,string TableName,string KeyName)
{
//主要功能是通过传入的datatalbe来构造sql语句,包括sql的字段和字段值,然后用string.Format方法赋值,构造出一个带参数的sql语句,然后存入数据库
}blog因为时间原因没有给出注释表示抱歉,以后我会抽空完善和补上注释