完整的ASP.NET连接SQLServer简单测试实例(含下载)最后效果如下,源码见最后:
⽤于测试docker 部署的ASP.NET 和SQL Server的连接,对c#⼩⽩有⽤,⼤⽜飘过。
⼀、创建asp空⽹站
⼆、准备数据库
打开Sql Server 2008,创建test数据库,创建如下表:
create table users
(
id int identity(1,1) not null primary key,
name nvarchar(50) null,
age nvarchar(50) null,
)
go
点击Visual Studio中"⼯具"菜单下的"连接到数据库",选择"Microsoft SQL Server"作为数据源。
确定继续
三、使⽤fig配置数据库连接
打开"服务器资源管理器",如下:
右键"服务器资源管理器",点击"属性",复制连接字符串“Data ,9000;Initial Catalog=test;User ID=sa;Password=xxxx;”。粘帖到fig中的connectionStrings节点下。数据库名保持⼀致为test
<connectionStrings>
<add name="MyDB"
connectionString="Data ,9000;Initial Catalog=test;User ID=sa;Password=xxxx;;"
providerName="System.Data.SqlClient" />
</connectionStrings>
后⾯数据库连接代码如下:
conn = new SqlConnection();
//conn.ConnectionString = "Data ,9000;Initial Catalog=test;User ID=sa;Password=xxxx;";
conn.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString;
注意:如果不使⽤fig⽅式的话,上述代码只需要注释部分和前⼀句。
四、代码
在项⽬⾥⾯新建"web窗体",命名为test,出现test.aspx和test.aspx.cs。修改test.aspx⾥的代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="test" %>
<!DOCTYPE html>
<html xmlns="/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>
</form>
</body>
</html>
这段代码中只有⼀个table,⾥⾯包含两个textbox⽤于显⽰name和age,还有四个按钮,分别⽤于增删改查,这6个控件都是asp标签,和正常的html标签类似,只不过多了⼀些ASP.NET封装的属性,⽅便与后台通信,后台可以通过其属性runat="server"知道控件运⾏于服务器,然后通过id即可访问到该控
件,进⽽控制控件各种属性和显⽰。
下⾯是test.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;
asp查看源码配置ui
private SqlCommand cmd = null;
//private SqlDataAdapter adapter = null;
//为了⽅便,设为全局对象的sql语句
private string sql = null;
//公⽤打开数据库的⽅法
public void openDatabase()
{
conn = new SqlConnection();
//conn.ConnectionString = "Data ,9000;Initial Catalog=test;User ID=sa;Password=xxxx;";
conn.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString;
if (conn.State == ConnectionState.Closed)
{
conn.Open();
Response.Write("<script>alert('Success!');</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);
}
}
五,测试
六,发布
右键项⽬名称–>发布Web应⽤–>配置⽂件–>⾃定义–>写⼊配置⽂件名称(⾃⼰可以随意写)–>连接–>
发布⽅法(选择⽂件系统),⽬标位置为你想把该项⽬所要发布的内容存⼊的⽂件夹,当然这个⽂件也可以是你建⽴这个项⽬的⽂件夹
->下⼀页–>点击⽂件发布选项–>选择在发布期间预编译–>点击配置–>在弹出的⾼级预编译设置中,将允许更新预编译站点不要勾选。–>点击发布。这样发布Web应⽤成功
[注意:]更新预编译站点勾不勾选后产⽣的效果:
①给“允许更新此预编译站点”打√
整个⽹站⽂件,除了所有的CS⽂件编译成⼀个DLL⽂件之外,其它⽂件,和原来没有任何变化,也就是别⼈可以直接查看你的源代码,源⽂件。
除此之外,这种⽅式发布的⽹站,当⽤户第⼀次访问页⾯的时候,需要经过编译,查BUG,之后没有任何错误,才能正常访问,因此速度很慢很慢,
(第⼆,第三,第四次之后就正常了)
②取消“允许更新此预编译站点”前⾯的√ 
1、⽹站⾥⾯的所有CS⽂件,都被编译成为⼀个DLL⽂件;
2、除了cs⽂件,其它的⽂件,诸如ASPX、ASHX等⽂件,也⼀同被编译起来,每个⽂件都在BIN⽬录⾥⾯⽣成⼀个对应 的*piled⽂件; 
之后,如果您通过记事本查看ASPX、ASHX等⽂件,⾥⾯不会看到任何的代码,就连HTML代码标记都看不见,打开这样的⽂件,⾥⾯只有⼀⾏ ⽂字,内容为“这是预编译⼯具⽣成的标记⽂件,不应被删除!”但是,⽹站的访问却是正常的,不会出现任何不良的问题。
此外,通过此种⽅法发布的⽹站,所有内容都编译好了,打开的速度是很快的。
六,源⽂件
(连接字符串请⾃⾏替代,test.aspx设为起始页)。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。