}*/
using (SqlConnection conn=new SqlConnection (Properties.Settings.Default.SchoolConnectionString))
{
SqlCommand cmd = new SqlCommand("MyProcedure", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@User", SqlDbType.NVarChar).Value= textBox1.Text.Trim();
cmd.Parameters.Add("@Pwd", SqlDbType.NChar).Value = textBox2.Text.Trim();
try
{
conn.Open();
int r = cmd.ExecuteNonQuery();
if (r>0)
{
MessageBox.Show("成功!");
}
}
catch
{ }
}
}
31 个解决方案
#1
在那一句出问题的? 抛异常了?
#2
就是SQL语句有问题 呀 但是在V2010以前的编译器都可以 你可试试
#3
这个最普通的用户登陆界面 都整了半天 后来我换到VS2010就可以 但不知道怎么修改
string connectionString = Properties.Settings.Default.UserDatabaseConnectionString;
SqlConnection conn = new SqlConnection(connectionString);
string sql = string.Format("select User,Pwd from UserTable WHERE User='{0}'and Pwd='{1}'",textBox1.Text,textBox2.Text);
SqlDataAdapter adapter = new SqlDataAdapter(sql, conn);
DataTable table=new DataTable ();
adapter.Fill(table);
if (table.Rows.Count>0)
{
MessageBox.Show("OK");
}
else
{
MessageBox.Show("用户名不存在或密码错误!");
}
#4
检查下连接字符串,sql server的配置
去掉try catch,贴出丢出的异常的具体信息。
去掉try catch,贴出丢出的异常的具体信息。
#5
where语句和visual studio的版本没有任何关系,断点调试,复制生成的sql语句到sql server中,执行看看结果
#6
设置断点。跟踪Sql,拷贝Sql到管理器里执行。
#7
问题是我在另一个登陆界面里也遇到了 一样的问题 同样的SQL语句 VS2012就不可以 VS2010则可以
如下列这段代码 在VS2010 count 就有值 VS2012无论如何 都不对
SqlConnection conn = new SqlConnection(connectionString);
string sql = string.Format("select User,Pwd from UserTable WHERE User='{0}'and Pwd='{1}'",textBox1.Text,textBox2.Text);
SqlDataAdapter adapter = new SqlDataAdapter(sql, conn);
DataTable table=new DataTable ();
adapter.Fill(table);
if (table.Rows.Count>0)
{
MessageBox.Show("OK");
}
else
{
MessageBox.Show("用户名不存在或密码错误!");
}
#8
在VS2012编译器里 只要后面有WHERE子句 几乎都不成功 放在VS2010即有影响的行数
真是奇怪了
#9
SQL语句在VS2010里面没任何异常 可返回影响 行数 就是VS2012编译器里有问题 现在就是说 VS2012到底是不是改变了什么我们不知道的内容
#10
你这个代码是复制出来的?
and前少个空格吧 User='{0}'and Pwd= ,如果你代码里是这样,肯定有错了,你细查一下。
and前少个空格吧 User='{0}'and Pwd= ,如果你代码里是这样,肯定有错了,你细查一下。
string sql = string.Format("select User,Pwd from UserTable WHERE User='{0}' and Pwd='{1}'",textBox1.Text,textBox2.Text);
#11
有空格 我在另两台电脑用VS2010都有受影响行数 就是VS2012里遇到的问题 公司的电脑和自己的XP装的VS2010都OK
VS2012出现在问题 现在真是郁闷 就是不知道 VS2012到底改了什么东西
#12
你的sql语句中空格重新输一下,有时在别的输入法中空格字符有问题的,我遇到过,在代码里说有错误,放在sql数据库查询又正常。还有语句中先直接用数据,不要用参数,测试一下。看代码能不能通过。应该不会是VS2012的问题
#13
先谢谢你 不加where子句都能读取到表数据的 这个问题 困扰我N久 真的搞不懂
#14
where肯定不会有问题,我觉还是你语句中变量,字符等有问题,直接用数据测试一下,加一个数据条件测试,
#15
公司的电脑用的是VS2010 我自己的笔记本也是VS2010 是XP系统
自己的台式机装的是VS2012遇到这问题 根据你给方法都检查试了 问题都试了 就是不见效果 狂晕 严重怀疑VS2012
#16
VS的版本与SQL有关联么? 不用怀疑VS 只需要找自己的问题就可以了。
别入参数直接写SQL执行, 一步步排除就是了。总之肯定是你的问题,不是VS的问题。
别入参数直接写SQL执行, 一步步排除就是了。总之肯定是你的问题,不是VS的问题。
#17
SQL语句只与数据库有关,绝对不会因为编译器而不同。编译器只是把sql语句传给数据库而已,仅起到
传递作用。
很简单的解决办法:
在SQL语句构建完毕后的代码行, 设置断点,获取SQL语句的实例值,复制粘贴到数据库中执行。结果正确就说明程序没错;否则就是程序构建SQL出错。
没有其他情况。
很简单的解决办法:
在SQL语句构建完毕后的代码行, 设置断点,获取SQL语句的实例值,复制粘贴到数据库中执行。结果正确就说明程序没错;否则就是程序构建SQL出错。
没有其他情况。
#18
始终是NULL 实在是不知道这个SQL语句哪有问题 VS2010就正常
#19
我试了 只要带where子句筛选 一定有问题 不知道大侠是不是也在用VS2012 可以一试
#20
你能把你代码中有问题的where语句贴出来,看一下
#21
SQL语句是数据库的语法
数据库不同,SQL语句也会略有区别
但是跟VS版本是一点关系都没有的
数据库不同,SQL语句也会略有区别
但是跟VS版本是一点关系都没有的
#22
WHERE User='{0}'and
没加空格
没加空格
#23
不是空格问题 现在就是不知道到底是区别在哪里 只要用WHERE子句筛选 均不行
#24
应该与where语句无关的,如果SQL语句没有错误的话。真解决不了,那你还是用VS2010吧;
#25
你用碗和脸盆装米饭 但是你不能说你吃的米饭会因为脸盆变成肉丝,sql就是sql 怎么会随vs版本不同而不同呢
#26
我意思就是SQL2012与VS2012是不是不协调
算了 我还是用VS2010
#27
肯定不存在这种问题
ExecuteNonQuery 执行存储过程.
[1].存储过程有返回值(传出参数)
(1).把数据库中受影响的行数赋给返回值,这是得到的返回值是受影响的函数(大于或等于0的整数).
(2).把某个值赋给返回值.
[2].存储过程没有返回值
执行成功后返回 -1.
(没有返回值的存储过程理应 返回 受影响的行数 (执行 增删改) 但是.但我们在ado.net中执行存储过程的时候,dotnet 自动为给了存储过程一个默认值:set nocount on;
所以给我们的感觉是执行存储过程默认返回 -1 )
另外 你打印你vs2012读取出来的Properties.Settings.Default.SchoolConnectionString字符串看看和2010的一样,看看是否是哪里配置出现了问题
ExecuteNonQuery 执行存储过程.
[1].存储过程有返回值(传出参数)
(1).把数据库中受影响的行数赋给返回值,这是得到的返回值是受影响的函数(大于或等于0的整数).
(2).把某个值赋给返回值.
[2].存储过程没有返回值
执行成功后返回 -1.
(没有返回值的存储过程理应 返回 受影响的行数 (执行 增删改) 但是.但我们在ado.net中执行存储过程的时候,dotnet 自动为给了存储过程一个默认值:set nocount on;
所以给我们的感觉是执行存储过程默认返回 -1 )
另外 你打印你vs2012读取出来的Properties.Settings.Default.SchoolConnectionString字符串看看和2010的一样,看看是否是哪里配置出现了问题
#28
catch
{ }
去掉你的try-catch,你就知道报什么错了,空catch是非常不推荐的,除非你确定那个异常可以不作处理
{ }
去掉你的try-catch,你就知道报什么错了,空catch是非常不推荐的,除非你确定那个异常可以不作处理
#29
把sql 打印出来 单独执行下看看
#30
WHERE User='{0}'and
WHERE User='{0}' and
仔细看到底啥区别,还说不是空格问题
饭吃噎着了,不要怪饭盆啊
#31
断点跟,把SQL语句复制出来,放客户端里执行,看到底怎么了
#1
在那一句出问题的? 抛异常了?
#2
在那一句出问题的? 抛异常了?
就是SQL语句有问题 呀 但是在V2010以前的编译器都可以 你可试试
#3
在那一句出问题的? 抛异常了?
这个最普通的用户登陆界面 都整了半天 后来我换到VS2010就可以 但不知道怎么修改
string connectionString = Properties.Settings.Default.UserDatabaseConnectionString;
SqlConnection conn = new SqlConnection(connectionString);
string sql = string.Format("select User,Pwd from UserTable WHERE User='{0}'and Pwd='{1}'",textBox1.Text,textBox2.Text);
SqlDataAdapter adapter = new SqlDataAdapter(sql, conn);
DataTable table=new DataTable ();
adapter.Fill(table);
if (table.Rows.Count>0)
{
MessageBox.Show("OK");
}
else
{
MessageBox.Show("用户名不存在或密码错误!");
}
#4
检查下连接字符串,sql server的配置
去掉try catch,贴出丢出的异常的具体信息。
去掉try catch,贴出丢出的异常的具体信息。
#5
where语句和visual studio的版本没有任何关系,断点调试,复制生成的sql语句到sql server中,执行看看结果
#6
设置断点。跟踪Sql,拷贝Sql到管理器里执行。
#7
where语句和visual studio的版本没有任何关系,断点调试,复制生成的sql语句到sql server中,执行看看结果
问题是我在另一个登陆界面里也遇到了 一样的问题 同样的SQL语句 VS2012就不可以 VS2010则可以
如下列这段代码 在VS2010 count 就有值 VS2012无论如何 都不对
SqlConnection conn = new SqlConnection(connectionString);
string sql = string.Format("select User,Pwd from UserTable WHERE User='{0}'and Pwd='{1}'",textBox1.Text,textBox2.Text);
SqlDataAdapter adapter = new SqlDataAdapter(sql, conn);
DataTable table=new DataTable ();
adapter.Fill(table);
if (table.Rows.Count>0)
{
MessageBox.Show("OK");
}
else
{
MessageBox.Show("用户名不存在或密码错误!");
}
#8
设置断点。跟踪Sql,拷贝Sql到管理器里执行。
在VS2012编译器里 只要后面有WHERE子句 几乎都不成功 放在VS2010即有影响的行数
真是奇怪了
#9
检查下连接字符串,sql server的配置
去掉try catch,贴出丢出的异常的具体信息。
SQL语句在VS2010里面没任何异常 可返回影响 行数 就是VS2012编译器里有问题 现在就是说 VS2012到底是不是改变了什么我们不知道的内容
#10
你这个代码是复制出来的?
and前少个空格吧 User='{0}'and Pwd= ,如果你代码里是这样,肯定有错了,你细查一下。
and前少个空格吧 User='{0}'and Pwd= ,如果你代码里是这样,肯定有错了,你细查一下。
string sql = string.Format("select User,Pwd from UserTable WHERE User='{0}' and Pwd='{1}'",textBox1.Text,textBox2.Text);
#11
你这个代码是复制出来的?
and前少个空格吧 User='{0}'and Pwd= ,如果你代码里是这样,肯定有错了,你细查一下。
string sql = string.Format("select User,Pwd from UserTable WHERE User='{0}' and Pwd='{1}'",textBox1.Text,textBox2.Text);
有空格 我在另两台电脑用VS2010都有受影响行数 就是VS2012里遇到的问题 公司的电脑和自己的XP装的VS2010都OK
VS2012出现在问题 现在真是郁闷 就是不知道 VS2012到底改了什么东西
#12
你的sql语句中空格重新输一下,有时在别的输入法中空格字符有问题的,我遇到过,在代码里说有错误,放在sql数据库查询又正常。还有语句中先直接用数据,不要用参数,测试一下。看代码能不能通过。应该不会是VS2012的问题
#13
你的sql语句中空格重新输一下,有时在别的输入法中空格字符有问题的,我遇到过,在代码里说有错误,放在sql数据库查询又正常。还有语句中先直接用数据,不要用参数,测试一下。看代码能不能通过。应该不会是VS2012的问题
先谢谢你 不加where子句都能读取到表数据的 这个问题 困扰我N久 真的搞不懂
#14
where肯定不会有问题,我觉还是你语句中变量,字符等有问题,直接用数据测试一下,加一个数据条件测试,
#15
where肯定不会有问题,我觉还是你语句中变量,字符等有问题,直接用数据测试一下,加一个数据条件测试,
公司的电脑用的是VS2010 我自己的笔记本也是VS2010 是XP系统
自己的台式机装的是VS2012遇到这问题 根据你给方法都检查试了 问题都试了 就是不见效果 狂晕 严重怀疑VS2012
#16
VS的版本与SQL有关联么? 不用怀疑VS 只需要找自己的问题就可以了。
别入参数直接写SQL执行, 一步步排除就是了。总之肯定是你的问题,不是VS的问题。
别入参数直接写SQL执行, 一步步排除就是了。总之肯定是你的问题,不是VS的问题。
#17
SQL语句只与数据库有关,绝对不会因为编译器而不同。编译器只是把sql语句传给数据库而已,仅起到
传递作用。
很简单的解决办法:
在SQL语句构建完毕后的代码行, 设置断点,获取SQL语句的实例值,复制粘贴到数据库中执行。结果正确就说明程序没错;否则就是程序构建SQL出错。
没有其他情况。
很简单的解决办法:
在SQL语句构建完毕后的代码行, 设置断点,获取SQL语句的实例值,复制粘贴到数据库中执行。结果正确就说明程序没错;否则就是程序构建SQL出错。
没有其他情况。
#18
SQL语句只与数据库有关,绝对不会因为编译器而不同。编译器只是把sql语句传给数据库而已,仅起到 传递作用。
很简单的解决办法:
在SQL语句构建完毕后的代码行, 设置断点,获取SQL语句的实例值,复制粘贴到数据库中执行。结果正确就说明程序没错;否则就是程序构建SQL出错。
没有其他情况。
始终是NULL 实在是不知道这个SQL语句哪有问题 VS2010就正常
#19
VS的版本与SQL有关联么? 不用怀疑VS 只需要找自己的问题就可以了。
别入参数直接写SQL执行, 一步步排除就是了。总之肯定是你的问题,不是VS的问题。
我试了 只要带where子句筛选 一定有问题 不知道大侠是不是也在用VS2012 可以一试
#20
你能把你代码中有问题的where语句贴出来,看一下
#21
SQL语句是数据库的语法
数据库不同,SQL语句也会略有区别
但是跟VS版本是一点关系都没有的
数据库不同,SQL语句也会略有区别
但是跟VS版本是一点关系都没有的
#22
WHERE User='{0}'and
没加空格
没加空格
#23
SQL语句是数据库的语法
数据库不同,SQL语句也会略有区别
但是跟VS版本是一点关系都没有的
不是空格问题 现在就是不知道到底是区别在哪里 只要用WHERE子句筛选 均不行
#24
应该与where语句无关的,如果SQL语句没有错误的话。真解决不了,那你还是用VS2010吧;
#25
你用碗和脸盆装米饭 但是你不能说你吃的米饭会因为脸盆变成肉丝,sql就是sql 怎么会随vs版本不同而不同呢
#26
你用碗和脸盆装米饭 但是你不能说你吃的米饭会因为脸盆变成肉丝,sql就是sql 怎么会随vs版本不同而不同呢
我意思就是SQL2012与VS2012是不是不协调
算了 我还是用VS2010
#27
你用碗和脸盆装米饭 但是你不能说你吃的米饭会因为脸盆变成肉丝,sql就是sql 怎么会随vs版本不同而不同呢
我意思就是SQL2012与VS2012是不是不协调
算了 我还是用VS2010
ExecuteNonQuery 执行存储过程.
[1].存储过程有返回值(传出参数)
(1).把数据库中受影响的行数赋给返回值,这是得到的返回值是受影响的函数(大于或等于0的整数).
(2).把某个值赋给返回值.
[2].存储过程没有返回值
执行成功后返回 -1.
(没有返回值的存储过程理应 返回 受影响的行数 (执行 增删改) 但是.但我们在ado.net中执行存储过程的时候,dotnet 自动为给了存储过程一个默认值:set nocount on;
所以给我们的感觉是执行存储过程默认返回 -1 )
另外 你打印你vs2012读取出来的Properties.Settings.Default.SchoolConnectionString字符串看看和2010的一样,看看是否是哪里配置出现了问题
#28
catch
{ }
去掉你的try-catch,你就知道报什么错了,空catch是非常不推荐的,除非你确定那个异常可以不作处理
{ }
去掉你的try-catch,你就知道报什么错了,空catch是非常不推荐的,除非你确定那个异常可以不作处理
#29
把sql 打印出来 单独执行下看看
#30
WHERE User='{0}'and
WHERE User='{0}' and
仔细看到底啥区别,还说不是空格问题
饭吃噎着了,不要怪饭盆啊
#31
断点跟,把SQL语句复制出来,放客户端里执行,看到底怎么了