开发实践:多条更新的SQL语句执行方法
//创建连接字符串
string conString ="Server=.;DataBase=StudentManageDB;Uid=sa;Pwd=passw0rd";
//创建连接对象
SqlConnection conn = new SqlConnection(conString);
//组合SQL语句
string sql1 = "insert into Students(StudentName,Gender,Birthday,StudentIdNo,";
sql1 += "Age,PhoneNumber,StudentAddress,ClassId)";
sql1 += " values('{0}','{1}','{2}',{3},{4},'{5}','{6}','{7}')";
sql1 += string.Format(sql1,"慢慢","男","1954-44-14",722722199402188989,21,"029-12345678","三三四四",2);
string sql2 = string.Format(sql1,"TT","男","1999-09-09",433455199909099999,16,"029-89898989","问问",3);
string sql3 = "update Students set StudentName='{0}' where StudentId={1}";
sql3 = string.Format(sql3,"LL",1000001);
//将不同的SQL语句使用分号连接在一起
string sql = sql1 + ";" + sql2 + ";" + sql3;//多条SQL语句之间用 “;”分隔
SqlCommand cmd = new SqlCommand(sql,conn);
coon.Open();
int result = cmd.ExecuteNonQuery();//执行操作
coon.Close();
if(result == 3)Show("操作成功!");
else Show("操作失败!");
问题引出
- 在Students 表中添加一个新的学员对象,并返回新增学员的学号
- 提示:学号是自动标识列,即插入新纪录以后返回该记录的标识
问题解决
- 在insert 语句后面添加 select @@identity 查询
- 执行 ExecuteScalar() 方法:同时执行insert 和 select
insert into Student(StudentName,Gender,Birthday,Age,StudentIdNo,PhoneNumber,StudentAddress,ClassId)
values('hetao','男','1994-03-04',22,393939393939383722,'029-66986986','西安市',3);
select @@IDENTITY
@@identity 是数据库中的一个全局变量,里面保存着最近一次生成的标识列的值
开发实践:插入一个学员对象并返回标识列
//创建连接对象
string connString = "Server=.;DataBase=StudentManageDB;Uid=sa;Pwd=passw0rd";
SqlConnection conn = new SqlConnection(connString);
//组合SQL语句
string sql = "insert into Students(StudentName,Gender,Birthday,Age,StudentIdNo,PhoneNumber,ClassId)";
sql += " values( '{0}','{1}','{2}',{3},'{4}','{5}',{6}); Select @@identity";
sql = string.Format(sql,"嗯嗯","男","1933-03-13",21,"45667755443355566","029-12345678",2);
//创建Command对象
SqlCommand cmd = new SqlCommand(sql,conn);
//打开连接执行非查询
conn.Open();
int result = Convert.ToInt32(cmd.ExecuteScalar()); //ExecuteScalar()方法执行后返回 Object 类型
//关闭连接
conn.Close();
Console.WriteLine("现在学员编号="+result);
Console.ReadLine();
常见错误
Q:数据库服务器无法连接问题
错误内容:“在与SQL Server 建立连接时出现与网络相关的或特定于实例的错误。”
解决办法:
1.检查SQLServer服务是否打开
2.检查连接字符串中的Server对应的服务器名称是否正确(注意默认实例,命名实例的名称)
3.如果是连接的局域网内其他的计算机,请检查防火墙是否有拦截,或者通过“计算机管理”
检查服务器是否允许外边连接(服务的TCP/IP协议)。
Q:数据库名称写错
错误内容:“无法打开登录所请求的数据库”StudentManageDB。登录失败。“
解决办法:
修改数据库名称
Q:服务器”登录账号“或者”登录密码“写错
错误内容:”用户‘sa’登录失败。“
解决办法:
修改登录账户名称,或者修改登录密码。
Q:连接字符串的关键字写错
错误内容:”不支持关键字‘sever’“
解决办法:
修改连接字符串中对应的关键字
Q:连接字符串将分号写错
错误内容:显示服务器无法连接错误内容
特别提示:如果写错“如果写错"全角”的分号,也出现上面的错误
解决办法:
关键字之间修改成英文半角分号
Q:SQL语句写错
错误内容:”‘ ’附近有语法错误。
解决办法:
在提示错误的附近仔细检查sql语句
提示:SQL语句的编写,必须全部使用英文半角,包括逗号,空格,字母,括号等
Q:类名称写错或者占位符格式有错误
错误内容:列名‘ ’无效
解决办法:
注意列的数据类型
列的拼写
Q:格式转换错误
错误内容:将字符串转换为smalldatetime数据类型时失败
解决办法:
查看数据库类型的书写方式
Q:占位符的填充不完整
错误内容:索引必须大于或等于零,且小于参数类表的大小
解决办法:
细心,按对应位置,类型书写
须知后事如何,请听下回分解.....