提示ExecuteNonQuery: CommandText 属性尚未初始化,是什么原因?

//
SqlConnection sqlConn;
SqlCommand cmdStr;
string sqlStr;
int count;
private void button2_Click(object sender, EventArgs e)
{
string strConn = "server=127.0.0.1;database=ufdata_001_2014;uid=sa;pwd=cs,./123";
sqlConn = new SqlConnection(strConn);
sqlConn.Open();
cmdStr = new SqlCommand(sqlStr,sqlConn);
for (int i = 0; i < listView1.Items.Count; i++)
{
sqlStr = "insert into Test (t_id,t_name,t_time,t_price) values (t_id = @t_id,t_name = @t_name,t_time = @t_time,t_price = @t_price)";
cmdStr.Parameters.Add("@t_id", SqlDbType.Int);
cmdStr.Parameters.Add("@t_name", SqlDbType.NVarChar,50);
cmdStr.Parameters.Add("@t_time", SqlDbType.DateTime);
cmdStr.Parameters.Add("@t_price", SqlDbType.Money);
cmdStr.Parameters["@t_id"].Value = listView1.Items[i].SubItems[0].Text;
cmdStr.Parameters["@t_name"].Value = " + listView1.Items[i].SubItems[1].Text + ";
cmdStr.Parameters["@t_time"].Value = listView1.Items[i].SubItems[2].Text;
cmdStr.Parameters["@t_price"].Value = listView1.Items[i].SubItems[3].Text;
}
if ( cmdStr.ExecuteNonQuery()> 0)

MessageBox.Show("新增记录成功!");
sqlConn.Close();
}
else
{
MessageBox.Show("新增失败!");
}
}
为什么提示这个,才学,不太懂,谢谢!

交互式爱情
浏览 900回答 2
2回答

aluckdog

cmdStr.CommandText=sqlStr;这里不指定的话,数据库不知道 你要执行什么sql语句

心有法竹

你这段代码由两个问题,sqlStr没有正确传递到cmdStr对象中,这也是你的程序报错的原因。For循环这个逻辑问题很大,具体可以看我给你的代码注释。SqlConnection&nbsp;sqlConn;&nbsp;SqlCommand&nbsp;cmdStr;&nbsp;string&nbsp;sqlStr;&nbsp;int&nbsp;count;private&nbsp;void&nbsp;button2_Click(object&nbsp;sender,&nbsp;EventArgs&nbsp;e){&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;strConn&nbsp;=&nbsp;"server=127.0.0.1;database=ufdata_001_2014;uid=sa;pwd=cs,./123";&nbsp;&nbsp;&nbsp;&nbsp;sqlStr&nbsp;=&nbsp;sqlStr&nbsp;=&nbsp;"insert&nbsp;into&nbsp;Test&nbsp;(t_id,t_name,t_time,t_price)&nbsp;values&nbsp;(t_id&nbsp;=&nbsp;@t_id,t_name&nbsp;=&nbsp;@t_name,t_time&nbsp;=&nbsp;@t_time,t_price&nbsp;=&nbsp;@t_price)";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sqlConn&nbsp;=&nbsp;new&nbsp;SqlConnection(strConn);&nbsp;sqlConn.Open();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmdStr&nbsp;=&nbsp;new&nbsp;SqlCommand(sqlStr,&nbsp;sqlConn);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;这个For循环本来是想给Command对象赋值,但是你这样一循环,最后只能是ListView的最后一行插入数据库了&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;listView1.Items.Count;&nbsp;i++)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmdStr.Parameters.Add("@t_id",&nbsp;SqlDbType.Int);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmdStr.Parameters.Add("@t_name",&nbsp;SqlDbType.NVarChar,&nbsp;50);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmdStr.Parameters.Add("@t_time",&nbsp;SqlDbType.DateTime);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmdStr.Parameters.Add("@t_price",&nbsp;SqlDbType.Money);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmdStr.Parameters["@t_id"].Value&nbsp;=&nbsp;listView1.Items[i].SubItems[0].Text;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmdStr.Parameters["@t_name"].Value&nbsp;=&nbsp;"&nbsp;+&nbsp;listView1.Items[i].SubItems[1].Text&nbsp;+&nbsp;";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmdStr.Parameters["@t_time"].Value&nbsp;=&nbsp;listView1.Items[i].SubItems[2].Text;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmdStr.Parameters["@t_price"].Value&nbsp;=&nbsp;listView1.Items[i].SubItems[3].Text;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;如果想把所有的行都插入数据库,你得把下面的cmdStr.ExecuteNoQuery()移到这里来。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;去掉MessageBox逻辑,不然会每次都提示你。&nbsp;待跳出For循环后关闭连接sqlConn.Close().&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;请看上面的解释&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(cmdStr.ExecuteNonQuery()&nbsp;>&nbsp;0)&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;//MessageBox.Show("新增记录成功!");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sqlConn.Close();&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;//MessageBox.Show("新增失败!");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}}
打开App,查看更多内容
随时随地看视频慕课网APP