首先要装好vs2010与sqlserver 2008 (其余版本也行,我觉得这两个没什么问题)
安装过程参看其他人的博客,很费时间,而且容易…… (所以先备份好系统)
sqlserver 2008 先新建数据库 如 dormitory 建立一张表 userinfo
建表的时候可能有各种错误,请自行解决。
下面主要讲解C#连接数据库的部分。
vs中文件->新建->网站->ASP.NET网站 (自己在下面设置目录和项目名字) 然后就生成了一个项目
(如果建立的目录和我下面引用的头文件不一样 是因为我建立的是 .net3.5 其实默认的2.0也可以)
看一下案例示范目录(我只增加了一个 sqlBaseDao.cs 文件)
web.config 文件里面有很多东西,找到debug='false'的地方改为true。毕竟我们会遇到很多错误的地方,让人家帮我们显示运行时的错误也好。
然后就是设置连接字符串:
找到<connectionStrings />地方删掉,改成下面的 配置
<!--<connectionStrings />-->
<connectionStrings>
<add name="dormitoryConnectionString" connectionString="Data Source=XXX-PC\DATAMY;Initial Catalog=XXX;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
还没说完,connectionString后面的字符串(我写的是我的),劝大家自己在 Default.aspx 的设计模式下 拖一个DataList控件然后 选择数据源->数据库->新建连接->选择你自己的数据库 看下图得到连接字符串。
sqlBaseDao.cs 内容如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Configuration;
using System.Data.SqlClient;
/// <summary>
///sqlBaseDao 的摘要说明
/// </summary>
public class sqlBaseDao
{
string connectionString;
SqlConnection connection;
SqlCommand cmd;
public sqlBaseDao()
{
connectionString = WebConfigurationManager.ConnectionStrings["dormitoryConnectionString"].ConnectionString;
}
public void closeConnection()
{
if (connection.State != System.Data.ConnectionState.Closed)
{
connection.Close();
}
}
/*
前面传来类似的 需要传参的
string sql = "select * from nb_file WHERE db_nid<>0 and db_type=@type and db_verify=1 ";
Dictionary<string, object> parameters = new Dictionary<string, object>();
parameters.Add("type", false);
*/
//没有parameters的时候就设为null
private void prepareFunc(string sql, Dictionary<string, object> parameters)
{
//打开数据库连接
connection = new SqlConnection(connectionString);
cmd = new SqlCommand();
cmd.Connection = connection;
cmd.CommandText = sql;
if (parameters != null)
{
foreach (string key in parameters.Keys)
{
SqlParameter parameter = new SqlParameter(key, parameters[key]);
cmd.Parameters.Add(parameter);
}
}
}
/// <summary>
/// 这个函数用来执行除了select 以外的程序,返回值是影响的行数,一般可以不用
/// </summary>
/// <param name="sql"></param>
/// <param name="parameters"></param>
/// <returns></returns>
public int sqlExecuteChange(string sql, Dictionary<string, object> parameters)
{
prepareFunc(sql, parameters);
try
{
connection.Open();
return Convert.ToInt32(cmd.ExecuteNonQuery());
}
finally
{
connection.Close();
}
}
/// <summary>
/// 这个语句用来执行select的语句
/// </summary>
/// <param name="sql"></param>
/// <param name="parameters"></param>
/// <returns></returns>
public SqlDataReader sqlExecuteQuery(string sql, Dictionary<string, object> parameters)
{
prepareFunc(sql, parameters);
try
{
connection.Open();
return cmd.ExecuteReader();
}
finally
{
//connection.Close();
}
}
/// <summary>
/// 仅仅返回查询结果集中的第1行第1列
/// </summary>
/// <param name="sql"></param>
/// <param name="parameters"></param>
/// <returns></returns>
public int sqlExecuteQueryFirst(string sql, Dictionary<string, object> parameters)
{
prepareFunc(sql, parameters);
try
{
connection.Open();
return Convert.ToInt32(cmd.ExecuteScalar());
}
finally
{
//connection.Close();
}
}
}
Default.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;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
sqlBaseDao bd = new sqlBaseDao();
string sql = "select * from userinfo;";
SqlDataReader dt = bd.sqlExecuteQuery(sql, null);
/*
发现了把 xs 本来没有出现,结果可以使用,是应为前台有一个 id="xs" runat="Server" 它在任何HTML标签都行,如示例中
的<div></div>标签
*/
while (dt.Read())
{
xs.InnerText += dt["uid"];//"uid"列
xs.InnerText += dt[2];//两种方法 2列
}
bd.closeConnection();
}
}
Default.aspx 的 源程序如下 (看项目的下面,有设计(拖控件实现),拆分,源(代码实现))
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!-- 上面这一行就是说明和后台相连,自动生成的 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div id="xs" runat="Server">
你好啊!后面出来的数据库中的数据<br />
</div>
</form>
</body>
</html>
然后F5(运行)浏览器上就出现了结果
至于前台的设计以及与后台的交互,是可以完全通过拖控件实现的,只是网站的移植性不好。