您的位置:首页 > 数据库

.net开发中连接SQL SERVER数据库的问题

2017-07-05 17:33 225 查看
自己原来是负责javascript开发,但是最近这段时间打算自己做一个个人网站。

简单的表述一下吧,用到的技术方面大概是Html,css,javascript,用jq的库,没有使用到框架。 

因为自己之前没有做过完整的项目,所以在调用数据局数据的时候不知道怎么下手,自己也在网上学习了一番各位大佬的资料,于是有了这篇笔记啦。 

调用方法是ajax去调用C#写的ashx文件,通过ashx去连接sql server数据库.

以下数据库结构:

                                                               




以下是ashx文件code:

<%@ WebHandler Language="C#" Class="daysuda" %>

using System;
using System.Web;
using Newtonsoft.Json.Linq;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

public class daysuda : IHttpHandler
{

public void ProcessRequest(HttpContext context)
{
string result = "";
string result_desc ="";
result = "{\"Result\":\"-1\",\"ResultDesc\":\"\"}";
string connectionString = System.Configuration.ConfigurationManager.AppSettings["Czw_test"].ToString(); //Czw_test是要连接的数据库的名称

SqlConnection connection = null;
try
{
SqlCommand cmd =null;
DataSet ds = new DataSet();
SqlDataAdapter adapter = null;
string ActionCode = context.Request["ActionCode"].ToString();
result_desc = "";
connection = new SqlConnection(connectionString);
cmd = new SqlCommand();
connection.Open();
cmd.Connection = connection;
cmd.CommandType = CommandType.StoredProcedure; //此处定义调用的方法是调用存储过程
string Paras = context.Request["Paras"].ToString();
string[] para = Paras.Split(',');
switch (ActionCode)
{
case "0x1000": //登陆测试
//string script = "<script>alert(" + context.Request[para[2].ToString()].ToString() + ")</scritp>";
//context.Response.Write(script);
cmd.CommandText = "sys_UserLogin"; //存储过程名称
cmd.Parameters.Add("@P_login_name", context.Request["login_name"].ToString());
cmd.Parameters.Add("@P_pwd", context.Request["pwd"].ToString());
break;
}
adapter = new SqlDataAdapter(cmd);
adapter.Fill(ds);
JObject obj = new JObject();
DataTable tab_fst = ds.Tables[ds.Tables.Count-1];
foreach (DataRow dr in tab_fst.Rows) {
foreach (DataColumn dc in tab_fst.Columns)
{
obj.Add(dc.ColumnName, dr[dc.ColumnName].ToString());
}
}
JObject Rows = new JObject();
if (ds.Tables.Count > 1) {
DataTable tab_sec = ds.Tables[ds.Tables.Count - 2];
foreach (DataRow dr in tab_sec.Rows)
{
foreach (DataColumn dc in tab_sec.Columns)
{
Rows.Add(dc.ColumnName, dr[dc.ColumnName].ToString());
}
}
obj.Add("Rows",Rows);
}
result=obj.ToString();
cmd.Dispose();
}
catch (Exception ex)
{
result = "{\"Result\":\"-1\",\"ResultDesc\":\""+ex.ToString()+"!\"}";
if (connection!=null) connection.Close();
}
finally
{
if (connection != null) connection.Close();
}
context.Response.ContentType = "application/json";
context.Response.Write(result);
context.Response.End();
}

public bool IsReusable {
get {
return false;
}
}

}
web.config配置如下:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<httpRuntime requestValidationMode="2.0" maxQueryStringLength="10240" />
</system.web>
<appSettings>
<!--数据库 测试本地数据库名字是Czw_test-->
<add key="Czw_test" value="server=localhost;database=Czw_test;uid=sa;pwd=sa" />
</appSettings>
<connectionStrings>
<add name="Czw_test" connectionString="server=localhost;database=Czw_test;uid=sa;password=sa" providerName="System.Data.SqlClient" />
</connectionStrings>

<system.webServer>
<security>
<requestFiltering>
<fileExtensions>
<add fileExtension=".htc" allowed="true" />
</fileExtensions>
</requestFiltering>
</security>
</system.webServer>
</configuration>


在js种的调用方法是:

_this.Login = {
//登陆测试
login: function (login_name, pwd, suc_fn, err_fn) {
$.ajax({
url: "Servers/daySUDA.ashx",
type: "post",
cache: false,
async: true,
dataType: 'json',
//contentType: "application/json; charset=utf-8",
data: {
"Paras": "ActionCode,login_name,pwd,operate_user_id",
"ActionCode": "0x1000",
"login_name": login_name,
"pwd": pwd,
"operate_user_id": _this.user_id
},
success: function (jsonData) {
if (jsonData.Result > 0) {
suc_fn(jsonData);
}
else if (err_fn != null) {
err_fn(jsonData);
}
else {
AlertInfo("请求数据时出现异常!");
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
if (err_fn != null) {
err_fn(textStatus);
}
else {
AlertInfo("请求数据时出现异常!");
}
}
});
}

恩,已上就是具体的调用方法啦,结果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: