可能重复: 列表框和数据库问题
什么是将数据插入到数据库中的最好方法是什么?
这是我有什么,但它是错误的。
cmd.CommandText =INSERT INTO klant(klant_id,NAAM,voornaam)VALUES(@参数1,@参数2,@参数3);
cmd.Parameters.Add(新的SqlParameter(@参数1,klantId));
cmd.Parameters.Add(新的SqlParameter(@参数2,klantNaam));
cmd.Parameters.Add(新的SqlParameter(@参数3,klantVoornaam));
该功能将数据添加到列表框中
http://www.pictourl.com/viewer/37e4edcf
而不是到数据库中。
http://www.pictourl.com/viewer/4d5721fc
全功能:
私人无效Form1_Load的(对象发件人,EventArgs的)
{
CONN2 =新的SqlConnection();
conn2.ConnectionString = ConfigurationManager.ConnectionStrings [connSpionshopString]的ConnectionString。
}
私人无效button2_Click(对象发件人,EventArgs的)
{
字符串SQLCMD =SELECT NAAM,voornaam,klant_id从klant;;
的SqlCommand CMD =新的SqlCommand(SQLCMD,CONN2);
conn2.Open();
使用(SqlDataReader的读卡器= cmd.ExecuteReader())
{
而(reader.Read())
{
listBox2.Items.Add(reader.GetString(0)++ reader.GetString(1)+(+ reader.GetInt16(2)+));
}
}
conn2.Close();
}
私人无效button4_Click(对象发件人,EventArgs的)
{
INT klantId = Convert.ToInt32(textBox1.Text);
字符串klantNaam = textBox2.Text;
字符串klantVoornaam = textBox3.Text;
conn2.Open();
的SqlCommand CMD =新的SqlCommand();
cmd.Connection = CONN2;
cmd.CommandText =INSERT INTO klant(klant_id,NAAM,voornaam)VALUES(@参数1,@参数2,@参数3);
cmd.Parameters.AddWithValue(@参数1,klantId);
cmd.Parameters.AddWithValue(@参数2,klantNaam);
cmd.Parameters.AddWithValue(@参数3,klantVoornaam);
cmd.ExecuteNonQuery();
conn2.Close();
}
解决方案
尝试确认的数据类型(的SqlDbType )的数据库中的每个参数,这样来做;
使用(SqlConnection的连接=新的SqlConnection(ConfigurationManager.ConnectionStrings [connSpionshopString。的ConnectionString))
{
connection.Open();
字符串SQL =INSERT INTO klant(klant_id,NAAM,voornaam)VALUES(@参数1,@参数2,@参数3);
的SqlCommand CMD =新的SqlCommand(SQL,连接);
cmd.Parameters.Add(@参数1,SqlDbType.Int)。价值= klantId
cmd.Parameters.Add(@参数2,SqlDbType.Varchar,50)。价值= klantNaam;
cmd.Parameters.Add(@参数3,SqlDbType.Varchar,50)。价值= klantVoornaam;
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
}
Possible Duplicate: ListBox and Database issue
What's the best way to INSERT data into a database?
This is what I have but it's wrong..
cmd.CommandText = "INSERT INTO klant(klant_id,naam,voornaam) VALUES(@param1,@param2,@param3)";
cmd.Parameters.Add(new SqlParameter("@param1", klantId));
cmd.Parameters.Add(new SqlParameter("@param2", klantNaam));
cmd.Parameters.Add(new SqlParameter("@param3", klantVoornaam));
The function add data into the listBox
http://www.pictourl.com/viewer/37e4edcf
but not into the database..
http://www.pictourl.com/viewer/4d5721fc
The full function:
private void Form1_Load(object sender, EventArgs e)
{
conn2 = new SqlConnection();
conn2.ConnectionString = ConfigurationManager.ConnectionStrings["connSpionshopString"].ConnectionString;
}
private void button2_Click(object sender, EventArgs e)
{
string sqlCmd = "SELECT naam,voornaam,klant_id FROM klant;";
SqlCommand cmd = new SqlCommand(sqlCmd, conn2);
conn2.Open();
using(SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
listBox2.Items.Add(reader.GetString(0) + " " + reader.GetString(1) + " (" + reader.GetInt16(2) + ")");
}
}
conn2.Close();
}
private void button4_Click(object sender, EventArgs e)
{
int klantId = Convert.ToInt32(textBox1.Text);
string klantNaam = textBox2.Text;
string klantVoornaam = textBox3.Text;
conn2.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn2;
cmd.CommandText = "INSERT INTO klant(klant_id, naam, voornaam) VALUES(@param1,@param2,@param3)";
cmd.Parameters.AddWithValue("@param1", klantId);
cmd.Parameters.AddWithValue("@param2", klantNaam);
cmd.Parameters.AddWithValue("@param3", klantVoornaam);
cmd.ExecuteNonQuery();
conn2.Close();
}
解决方案
Try confirm the data type (SqlDbType) for each parameter in the database and do it this way;
using(SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["connSpionshopString"].ConnectionString))
{
connection.Open();
string sql = "INSERT INTO klant(klant_id,naam,voornaam) VALUES(@param1,@param2,@param3)";
SqlCommand cmd = new SqlCommand(sql,connection);
cmd.Parameters.Add("@param1", SqlDbType.Int).value = klantId
cmd.Parameters.Add("@param2", SqlDbType.Varchar, 50).value = klantNaam;
cmd.Parameters.Add("@param3", SqlDbType.Varchar, 50).value = klantVoornaam;
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
}