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

用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语句中变量定义有问题,请各位高手指点一下,多谢了!!!

插入进去的数据的类型不匹配. 以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前后各加一个引号再传给存储过程.
温馨提示:内容为网友见解,仅供参考
无其他回答

sql语句使用变量的前提是什么?
是变量的头符号,所有变量,必须使用@打头,用来区分是变量还是系统关键字,表名,列名等。int 是数据类型,需要使用哪种,就定义哪种,比如定义为 varchar(20)set 是赋值语句,给变量@Id赋值,赋值之后,变量就可以使用了 select 语句中,就使用了变量,在where条件语句中,限定了id=变量,也就是id=...

变量绑定SQL语句实现
在SQL编程中,变量绑定是将变量的值与SQL语句关联的重要步骤。首先,你需要在SQL环境下使用var关键字来声明一个变量,明确指定变量的名称和数据类型。例如:SQL> var i varchar2(10);接着,使用exec命令来给变量赋值,这里的赋值符号是":",用于将变量的值与SQL语句关联。例如:SQL> exec :i:='sql...

MySQL中SQL变量的使用方法mysql中sql变量
在MySQL中可以使用SET语句来为变量赋值,语法如下:SET variablename = value;其中variablename为变量名称,value为变量的值。3.使用变量 在MySQL中可以通过变量名来引用变量,语法如下:SELECT variablename;其中variablename为变量名称。4.示例代码 下面是一些使用MySQL SQL变量的示例代码。4.1.使用变量作为...

绑定变量SQL语句实现
在SQL编程中,变量的使用是常见的操作。首先,你需要通过var关键字来声明一个变量,明确指定变量的名称和数据类型。例如:SQL> var i varchar2(10);这里,我们声明了一个名为i的变量,其类型为可变长度的字符字符串,最多容纳10个字符。然后,你可以使用exec语句来给这个变量赋值。赋值操作使用=:符号...

sql语句(字段里面不能用变量吗)
sql语句不能直接使用变量。存储过程中可以使用变量,调用存储过程时传递变量,由数据库将变量替换为实际值并执行得到结果。

sql语句中where使用变量
时间段的条件,可以用between...and...另外,声明变量前加个begin,在查询完后加个end,这样子能保证变量在语句中有效。希望能帮到你。。。

sql update语句中怎么使用变量
m_Res=mysql_query(&m_My_Cont,"update pswd set my_pswd='"+我的变量名+"'");另外,你这条update如果没有where限制,会更新这张表中所有的my_pswd。

SQL中一条查询语句,得到一列多个结果,现在想用一个变量存储起来,并用...
select email,1 num into #email from where id=1 --定义一些变量,@email是你需要的,@tmpemail 用来临时存储判断条件的 declare @i int,@n int,@email varhcar(8000),@tmpemail varchar(100)set @email=''set @i=1 select @n=count(*) from #email --使用循环获取email,赋值给@email ...

C# SQL条件查询语句where中使用变量的用法
在c#中使用 SQL语句 首先注意两点、 第一 语句的构造是否正确, 第二 与程序交互时。使用到的一些变量 1. 在sql语句中。 如果某个字段的数据类型不为 数字形式 那么。 在sql语句中 条件判断...都需要用到 (两个单引号)将数据 括起来; 例如:表[student] id(自动编号) uID(学号...

SQL中In(变量)的问题
这个可以尝试使用动态字符串 declare @variable1 varchar(1000)--变量 declare @sql varchar(8000)set @sql = 'select t.* from table t where t.f1 in (' +@variable1+')'exec(@sql)

相似回答
大家正在搜