protected void Button1_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt=fang();
string strConn = "server=.;database=HY_SIMS;uid=sa;pwd=123";
SqlConnection con = new SqlConnection(strConn);
con.Open();
string str = TextBox1.Text;
int id =Convert.ToInt32(TextBox2.Text);
model.aname = str;
model.id = id;
StringBuilder strSql = new StringBuilder();
strSql.Append("insert into aa(");
for (int i = 0; i < dt.Rows.Count; i++)
{
strSql.Append(dt.Rows[i][0].ToString());
if (i < (dt.Rows.Count - 1))
{
strSql.Append(",");
}}//strSql.Append("vAdminRoleNumber,vAdminRoleName)");
//strSql.Append(" ) values ("+"'" );
//strSql.Append(o);
//strSql.Append("','");
//strSql.Append(str);
//strSql.Append("' )");
strSql.Append(" ) values ( ");
string zi=null;
for (int i = 0; i < dt.Rows.Count; i++)
{
zi="@"+dt.Rows[i][0].ToString();
strSql.Append("@"+dt.Rows[i][0].ToString());
if (i < (dt.Rows.Count - 1))
{
strSql.Append(",");
}}
strSql.Append(")");
SqlParameter[] par = new SqlParameter[dt.Rows.Count];
string typ=null;
for (int w = 0; w < dt.Rows.Count; w++)
{
string str1 = dt.Rows[w][2].ToString().ToLower();
if (str1 == "int")
{
typ = "Int";
}
if (str1 == "varchar")
{
typ = "VarChar";
}
}
for (int j = 0; j < dt.Rows.Count; j++)
{
//string str1=dt.Rows[j][2].ToString().Substring(0,1);
//string str2=dt.Rows[j][2].ToString().Substring(1,dt.Rows[j][2].ToString().Length-1);
//string typ=str1.ToUpper()+str2;
SqlDbType t = (SqlDbType)Enum.Parse(typeof(SqlDbType), typ);
//int size = Convert.ToInt32(dt.Rows[j][1].ToString());
par[j] = new SqlParameter("@"+dt.Rows[j][0].ToString(), t, Convert.ToInt32(dt.Rows[j][1].ToString()));
par[j].Value = model + "." + dt.Rows[j]["name"].ToString();
Response.Write(Convert.ToInt32(dt.Rows[j][1].ToString()));
Response.Write(par[j].Value);}
SqlParameter[] parmeters ={
new SqlParameter("@id", SqlDbType.Int,10),
new SqlParameter("@aname", SqlDbType.VarChar,100)
};
parmeters[0].Value = model.id;
parmeters[1].Value = model.aname;
//SqlParameter[] parameters = {
// new SqlParameter("@aname", SqlDbType.VarChar,50),
// new SqlParameter("@vAdminRoleName", SqlDbType.VarChar,20)
// };
//parameters[0].Value = model.vAdminRoleNumber;
//parameters[1].Value = model.vAdminRoleName;
//Response.Write(strSql.ToString());
SqlCommand cmd = new SqlCommand();
int b=-1;
try
{
PrepareCommand(cmd, con, null, strSql.ToString(), par);
//Response.Write(strSql.ToString());
for (int a = 0; a < par.Length; a++)
{
Response.Write(par[a].Value+" ");
}
b = cmd.ExecuteNonQuery();
//cmd.Parameters.Clear();
//return rows;
}
catch (System.Data.SqlClient.SqlException c)
{
throw c;
}
if (b > 0)
{
Response.Write("成功");
}
else if (b < 0)
{
Response.Write("shibai");
}}
public void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, string cmdText, SqlParameter[] cmdParms)
{
if (conn.State != ConnectionState.Open)
conn.Open();
cmd.Connection = conn;
cmd.CommandText = cmdText;
if (trans != null)
cmd.Transaction = trans;
cmd.CommandType = CommandType.Text;//cmdType;
if (cmdParms != null)
{
foreach (SqlParameter parameter in cmdParms)
{
//Response.Write(cmdParms);
if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
(parameter.Value == null))
{
parameter.Value = DBNull.Value;
}
cmd.Parameters.Add(parameter);
//Response.Write(parameter.ToString());
}
}}
写到这里了,但是现在生成的SQL语句是不对的。在将 varchar 值 'MODEL.aa.i' 转换成数据类型 int 时失败。
这样一个错误,谁能帮忙看看那

解决方案 »

  1.   

    par[j].Value = model + "." + dt.Rows[j]["name"].ToString(); 
    我终于找到错误了,但是怎么解决?这样赋值给数组的是字符串,我想get实体的值之后在赋值给数组,怎么做到?
      

  2.   

    最好用Xml字段了,而且有助于将来用XPath进行查找~
      

  3.   

    //PropertyInfo[] obj = model.GetType().GetProperties();
            //object o = null;
            //foreach (PropertyInfo iteminfo in obj)
            //{
               
            //    o = iteminfo.GetValue(model, null);        //}
    这样可以动态的取到实体里边的值···但是我怎么赋值给这个par[j].Value 数组???
      

  4.   

    dt = da.Fill(select top 0 * from xxx);
    row = dt.NewRow()
    row["Name"] = "xxxx";
    dt.Rows.Add(row);
    da.Update(dt);