我建立了一个窗体 ,在里面有dataGridView与数据库相连,我又写了一个连接类,主要内容如下:
//向控件dataGridView 中添加数据库中的数据
public DataTable dataGridViewConn(string strSql, string tableName)
{
try
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Data Source = .\\sqlexpress;Initial Catalog =mySchool;Integrated Security=True";
SqlCommand cmd = new SqlCommand(strSql, conn);
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = cmd;
conn.Open();
DataTable table = new DataTable();
DataSet ds = new DataSet();
adapter.Fill(ds, tableName);
conn.Close();
table = ds.Tables[tableName];
return table;
}
catch (Exception e)
{
throw new Exception(e.Message);
}
finally
{
closeConn();
}
}
在实现时的代码 如下:
//用选择的性别 进行筛选
DataTable table = new DataTable();
String strSql = "select LoginId as 用户名,StudentName as 姓名,StudentNO as 学号,
Sex as 性别 from Student where Sex = '" + sex + "'";
table = conn.dataGridViewConn(strSql, tableName);
dataGridView1.DataSource = table.DefaultView;但是我如果要在DefaultView中直接修改 并按保存按钮 就可以修改,在按钮里这样写就不行了 如下:
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
adapter.Update(ds, "Student");
因为这里用到的adapter是在筛选按钮里的adapter 所以不行=======================================================================================================
以上就是我的问题 ,请朋友们帮忙解决一下,
在这先谢谢了 。
//向控件dataGridView 中添加数据库中的数据
public DataTable dataGridViewConn(string strSql, string tableName)
{
try
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Data Source = .\\sqlexpress;Initial Catalog =mySchool;Integrated Security=True";
SqlCommand cmd = new SqlCommand(strSql, conn);
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = cmd;
conn.Open();
DataTable table = new DataTable();
DataSet ds = new DataSet();
adapter.Fill(ds, tableName);
conn.Close();
table = ds.Tables[tableName];
return table;
}
catch (Exception e)
{
throw new Exception(e.Message);
}
finally
{
closeConn();
}
}
在实现时的代码 如下:
//用选择的性别 进行筛选
DataTable table = new DataTable();
String strSql = "select LoginId as 用户名,StudentName as 姓名,StudentNO as 学号,
Sex as 性别 from Student where Sex = '" + sex + "'";
table = conn.dataGridViewConn(strSql, tableName);
dataGridView1.DataSource = table.DefaultView;但是我如果要在DefaultView中直接修改 并按保存按钮 就可以修改,在按钮里这样写就不行了 如下:
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
adapter.Update(ds, "Student");
因为这里用到的adapter是在筛选按钮里的adapter 所以不行=======================================================================================================
以上就是我的问题 ,请朋友们帮忙解决一下,
在这先谢谢了 。
首先建议讲SqlDataAdater对象写在类成员里,在其他时间中使用DataGridView是再实例化,很方便
DataSet实例化对象写在类成员中实现筛选
{
string sql = "select * from table_name"; //选查询出所有学员信息
//判断控件中的性别
switch(cboSex.Text) //假设使用comboBox控件进行筛选
{
case "男":
sql += "where Sex = '男'";
break;
case "女":
sql += "where Sex = '女'";
break;
default:
break;
}
//讲原有数据先进行清空
dataSet对象.Tables["table_name"].Clear();
//重新指定SqlDataAdapter查询用SQL语句
dataAdapter对象.SelectCommand.CommandText = sql;
//重新填充数据集
dataAdapter对象.Fill(dataSet对象,"table_name");
}
还有你说保存修改的问题,代码看着没有问题,你只是把SqlDataAdapter对象写到类成员里
你只是把SqlDataAdapter对象写到类成员里谢谢解答