亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

C C#
交互式愛情 2021-12-02 15:11:55
//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("新增失敗!");}}為什么提示這個,才學,不太懂,謝謝!
查看完整描述

2 回答

?
aluckdog

TA貢獻1847條經驗 獲得超7個贊

cmdStr.CommandText=sqlStr;這里不指定的話,數據庫不知道 你要執行什么sql語句

查看完整回答
反對 回復 2021-12-06
?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

你這段代碼由兩個問題,

  • sqlStr沒有正確傳遞到cmdStr對象中,這也是你的程序報錯的原因。

  • For循環這個邏輯問題很大,具體可以看我給你的代碼注釋。


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";    sqlStr = 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)"    sqlConn = new SqlConnection(strConn); sqlConn.Open();     cmdStr = new SqlCommand(sqlStr, sqlConn);      // 這個For循環本來是想給Command對象賦值,但是你這樣一循環,最后只能是ListView的最后一行插入數據庫了    for (int i = 0; i < listView1.Items.Count; i++)             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;        // 如果想把所有的行都插入數據庫,你得把下面的cmdStr.ExecuteNoQuery()移到這里來。        // 去掉MessageBox邏輯,不然會每次都提示你。 待跳出For循環后關閉連接sqlConn.Close().                    // 請看上面的解釋     if (cmdStr.ExecuteNonQuery() > 0)    //MessageBox.Show("新增記錄成功!");         sqlConn.Close();    }    else    //MessageBox.Show("新增失敗!");     }}


查看完整回答
反對 回復 2021-12-06
  • 2 回答
  • 0 關注
  • 1371 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號