weird NullReferenceException error
本文关键字:error NullReferenceException weird | 更新日期: 2023-09-27 18:13:41
我遇到一个奇怪的错误:
mycon.Open();
adap = new SqlDataAdapter("SELECT * FROM Employee; Select * from Shift; select * from Has_Shift", mycon);
adap.TableMappings.Add("T1", "Employee");
adap.TableMappings.Add("T2", "Shift");
adap.TableMappings.Add("T3", "Has_Shift");
adap.Fill(ds);
DataRow newRow = ds.Tables["T1"].NewRow();
newRow["Name"] = textBox1.Text;
ds.Tables["T1"].Rows.Add(newRow);
adap.Update(ds);
mycon.Close();
有一个错误声明:
我不知道为什么会发生这种事。对象引用未设置为DataRow newRow行中对象的实例。
如果使用批处理SQL语句检索多个表并填充在DataSet中,第一个表使用指定的表名命名填充方法。后续表使用指定的名称命名填充方法加上一个从1开始递增的数字一个。例如,如果要运行以下代码:MSDN
所以代码是
adap = new SqlDataAdapter("SELECT * FROM Employee; Select * from Shift; select * from Has_Shift", mycon);
// second table name will be Employee +1
adap.TableMappings.Add("Employee1", "Shift");
// second table name will be Employee +2
adap.TableMappings.Add("Employee2", "Has_Shift");
// give Table name as below
adap.Fill(ds, "Employee");
DataRow newRow = ds.Tables["Employee"].NewRow();
newRow["Name"] = textBox1.Text;
ds.Tables["Employee"].Rows.Add(newRow);
adap.Update(ds);
mycon.Close();
由于这里我们在Fill方法中将"Employee"
作为表名,因此第一个表将是"Employee"
,第二个表将是"Employee1"
,第三个表将是"Employee2"
因为你没有给任何表名你的表名将是"table","Table1","Table2"…您可以将它们映射到正确的名称
adap.TableMappings.Add("Table", "Employee");
adap.TableMappings.Add("Table1", "Shift");
adap.TableMappings.Add("Table2", "Has_Shift");
和其余的代码将是
adap.Fill(ds);
DataRow newRow = ds.Tables["Employee"].NewRow();
newRow["Name"] = textBox1.Text;
ds.Tables["Employee"].Rows.Add(newRow);
adap.Update(ds);
mycon.Close();