ASP.net怎么 *** 作SQL数据库呢?

ASP.net怎么 *** 作SQL数据库呢?,第1张

using System

using System.Data

using System.Data.SqlClient

using System.Collections

namespace M56kc_Forum

{

/// <summary>

/// DBOperate 的摘要说明。

/// </summary>

public class DBOperate

{

public DBOperate()

{

//

// TODO: 在此处添加构造函数逻辑

//

}

//输入SELECT语句,获得返回数据集

public static DataTable SelectFormForum(string sql,int start,int size,string tablename)

{

try

{

SqlConnection sqlConnection=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["data"])

SqlDataAdapter sqlAdapter1 = new SqlDataAdapter(sql, sqlConnection)

DataSet returns = new DataSet()

sqlAdapter1.Fill(returns,start,size,tablename)

return returns.Tables[0]

}

catch (Exception ex)

{

throw (ex)

}

}

public static DataTable SelectFormForum(string sql)

{

try

{

SqlConnection sqlConnection=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["data"])

SqlDataAdapter sqlAdapter1 = new SqlDataAdapter(sql, sqlConnection)

DataSet returns = new DataSet()

sqlAdapter1.Fill(returns)

return returns.Tables[0]

}

catch (Exception ex)

{

throw (ex)

}

}

//返回一条记录

public static DataRow GetDataRow(string sql,string TableName)

{

try

{

SqlConnection sqlConnection=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["data"])

SqlDataAdapter sqlAdapter1 = new SqlDataAdapter(sql, sqlConnection)

DataSet product = new DataSet()

sqlAdapter1.Fill(product, TableName)

return product.Tables[0].Rows[0]

}

catch (Exception ex)

{

throw (ex)

}

}

//执行SQL语句,如UPDATE,INSERT等

public static void ExcSQL(string s)

{

SqlConnection sqlConnection=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["data"])

try

{

SqlCommand sqlCmd =new SqlCommand(s,sqlConnection)

sqlConnection.Open()

sqlCmd.ExecuteNonQuery()

}

catch (Exception ex)

{

throw (ex)

}

finally

{

sqlConnection.Close()

}

}

//获取用户短消息条数

public static int ShortMsgCount(string UserName)

{

try

{

string s="SELECT COUNT(*) AS cun FROM ShortMessage WHERE (systemmsg = 0) AND (Readed = 0) AND (UserName = '"+UserName+"')"

DataRow dr=GetDataRow(s,"ShortMessage")

return System.Convert.ToInt32(dr["cun"].ToString())

}

catch

{

return 0

}

}

//计算总共有多少条问题

public static int CalculateQRecord(int BID,int SID,int solved)

{

try

{

string s="SELECT COUNT(*) AS co FROM Questions WHERE (BigClass_ID = "+BID+") AND (SmallClass_ID = "+SID+") AND (kind >0) AND (kind <5) AND (solved = "+solved+")"

DataRow dr=GetDataRow(s,"Questions")

return System.Convert.ToInt32(dr["co"].ToString())

}

catch

{

return 0

}

}

//计算总共有多少条回复

public static int CalculateARecord(int QID)

{

try

{

string s="SELECT COUNT(*) AS co FROM Answers WHERE (Question_ID = "+QID+")"

DataRow dr=GetDataRow(s,"Answers")

return System.Convert.ToInt32(dr["co"].ToString())

}

catch

{

return 0

}

}

}

}

public partial class 商品的页面: System.Web.UI.Page

{

List<string>list

protected void Page_Load(object sender, EventArgs e)

{

if (!Page.IsPostBack)

{

// 这里是浏览商品的页面的Load

// 会话Session["track"]里边记录的是浏览过的东西,是个List,

// 如果商品名称唯一,可以用List<string>,记录商品的名称.

// 也可以用数值List<int>记录商品的ID,或者List<string>记录商品的ID数字串

string str = "这是我现在浏览的商品名称"// 这里你要从数据库获取此商品的名称或ID

List<string>list

if (Session["track"] == null)

{

// 新会话(第一次或以前的超时),创建新list的实例.

// 在配置文件中,<sessionState timeout="30" 设置超时数,这里是间隔30分钟不访问,会话丢失.

list = new List<string>()

}

else

{

// 会话存在,准备读取会话中的数据.

list = (List<string>)Session["track"]

}

if (list.Contains(str))

list.Remove(str) // 如果这次浏览的商品在浏览记录中,删除后重新添加进去,保持浏览顺序

if (list.Count == 10)

list.RemoveAt(0) // 浏览记录保存10个,到了10个删除最老的一个记录.

list.Add(str) // 浏览顺序为list[9] list[8].....list[1] list[0]

Session["track"] = list // 把list更新到Session

///////////////////////////////////////////////////////////////

for (int i = list.Count - 1i >= 0i--)

{

string name = list[i]

// 在这里处理浏览记录,倒着读list,然后转成超链接,你也可以显示出这个物品的图片信息等,显示到网页中.

}

this.list = list// 或者,你把list值保存到页面类的自定义属性里边,在其它地方处理.

}

.

.

.

.

.

.

}

默认情况下,session是作为cookie方式保存的.

<sessionState mode="[Off|InProc|StateServer|SQLServer|Custom]"

InProc 模式(默认),此模式将会话状态存储在 Web 服务器上的内存中。 这是默认值。关了浏览器就丢失了

StateServer 模式,此模式将会话状态存储在一个名为 ASP.NET 状态服务的单独进程中。 这确保了在重新启动 Web 应用程序时会保留会话状态,并让会话状态可用于网络场中的多个 Web 服务器。

SQLServer 模式将会话状态存储到一个 SQL Server 数据库中。 这确保了在重新启动 Web 应用程序时会保留会话状态,并让会话状态可用于网络场中的多个 Web 服务器。

Custom 模式,此模式允许您指定自定义存储提供程序。

如果你想要记录在客户端在关闭浏览器或以后上线还可存在,就要用StateServer和SQLServer模式.前者需要服务器启动状态服务(安装.net时带的一个组件),后者要求你的网站的数据库是asp.net自己配置的那个ASPNETDB.MDF文件.

使用cookie方法也差不多,cookie只能保存单个字符串,不能做为list保存,还有,需要自己手动管理超时时间.

另外,cookie是从Request.Cookies读取数据,从Response.Cookies保存数据.

把if (Session["track"] == null)

换成if (Request.Cookies["track"] == null)

把list = (List<string>)Session["track"]

换成list = new List<string>()

list.Add( Request.Cookies["track"]["0"])

.......

list.Add( Request.Cookies["track"]["9"])

还要判断Request.Cookies["track"]["0"] 到["9"] != null

把Session["track"] = list

换成Request.Cookies["track"]["0"] = list[0]

.........

Request.Cookies["track"]["9"] = list[9]

紧接着要Request.Cookies["track"]"].Expires = DateTime.Now.AddDays(50)//保存50天,可以直接设置时间用秒或50年.

麻烦,但好处是不要求数据库,不要状态服务,就可以保存数据50年.

可以通过百度Hi告知我

有时间可以解决你的问题

相近的要求也可以告知我

ES:\\8084A437708027028872EA2A424D66B4

交易提醒:预付定金是陷阱


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9679063.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存