1. 程式人生 > >SQL語句與常見錯誤

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:佔位符的填充不完整

錯誤內容:索引必須大於或等於零,且小於引數類表的大小

解決辦法:

細心,按對應位置,型別書寫

須知後事如何,請聽下回分解.....