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

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


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

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页