当前位置:首页 » 编程语言 » 手写sql执行过程
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

手写sql执行过程

发布时间: 2022-10-30 13:33:54

‘壹’ 拜求高手写两sql存储过程语法

这个还需要过程需要过程来实现吗?直接两句SQL就能完成的啊
1、select count(1) from borrow where id = ?
2、insert into borrow(id,book_id)
select ?,1 from reader

‘贰’ 为什么要用微软企业库与自己手写SQL有啥区别

首先我们必须添加引用(dll在安装文件的目录中)using System.Data;using Microsoft.Practices.EnterpriseLibrary.Data;下面列出一些模块常用的获取数据、更新数据方法,其中有一些和直接使用ADO.NET中的方法很相似:方法功能ExecuteDataset,创建,加载,返回数据集LoadDataSet,加载数据到一个已经存在的数据集 TransactionScope,支多项事务同时执行,一旦发生异常则会回滚所有操作填充一个数据集,使用数据集更新数据库ExecuteReader,创建,返回一个provider独立的DbDataReader实例从数据库读取多行数据ExecuteNonQuery,执行command,返回数据库受影响的行数,可以通过output返回多个值ExecuteScalar,执行command,返回单个值第一行第一列的值执行command数据库命令对象ExecuteSproAccessor,使用存储过程返回一个客户端可以查询的序列对象ExecuteSqlStringAccessor,使用SQL语句返回一个客户端可以查询的序列对象以序列对象的形式返回数据ExecuteXmlReader,返回xml格式的数据,xmlReader类型,这个只能用在SQL Server数据库,通过SqlDatabase类调用,Database类中没有这个方法。获取xml格式数据(只能用在SQL Server数据库)GetStoredProcCommand,返回一个存储过程的数据库command对象GetSqlStringCommand,返回一个SQL语句的数据库command对象创建一个Command对象AddInParameter,创建一个新的input参数,并且加入command的参数集合AddOutParameter,创建一个新的output参数,并且加入command的参数集合AddParameter,创建一个指定类型的参数,并且加入command的参数集合GetParameterValue,以Object类型返回指定参数的值SetParameterValue,给指定参数赋值处理command的参数CreateConnection,创建,返回当前数据库的连接,允许你通过这个链接初始化和管理数据库事务处理数据库事务下面我们通过案例来演示以上常用的方法的使用:1、 首先我们来编辑配置文件:在菜单栏中选定BlocksAdd Data Setting来添加数据库的类型和连接字符串 [转载]如何使用微软企业库对数据库的访问name由应用程序访问的数据库实例的逻辑名称。在节中,名称必须是唯一的。此属性是必须的。providerName提供程序的名称。默认情况下,提供程序的名称定义在 Machine.config 文件中。providerName 名称必须是一个在 DBProviderFactory 类中指定的提供程序的名称。此属性是必须的。connectionString可用于被选的提供程序的连接字符串,此属性是必须的。 首先我们实例化一个DataBase private static Database db = DatabaseFactory.CreateDatabase("Test"); 1. ExecuteDataset:创建,加载,返回数据集,ExecuteScalar返回单个值第一行第一列的值string sql = "select * from [User]";DbCommand com = db.GetSqlStringCommand(sql);//执行并返回数据集rptTest.DataSource = db.ExecuteDataSet(com).Tables[0];rptTest.DataBind(); [转载]如何使用微软企业库对数据库的访问2 . LoadDataSet,加载数据到一个已经存在的数据集 private void LoadDataSet() { DataSet table; string sql = "select * from [User]"; DbCommand com = db.GetSqlStringCommand(sql); DbCommand com1 = db.GetSqlStringCommand(sql); table = db.ExecuteDataSet(com1); // 执行com 并将所得到得结果追加的数据集table中 db.LoadDataSet(com, table, "table"); rptTest.DataSource = table.Tables["table"]; rptTest.DataBind(); } [转载]如何使用微软企业库对数据库的访问3.ExecuteReader,创建,返回一个provider独立的DbDataReader实例 private void ExecuteReader() { string sql = "select * from [User]"; DbCommand com = db.GetSqlStringCommand(sql); IDataReader read = db.ExecuteReader(com); Label1.Text=" div class='left title' 姓名/divdiv class='right title' 邮箱/divdiv style='clear: both; width:200px' while (read.Read()) { //获取该列的所有信息 object[] values = new object[3]; read.GetValues(values); Label1.Text += "div class='left'" + values[0].ToString() + "/div" + "div class='left'" + values[2].ToString() + "/div } Label1.Text += "/div read.Close(); } [转载]如何使用微软企业库对数据库的访问4. ExecuteScalar,执行command,返回单个值第一行第一列的值 string sql = "select * from [User]"; DbCommand com = db.GetSqlStringCommand(sql); bl.Text = string.Format("第一行第一列的数据:{0}", db.ExecuteScalar(com).ToString()); [转载]如何使用微软企业库对数据库的访问5. GetSqlStringCommand方法用于 SQL 文本命令 protected void Page_Load(object sender, EventArgs e) { select(); } private void getSqlStringCommand(string sqlQuery) { //GetSqlStringCommand方法的使用 DbCommand com = db.GetSqlStringCommand(sqlQuery); db.ExecuteNonQuery(com); select(); }//为了区别添加数据跟已有数据区分开来 private static int ID = 0; //插入数据 protected void Insert_Click(object sender, EventArgs e) { getSqlStringCommand("insert[User] values('江苏迈瑞" + (ID++).ToString() + "'," + "'www.maxray.com','[email protected]') "); } //查询信息 private void select() { string sqlQuery = "select * from [User] "; DbCommand com = db.GetSqlStringCommand(sqlQuery); rptGetSqlStringCommand.DataSource = db.ExecuteDataSet(com).Tables[0]; rptGetSqlStringCommand.DataBind(); } //删除信息 protected void bntDelete_Click(object sender, EventArgs e) { getSqlStringCommand("delete [User] where UserName='江苏迈瑞"+ (ID--).ToString()+"'"); } //更新数据 protected void update_Click(object sender, EventArgs e) { getSqlStringCommand("update [User] set UserName='updata_江苏迈瑞' where UserName='测试1' "); } [转载]如何使用微软企业库对数据库的访问6. GetStoredProcCommand方法用于执行存储过程命令private void getStoredProcCommand() { //执行存储过程 (不带参数) DbCommand com = db.GetStoredProcCommand("proc_list"); rptGetStoredProcCommand.DataSource = db.ExecuteDataSet(com).Tables[0]; rptGetStoredProcCommand.DataBind(); } [转载]如何使用微软企业库对数据库的访问7.参数处理(存储过程和T-Sql中的参数)1. Database中的GetStoredProcCommand方法用于执行存储过程命令。2. Database中的GetSqlStringCommand方法用于 SQL 文本命令。二个方法都返回一个DbCommand对象。 (1)sql语句中的参数处理 string sql = "select * from [User] where ID=@ID "; DbCommand com=db.GetSqlStringCommand(sql);//添加参数 db.AddInParameter(com, "@ID", DbType.Int32, 1); rptTest.DataSource = db.ExecuteDataSet(com).Tables[0]; rptTest.DataBind();(2)存储过程中的参数处理(参数以“proc_“为存储过程)a)参数发现//直接指定参数的值,在这里要注意参数出现的顺序应与存储过程中的顺序相同。如果数据类型转换失败,则报出异常。 DbCommand com = db.GetStoredProcCommand("proc_Test","测试",12); db.ExecuteNonQuery(com); b) 处理参数 AddInParameter,创建一个新的input参数,并且加入command的参数集合AddOutParameter,创建一个新的output参数,并且加入command的参数集合AddParameter,创建一个指定类型的参数,并且加入command的参数集合GetParameterValue,以Object类型返回指定参数的值 private void GetStoredProcCommand() { DbCommand com = db.GetStoredProcCommand("proc_Login"); //设置指定参数的值、类型 db.AddInParameter(com, "@Psd", DbType.Int32, 12); db.AddInParameter(com, "@UserName", DbType.String, "1212"); //获取数据库中的返回值db.AddParameter(com, "@retrunvalue", DbType.String, ParameterDirection.ReturnValue, null, DataRowVersion.Current, null); db.AddOutParameter(com, "@outputEmail", DbType.String, 20);db.ExecuteNonQuery(com); string Rvalue=com.Parameters["@retrunvalue"].Value.ToString(); string OEmail= com.Parameters["@outputEmail"].Value.ToString(); string GValue = db.GetParameterValue(com,"@name").ToString(); lblInfo.Text = "div class='left title' 返回的参数为/divbr/ br/GetParameterValue=" + GValue + "br / AddOutParameter=" + OEmail + "br / ReturnValue=" + Rvalue; } 存储过程 ALTER proc [dbo].[proc_Login]@Psd varchar(50),@UserName varchar(50) ,@outputEmail varchar(50) outputAS BEGIN set @outputEmail=( SELECT Email FROM [User] WHERE Psd = @Psd and UserName=@UserName) return @@rowcount END [转载]如何使用微软企业库对数据库的访问8. ExecuteSproAccessor,使用存储过程返回一个客户端可以查询的序列对象 private void executeSproAccessor() { var student = db.ExecuteSprocAccessorStudent("proc_Test","江",1); Student[] std = student.ToArray(); for (int i = 0; i std.CountStudent i++) { Label1.Text += std[i].id + " " + std[i].email + " " + std[i].psd + " " + std[i].username + "br/ } } [转载]如何使用微软企业库对数据库的访问9. ExecuteSqlStringAccessor,使用SQL语句返回一个客户端可以查询的序列对象private void executeSproAccessor() { var student = db.("select * from [User]"); Student[] std = student.ToArray(); for (int i = 0; i std.CountStudent i++) { Label1.Text += std[i].id + " " + std[i].email + " " + std[i].psd + " " + std[i].username + "br/ } } [转载]如何使用微软企业库对数据库的访问10. ExecuteXmlReader,返回xml格式的数据,xmlReader类型,这个只能用在SQL Server数据库,通过SqlDatabase类调用,Database类中没有这个方法。private void executeXmlReader () { string sql = "SELECT * FROM [User] FOR XML AUTO"; Microsoft.Practices.EnterpriseLibrary.Data.Sql.SqlDatabasesqlDB=(Microsoft.Practices.EnterpriseLibrary.Data.Sql.SqlDatabase)db; DbCommand cmd = sqlDB.GetSqlStringCommand(sql); var reader = sqlDB.ExecuteXmlReader(cmd); string xml= "?xml version='1.0' encoding='utf-8' ?root while (!reader.EOF) { if ((reader.IsStartElement())) { xml += reader.ReadOuterXml(); } } xml += "root Response.Write(xml); Response.End(); } [转载]如何使用微软企业库对数据库的访问11. TransactionScope支多项事务同时执行,一旦发生异常则会回滚所有操作 protected void TransactionScope() {// insert操作会发生失败,同时会回滚delete事件 string sqlInsert = "insert [User] values('12','江苏迈瑞')"; string sqlDelete = "delete [User] where ID=8"; try { using (TransactionScope sp = new TransactionScope(TransactionScopeOption.RequiresNew)) { db.ExecuteNonQuery(CommandType.Text, sqlDelete); db.ExecuteNonQuery(CommandType.Text, sqlInsert); sp.Complete(); } } catch (Exception ex) { Response.Write(ex.Message); } }}

‘叁’ 求高手写个 sql语句

select BefoeName=(select B.BranchName from T_Branch AS B where BranchID=BefoerBranchID)
,AfterName=(select A.BranchName from T_Branch AS A where BranchID=AfterBranchID)
from T_transferRecord where WorkerID=@WorkerID
是否可以解决您的问题?

‘肆’ 求sql高手写sql查询语句,问题在补充里面!的图片上面

tim_spac的查询应该没错啊。
你得说明数据不准是啥意思。
如果是 SQLServer, 其中math,physics存在NULL(即有些人没有考试成绩)就会有些问题。
如改成 sum(isnull(math,0) + isnull(physics,9)), 去除字段中的某些NULL值。

‘伍’ 求高手写个sql查询语句

sc表为core表
select
gx.student_name,gx.score1 as 语文,gx.score2 as 数学 ,sc3.score as 英语
from
(select gs.student_name,gs. student_id, gs.score1,sc2.score as score2
from
(select student_name, student_id, score as score1 from student s inner join sc on s.student_id=sc.sid inner join course c on sc.cid=c.course_id where c.course_id='1')
gs inner join sc sc2 on gs.student_id=sc2.sid inner join course c2 on sc2.cid=c2.course_id where c2.course_id='2') gx
inner join sc sc3 on gx.student_id=sc3.sid inner join course c3 on sc3.cid=c3.course_id where c3.course_id='3'

‘陆’ 寻觅高手写Oracle SQL语句

这个一定能行:

select
name,
sum(case when state=1 then 1 else 0 end) "1",
sum(case when state=2 then 1 else 0 end) "2"
from 表名
group by name;

********************
补充:我写成这样只是为了方便看(这个符合程序开发的原则),如果非得弄成一行:
select name,sum(case when state=1 then 1 else 0 end) "1",sum(case when state=2 then 1 else 0 end) "2" from 表名 group by name;

实施log:
[TEST@ORA1] SQL>select * from test1;

N STATE
- ----------
A 1
A 1
A 2
B 1
B 2
B 2

6 rows selected.

[TEST@ORA1] SQL>select
2 name,
3 sum(case when state=1 then 1 else 0 end) "1",
4 sum(case when state=2 then 1 else 0 end) "2"
5 from test1
6 group by name;

NAME 1 2
---- ---------- ----------
A 2 1
B 1 2
********************

---
以上,希望对你有所帮助。

‘柒’ sql server中为什么手写存储过程却有错误

你这个是新建的存储过程,会出现这种情况。
数据库在新建一个对象后之后,并没有立马出现代码智能提示,可能会出现红色波浪线标注的"对象名**无效"的提示,这时只需要点击下“编辑->IntelliSense->刷新本地缓存",这样就会出现代码只能提示了。

‘捌’ 求高手写个sql实现两个表的数据的迁移。

不知道你什么数据库.
如果 Oracle , 倒是很省事。 创建一个序列号, 2个表共用。
A表插入的时候,取 下一个序列号, B表插入的时候,取当前序列号。

如果是 SQL Server 或者 MySQL 这种,用数据库系统自增的。
就自己控制好,别插入一条A,再插入两条B这种情况发生。
不过如果发生异常,还是会导致不匹配的。
例如首先插入A, 某些 Check 没通过,数据没插入,但是那个自增的ID可能被递增了。

想返回表A中最大的id和表B中最大的id的差值
倒是很简单
SELECT
MAX(A.id) - MAX(B.id) AS 差值
FROM
A FULL JOIN B ON (A.id = B.id)欢迎共同讨论!。www.365testing.com。DDDD

‘玖’ 求数据库高手写个sql语句

SELECT
DISTINCT
t1.key
FROM
t1
WHERE
t1.valuein
(
SELECT
t2.value
FROM
t2
)