1...是因为生成Update和delete语句的时候要用到,而且生成其实有些垃圾代码,建议在生成的基础上修改一下如下:
自动生成如下:
this.oleDbDeleteCommand1.CommandText = "DELETE FROM student WHERE (stuno = ?) AND (address = ? OR ? IS NULL AND address I" +
"S NULL) AND (name = ? OR ? IS NULL AND name IS NULL) AND (sex = ? OR ? IS NULL A" +"ND sex IS NULL)";
this.oleDbDeleteCommand1.Connection = this.oleDbConnection1;
this.oleDbDeleteCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Original_stuno", System.Data.OleDb.OleDbType.Integer, 4, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "stuno", System.Data.DataRowVersion.Original, null));
this.oleDbDeleteCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Original_address", System.Data.OleDb.OleDbType.Integer, 4, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "address", System.Data.DataRowVersion.Original, null));
this.oleDbDeleteCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Original_address1", System.Data.OleDb.OleDbType.Integer, 4, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "address", System.Data.DataRowVersion.Original, null));
this.oleDbDeleteCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Original_name", System.Data.OleDb.OleDbType.Integer, 4, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "name", System.Data.DataRowVersion.Original, null));
this.oleDbDeleteCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Original_name1", System.Data.OleDb.OleDbType.Integer, 4, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "name", System.Data.DataRowVersion.Original, null));
this.oleDbDeleteCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Original_sex", System.Data.OleDb.OleDbType.Integer, 4, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "sex", System.Data.DataRowVersion.Original, null));
this.oleDbDeleteCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Original_sex1", System.Data.OleDb.OleDbType.Integer, 4, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "sex", System.Data.DataRowVersion.Original, null));
简化如下:只留下主关键字,UPdate也一样:
this.oleDbDeleteCommand1.CommandText = "DELETE FROM student WHERE (stuno = ?) 
this.oleDbDeleteCommand1.Connection = this.oleDbConnection1;
this.oleDbDeleteCommand1.Parameters.Add(new System.Data.OleDb.OleDbParameter("Original_stuno", System.Data.OleDb.OleDbType.Integer, 4, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "stuno", System.Data.DataRowVersion.Original, null));2.用Datatable 中的select ,还有其它的如find,rowfilter都可以实现这方面的功能
3.代码如下:
this.dataGrid1.SetDataBinding(dt,"custumers");

解决方案 »

  1.   

    SqlCommandBuilder db=new SqlCommandBuilder()不太好用,代码也不清晰,建议自己生成SQL语句!ExecuteNonQuery()问题2,有许多种解决办法,同样写SQL语句比较简单,简单例子:修改密码
    string updatepwdstr = "UPDATE ptf_user SET " 
    + "password = '" + TextBox_newpwd.Text.Trim() + "',"
    + " WHERE userid = " 
    + "'" + Label_userid.Text + "'";

    SqlCommand updatepwdcmd = new SqlCommand(updatepwdstr,myConnection);
    int rncp = updatepwdcmd.ExecuteNonQuery();问题3:myConnection = new System.Data.SqlClient.SqlConnection
    (System.Configuration.ConfigurationSettings.AppSettings["connectionstring"]);
    myConnection.Open(); myDataSet = new System.Data.DataSet();
    myDataSet.CaseSensitive = true; myCommand = new System.Data.SqlClient.SqlCommand();
    myCommand.Connection = myConnection; myCommand.CommandText = "select a,b,c from ptf_ptfinfo"; dataAdapter = new System.Data.SqlClient.SqlDataAdapter();
    dataAdapter.SelectCommand = myCommand;
    dataAdapter.TableMappings.Add("Table","ptf_ptfinfo");
    dataAdapter.Fill(myDataSet); DataGrid_undispose.DataSource = myDataSet.Tables["ptf_ptfinfo"].DefaultView;
    DataGrid_undispose.DataBind();