问 题
关于SQL语句中使用变量的问题

悬赏分:
10分

提问时间:
2008-09-05 17:01:34 
提问者:
fuping111
用C#写了一段向MySQL数据库里面插入一个Record的代码,
数据库里面的表名是meetingevents,代码如下:
System.Data.Odbc.OdbcConnection connection = new System.Data.Odbc.OdbcConnection( ConfigurationManager.ConnectionStrings["ConnectionOne"].ConnectionString );
System.Data.Odbc.OdbcCommand insertCommand = new System.Data.Odbc.OdbcCommand( "INSERT INTO meetingevents (Name, EventName, Room, AttendeeList, DateTime) VALUES (@Name, @EventName, @Room, @AttendeeList, @DateTime)", connection );
insertCommand.Parameters.AddWithValue( "Name", eventBox.Text );
insertCommand.Parameters.AddWithValue("EventName", eventBox.Text );
insertCommand.Parameters.AddWithValue( "Room", roomList.SelectedValue );
insertCommand.Parameters.AddWithValue( "AttendeeList", strAttendee );
insertCommand.Parameters.AddWithValue( "DateTime", Ca
其他答案
插入进去的数据的类型不匹配. 以int型和nvarchar型为例,其他的像日期型的你自己发挥.
问:
存储过程这样的:
CREATE PROCEDURE insertxuesheng @xuehao int,@xingming varchar,@banji varchar,@zhuanye varchar,@nianling int,@xingbie varchar AS
insert 学生(学号,姓名,班级,专业,年龄,性别) values(@xuehao,@xingming,@banji,@zhuanye,@nianling,@xingbie)
代码这样的:
SqlCommand cmd = new SqlCommand("insertxuesheng", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@xuehao", TextBox1.Text);
cmd.Parameters.AddWithValue("@xingming",TextBox2.Text);
cmd.Parameters.AddWithValue("@banji", TextBox3.Text);
cmd.Parameters.AddWithValue("@zhuanye", TextBox4.Text);
cmd.Parameters.AddWithValue("@nianling", TextBox5.Text);
cmd.Parameters.AddWithValue("@xingbie", TextBox6.Text);
cmd.ExecuteNonQuery();
插入数据后我去看数据库里的表,发现只有学号和年龄有数据,其他都是空值,怎么回事
答:
传入的数据类型不对.
因为学号和年龄是int型,所以传入TextBoxN.Text可以. 因为这时TextBoxN.Text = " 123", 实际上的SQL语句中就是:xuehao=123
而针对其他的字段,则都是字符型的,因此 在SQL语句中应该是: xingming = 'abc' .
而:cmd.Parameters.AddWithValue("@xingming",TextBox2.Text);
执行的结果是: xingming=abc.这当然就不行啦.
所以改为: cmd.Parameters.AddWithValue("@xingming","'" + TextBox2.Text + "'"); 就是给TextBoxN.Text前后各加一个引号再传给存储过程.