aspx連接資料庫
前兩日,在CSDN看了篇文章《10個程序員必須學會接受的殘酷真相》,其中有一條:
「互聯網其實就是存儲在表中的數據」,這句話說的很有道理,也提醒我們開發人員需要重視資料庫操作;
本篇講述asp.net如何連接資料庫,考慮到資料庫種類較多,這里就以asp.net連接SQL Server資料庫舉例
PS:以上資料庫操作並不嚴謹,僅用於示範,資料庫連接
讀者在實際使用對資料庫進行crud操作時,參考微軟官方文檔
『貳』 ASP 怎麼連接SQL資料庫
ASP與SQL資料庫連接語句具體如下:
Set conn = Server.CreateObject("ADODB.Connection")
connstr = "provider=Sqloledb;server=伺服器名;uid=用戶名;pwd=密碼;database=資料庫名"
conn.Open connstr
If Err Then
err.Clear
Set conn = Nothing
Response.Write "資料庫連接出錯,請檢查連接字串"
Response.End
(2)aspx連接資料庫擴展閱讀:
SQL常用命令使用方法:
(1) 數據記錄篩選:
sql="select * from 數據表 where 欄位名=欄位值 order by 欄位名 "
sql="select * from 數據表 where 欄位名 like 『%欄位值%『 order by 欄位名 "
sql="select top 10 * from 數據表 where 欄位名 order by 欄位名 "
sql="select * from 數據表 where 欄位名 in (『值1『,『值2『,『值3『)"
sql="select * from 數據表 where 欄位名 between 值1 and 值2"
(2) 更新數據記錄:
sql="update 數據表 set 欄位名=欄位值 where 條件表達式"
sql="update 數據表 set 欄位1=值1,欄位2=值2 …… 欄位n=值n where 條件表達式"
(3) 刪除數據記錄:
sql="delete from 數據表 where 條件表達式"
sql="delete from 數據表" (將數據表所有記錄刪除)
『叄』 用c# asp.net做實現與資料庫的連接,增刪改查
因為本例涉及到資料庫,所以在開始之前請先在資料庫里新建一個名為「test」的資料庫,裡面新建一個表:「users」,表裡有三個欄位:
id(int,不可為null,設為標識符,自增),name(nvarcher(50)),age(nvarchar(50))
可以先在表裡預設幾條數據。
然後廢話不多說,首先是 .aspx里的代碼
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="test" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<table runat="server" id="table1">
<tr>
<td>name:</td>
<td>
<asp:TextBox ID="tbName" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>age:</td>
<td>
<asp:TextBox ID="tbAge" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td><asp:Button runat="server" ID="BtnAdd" text="add" OnClick="BtnAdd_Click"/></td>
<td><asp:Button runat="server" ID="BtnDel" text="del" OnClick="BtnDel_Click"/></td>
<td><asp:Button runat="server" ID="BtnUpdate" text="update" OnClick="BtnUpdate_Click"/></td>
<td><asp:Button runat="server" ID="BtnSelect" text="select" OnClick="BtnSelect_Click"/></td>
</tr>
</table>
</div>
</form>
</body>
</html>
這段代碼中只有一個table,裡麵包含兩個textbox用於顯示name和age,還有四個按鈕,分別用於增刪改查,這6個控制項都是asp標簽,和正常的html標簽類似,只不過多了一些ASP.NET封裝的屬性,方便與後台通信,後台可以通過其屬性runat="server"知道控制項運行於伺服器,然後通過id即可訪問到該控制項,進而控制控制項各種屬性和顯示。
下面是.aspx.cs的代碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data.Sql;
using System.Data;
public partial class test : System.Web.UI.Page
{
//數據連接最基本需要的兩個對象
private SqlConnection conn = null;
private SqlCommand cmd=null;
//private SqlDataAdapter adapter = null;
//為了方便,設為全局對象的sql語句
private string sql = null;
//公用 打開資料庫的方法
public void openDatabase()
{
conn = new SqlConnection();
conn.ConnectionString = "Integrated Security=SSPI;Data Source=(local);initial catalog=test;User ID =你的用戶名;password=你的密碼";
if (conn.State == ConnectionState.Closed)
{
conn.Open();
//Response.Write("<script>alert('Connected!');</script>");
}
}
//默認載入頁面的方法 找到年齡最大的載入
//有些問題,年齡不能相同,載入中前台的textbox里只能顯示一條記錄,數據拿到之後有多條只顯示一條
public void load()
{
openDatabase();
cmd = new SqlCommand("select * from users where age=(select max(age) from users)", conn);
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
tbName.Text = (String)dr[1].ToString().Trim();
tbAge.Text = (String)dr[2].ToString().Trim();
}
conn.Close();
}
//根據sql語句載入信息,重載兩個textbox
public void load(String sql)
{
openDatabase();
cmd = new SqlCommand(sql, conn);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
tbName.Text = (String)dr[1].ToString().Trim();
tbAge.Text = (String)dr[2].ToString().Trim();
}
conn.Close();
}
//封裝的資料庫語句執行的方法
public void execute(String sql)
{
openDatabase();
cmd = new SqlCommand(sql, conn);
cmd.ExecuteNonQuery();
conn.Close();
}
//頁面載入時ASP.NET首先會調用這個方法
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack) { load(); }//如果頁面不是刷新,則執行,這個很重要
}
//四個按鈕的方法,增刪改查
protected void BtnAdd_Click(object sender, EventArgs e)
{
sql = "insert into users(name,age) values('"+ tbName.Text.ToString().Trim() +"','" + tbAge.Text.ToString().Trim() +"')";
execute(sql);
}
protected void BtnDel_Click(object sender, EventArgs e)
{
sql = "delete from users where name='" + tbName.Text.ToString().Trim() + "' and age='" + tbAge.Text.ToString().Trim()+"'";
execute(sql);
load();
}
protected void BtnUpdate_Click(object sender, EventArgs e)
{
sql = "update users set age='"+ tbAge.Text.ToString().Trim()+"' where name='" + tbName.Text.ToString().Trim() + "'";
execute(sql);
}
protected void BtnSelect_Click(object sender, EventArgs e)
{
sql = "select * from users where name='" + tbName.Text.ToString().Trim() + "'";
load(sql);
}
}
代碼里沒有任何異常處理的代碼,沒有驗證,沒有提示,只是很粗陋的東西,只為了讓初學者明白連接資料庫,操作數據的核心而已,所以在運行時如果出錯不要慌張,很有可能你輸入了我沒有預料到的情況。
這時細讀錯誤提示,通過理解代碼,函數意圖,然後找出我寫的函數的錯誤,你會對代碼有更好的理解,同時你也會思考如何避免用戶誤操作的問題吧。
下面稍微解說下代碼,主要是後台的代碼。
連接資料庫,操作資料庫主要需要兩個類,一個是SqlConnection,一個是SqlCommand
SqlConnection用於連接資料庫,打開資料庫,關閉資料庫。
連接資料庫需要特定格式,特定參數的字元串,如代碼中寫的,伺服器地址,資料庫名稱,用戶名密碼,以及其他參數
SqlCommand用於操作資料庫,先創建基於一個特定SqlConnection對象的SqlCommand對象,通過ExecuteNonQuery方法執行給定的sql語句。
增刪改都可以只是這樣就操作成功,但查詢因為需要把數據讀到一個地方,所以有一個新的對象出現了:SqlDataReader
通過SqlCommand對象的ExecuteReader方法得到一個SqlDataReader對象,SqlDataReader對象包含數據集,通過對SqlDataReader對象遍歷即可取出查詢的數據。
至此,增刪改查都可以實現了。