SQL語句與常見錯誤
開發實踐:多條更新的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:佔位符的填充不完整
錯誤內容:索引必須大於或等於零,且小於引數類表的大小
解決辦法:
細心,按對應位置,型別書寫
須知後事如何,請聽下回分解.....