C# ASP.NET 操作数据库的基本方法

来源:互联网 发布:知乎 杨烁 油腻 编辑:程序博客网 时间:2024/06/16 00:28

首先要装好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(运行)浏览器上就出现了结果


至于前台的设计以及与后台的交互,是可以完全通过拖控件实现的,只是网站的移植性不好。

0 0
原创粉丝点击