c#写的批量插入,写入的正确的记录条数,但是每一条记录里的字段都是空的(NULL)。
代码如下using (MySqlConnection conn = new MySqlConnection(connectionString))
{
conn.Open();
MySqlDataAdapter sd = new MySqlDataAdapter();
sd.SelectCommand = new MySqlCommand("select url_link,url_name from urltest where 1=0", conn);
sd.InsertCommand = new MySqlCommand("insert into urltestt (url_link,url_name) "
+ " values (url_link,url_name);", conn);
sd.InsertCommand.Parameters.Add("@url_link", MySqlDbType.VarChar, 255, "urladd");
sd.InsertCommand.Parameters.Add("@url_name", MySqlDbType.VarChar, 255, "urlname");
sd.InsertCommand.UpdatedRowSource = UpdateRowSource.None;
sd.UpdateBatchSize = 0;
DataSet dataset = new DataSet();
sd.Fill(dataset); Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>.*?)</a>");//正则表达式取得连接和标题
Regex regTag = new Regex(@"<[^>]*>");
MatchCollection mc = reg.Matches(htmltext);//htmltext为获得的网页源码
foreach (Match m in mc)
{
string urladd = GetAbsolutePath(urllink, m.Groups["url"].Value);//GetAbsolutePath函数是相对地址转换成绝对地址
string urlname = regTag.Replace(m.Groups["text"].Value.Trim(), "");
object[] row = {urladd,urlname};
this.richTextBox1.Text += row[0].ToString();
dataset.Tables[0].Rows.Add(row);
}
sd.Update(dataset.Tables[0]);
this.label1.Text = dataset.Tables[0].Rows[0][0].ToString()+"------ " + dataset.Tables[0].Rows[0][1].ToString();
//因为一直插入的是空数据,所以在这个让dataset.tables[0]里第一条数据显示,结果是符合要求的正常数据。
dataset.Tables[0].Clear();
sd.Dispose();
dataset.Dispose();
conn.Close();
}
代码如下using (MySqlConnection conn = new MySqlConnection(connectionString))
{
conn.Open();
MySqlDataAdapter sd = new MySqlDataAdapter();
sd.SelectCommand = new MySqlCommand("select url_link,url_name from urltest where 1=0", conn);
sd.InsertCommand = new MySqlCommand("insert into urltestt (url_link,url_name) "
+ " values (url_link,url_name);", conn);
sd.InsertCommand.Parameters.Add("@url_link", MySqlDbType.VarChar, 255, "urladd");
sd.InsertCommand.Parameters.Add("@url_name", MySqlDbType.VarChar, 255, "urlname");
sd.InsertCommand.UpdatedRowSource = UpdateRowSource.None;
sd.UpdateBatchSize = 0;
DataSet dataset = new DataSet();
sd.Fill(dataset); Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>.*?)</a>");//正则表达式取得连接和标题
Regex regTag = new Regex(@"<[^>]*>");
MatchCollection mc = reg.Matches(htmltext);//htmltext为获得的网页源码
foreach (Match m in mc)
{
string urladd = GetAbsolutePath(urllink, m.Groups["url"].Value);//GetAbsolutePath函数是相对地址转换成绝对地址
string urlname = regTag.Replace(m.Groups["text"].Value.Trim(), "");
object[] row = {urladd,urlname};
this.richTextBox1.Text += row[0].ToString();
dataset.Tables[0].Rows.Add(row);
}
sd.Update(dataset.Tables[0]);
this.label1.Text = dataset.Tables[0].Rows[0][0].ToString()+"------ " + dataset.Tables[0].Rows[0][1].ToString();
//因为一直插入的是空数据,所以在这个让dataset.tables[0]里第一条数据显示,结果是符合要求的正常数据。
dataset.Tables[0].Clear();
sd.Dispose();
dataset.Dispose();
conn.Close();
}
MySqlCommandBuilder cb = new MySqlCommandBuilder(sd);
sd.InsertCommand = cb.GetInsertCommand();
依然不能解决问题,实际上,sd.Update(dataset.Tables[0]);是正常的执行了的,只是里面的数据有问题
应该是
sd.InsertCommand.Parameters.Add("@url_link", MySqlDbType.VarChar, 255, "url_link");