//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條經(jīng)驗 獲得超7個贊
cmdStr.CommandText=sqlStr;這里不指定的話,數(shù)據(jù)庫不知道 你要執(zhí)行什么sql語句

心有法竹
TA貢獻1866條經(jīng)驗 獲得超5個贊
你這段代碼由兩個問題,
sqlStr沒有正確傳遞到cmdStr對象中,這也是你的程序報錯的原因。
For循環(huán)這個邏輯問題很大,具體可以看我給你的代碼注釋。
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循環(huán)本來是想給Command對象賦值,但是你這樣一循環(huán),最后只能是ListView的最后一行插入數(shù)據(jù)庫了 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; // 如果想把所有的行都插入數(shù)據(jù)庫,你得把下面的cmdStr.ExecuteNoQuery()移到這里來。 // 去掉MessageBox邏輯,不然會每次都提示你。 待跳出For循環(huán)后關(guān)閉連接sqlConn.Close(). } // 請看上面的解釋 if (cmdStr.ExecuteNonQuery() > 0) { //MessageBox.Show("新增記錄成功!"); sqlConn.Close(); } else { //MessageBox.Show("新增失敗!"); } } |
- 2 回答
- 0 關(guān)注
- 1357 瀏覽
添加回答
舉報
0/150
提交
取消