关于SQL语句中使用变量的问题
用C#写了一段向MySQL数据库里面插入一个Record的代码,数据库里面的表名是meetingevents,代码如下:System.Data.Odbc.OdbcConn...
用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", CalendarData.SelectedDate );
connection.Open();
int queryResult = insertCommand.ExecuteNonQuery();
connection.Close();
但是插入的总是空值,我觉得是SQL语句中变量定义有问题,请各位高手指点一下,多谢了!!! 展开
数据库里面的表名是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", CalendarData.SelectedDate );
connection.Open();
int queryResult = insertCommand.ExecuteNonQuery();
connection.Close();
但是插入的总是空值,我觉得是SQL语句中变量定义有问题,请各位高手指点一下,多谢了!!! 展开
1个回答
展开全部
插入进去的数据的类型不匹配. 以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前后各加一个引号再传给存储过程.
问:
存储过程这样的:
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前后各加一个引号再传给存储过程.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询