麻烦各位帮我看看下面的代码哪儿有问题,老是报错“未将对象引用设置到对象的实例”
public void baocun()
{
DataGridView mydataGridView = new DataGridView();
mydataGridView = dataGridView1; try
{
DataTable dt = (DataTable)mydataGridView.DataSource;
foreach (DataRow dr in dt.Rows)
{
switch (dr.RowState)
{
case DataRowState.Added: string xx = "";
string aa = ""; string KZT = null;
string sql = "select columncode,columntype from KZT";
OleDbDataAdapter dat = new OleDbDataAdapter(sql, oleDbConnection1);
DataSet dst = new DataSet();
dat.Fill(dst, "tabledetail");
for (int i = 0; i < dst.Tables[0].Rows.Count; i++)
{
xx += "," + dst.Tables[0].Rows[i][0].ToString();
aa += "," + "'" + dr[i].ToString() + "'";
} string scmd = "insert into " + KZT + " ( " + xx + " ) values ( " + aa + ")";
OleDbCommand myCommand = new OleDbCommand(scmd, oleDbConnection1);
if (oleDbConnection1.State == System.Data.ConnectionState.Closed)
{
oleDbConnection1.Open();//打开数据库连接
}
myCommand.ExecuteNonQuery();
//判断连接是否需要关闭
if (oleDbConnection1.State == System.Data.ConnectionState.Closed)
{
//oleDbConnection1.Close();//关闭
}
break;
}
MessageBox.Show("保存数据成功!");
}
}
catch (Exception ex)
{
MessageBox.Show("保存数据失败,请重试!" + ex.Message);
return;
}
}
public void baocun()
{
DataGridView mydataGridView = new DataGridView();
mydataGridView = dataGridView1; try
{
DataTable dt = (DataTable)mydataGridView.DataSource;
foreach (DataRow dr in dt.Rows)
{
switch (dr.RowState)
{
case DataRowState.Added: string xx = "";
string aa = ""; string KZT = null;
string sql = "select columncode,columntype from KZT";
OleDbDataAdapter dat = new OleDbDataAdapter(sql, oleDbConnection1);
DataSet dst = new DataSet();
dat.Fill(dst, "tabledetail");
for (int i = 0; i < dst.Tables[0].Rows.Count; i++)
{
xx += "," + dst.Tables[0].Rows[i][0].ToString();
aa += "," + "'" + dr[i].ToString() + "'";
} string scmd = "insert into " + KZT + " ( " + xx + " ) values ( " + aa + ")";
OleDbCommand myCommand = new OleDbCommand(scmd, oleDbConnection1);
if (oleDbConnection1.State == System.Data.ConnectionState.Closed)
{
oleDbConnection1.Open();//打开数据库连接
}
myCommand.ExecuteNonQuery();
//判断连接是否需要关闭
if (oleDbConnection1.State == System.Data.ConnectionState.Closed)
{
//oleDbConnection1.Close();//关闭
}
break;
}
MessageBox.Show("保存数据成功!");
}
}
catch (Exception ex)
{
MessageBox.Show("保存数据失败,请重试!" + ex.Message);
return;
}
}
DataTable dt = (DataTable)mydataGridView.DataSource;
mydataGridView.DataSource不能强制转换成DataTable吧foreach (DataRow dr in dt.Rows)语法是对的,我们这么用都没有问题
/// <summary>
/// 在DataTable中根据指定的字段和其值返回第一个符合的DataRow,找不到匹配的行则返回null
/// </summary>
public static DataRow FindRow(ref DataTable dataTab, string colName, string strVal)
{
bool isFound = false;
DataRow row2 = null;
foreach (DataRow row1 in dataTab.Rows)
{
if (row1[colName].ToString() == strVal)
{
isFound = true;
row2 = row1;
break;
}
}
if (isFound)
return row2;
else
return null;
}