在这里,我们将给大家分享关于无法使用存储过程pyodbcSQLSERVER创建数据库的知识,让您更了解无法使用com.mysql.jdbc的本质,同时也会涉及到如何更有效地C#调用ODBC连接SQLS
在这里,我们将给大家分享关于无法使用存储过程pyodbc SQL SERVER创建数据库的知识,让您更了解无法使用com.mysql.jdbc的本质,同时也会涉及到如何更有效地C#调用ODBC连接SQL Server数据库的存储过程、hibernate 调用存储过程 报错 数据库是sqlserver、java – 无法使用JDBC连接到Sql Server数据库、mssql server 创建数据库到存储过程与用户自定义函数的内容。
本文目录一览:- 无法使用存储过程pyodbc SQL SERVER创建数据库(无法使用com.mysql.jdbc)
- C#调用ODBC连接SQL Server数据库的存储过程
- hibernate 调用存储过程 报错 数据库是sqlserver
- java – 无法使用JDBC连接到Sql Server数据库
- mssql server 创建数据库到存储过程与用户自定义函数
无法使用存储过程pyodbc SQL SERVER创建数据库(无法使用com.mysql.jdbc)
我正在尝试调用从pyodbc创建数据库的存储过程
以下是代码的最小示例
import pyodbcconn = pyodbc.connect("Driver={SQL Server};Server=SERVERNAME;Trusted_Connection=yes;")cursor=conn.cursor()cursor.execute("""\ DECLARE @RC int DECLARE @ClientName varchar(255) SET @ClientName = ''Test'' EXECUTE @RC = [DB_NAME].[SCHEMA].[sp_NAME] @ClientName""")conn.commit()
理想情况下,该代码应在SQL Server实例中创建一个名为“ Test ”的数据库。这不会产生任何错误。但是没有创建数据库。
跑步
DECLARE @RC intDECLARE @ClientName varchar(255)SET @ClientName = ''Test''EXECUTE @RC = [DB_NAME].[SCHEMA].[sp_NAME] @ClientName
答案1
小编典典Python DB API2.0指定默认情况下,应在禁用自动提交的情况下打开连接。但是,许多数据库要求DDL语句
不在 事务内执行。尝试在禁用自动提交的情况下执行DDL语句可能会导致错误或意外结果。
因此,更安全的是确保在启用了自动提交的连接上执行DDL语句。这可以通过autocommit=True
在打开连接时进行设置来实现…
cnxn = pyodbc.connect(connection_string, autocommit=True)
…或通过启用autocommit
现有连接…
cnxn = pyodbc.connect(connection_string)# ...cnxn.autocommit = True
C#调用ODBC连接SQL Server数据库的存储过程
OdbcConnection con = new OdbcConnection("Driver={SQL Server};server=PC-200201070359;uid=sa;pwd=123;database=test;"); try
{
con.Open();
OdbcCommand command = new OdbcCommand();
command.Connection = con;
command.CommandType = CommandType.StoredProcedure;
//command.CommandText = "MaxAge"; //存储过程名称
command.CommandText = "{call MaxAge (?, ?,?)}";
//输入参数
OdbcParameter para = new OdbcParameter("@Name1", OdbcType.NVarChar, 10);
para.Value = "James";
command.Parameters.Add(para);
//输入参数
para = new OdbcParameter("@Name2", OdbcType.NVarChar, 10);
para.Value = "Mary";
command.Parameters.Add(para);
//输出参数(参数名称大小写无关)
para = new OdbcParameter("@MaxAge", OdbcType.Int, 4);
para.Direction = ParameterDirection.Output;
command.Parameters.Add(para);
int i = command.ExecuteNonQuery(); //执行成功返回-1
string k = command.Parameters["@Maxage"].Value.ToString();
}
catch (Exception ex)
{
//throw;
}
可能遇到的问题:
使用ODBC方法,只能方法时会报这样的异常:ERROR [42000] [Microsoft][ODBC SQL Server Driver][SQL Server]过程 ''MaxAge'' 需要参数 ''@Name1'',但未提供该参数。
解决办法:将command.CommandText = "MaxAge"; //存储过程名称 改为 command.CommandText = "{call MaxAge (?, ?,?)}";即可,目前原因未知;前面的方法在sqlclient中是可用的
更多可参看链接:http://www.cnblogs.com/gossip/archive/2009/06/15/1503884.html
hibernate 调用存储过程 报错 数据库是sqlserver
public List fy() { List result = (List) this.getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { String sql="{Call proc_pages(?,?,?,?,?,?,?,?)}"; Query query = session.createSQLQuery(sql); System.out.println(sql); query.setString(0, "tBuilding"); query.setString(1, "id"); query.setInteger(2, 0); query.setInteger(3, 0); query.setString(4, "*"); query.setInteger(5, 10); query.setInteger(6, 1); query.setString(7, ""); query.executeUpdate(); List list = query.list(); System.out.println("lsitlist" + list.size()); return list; } }); // for (Object tb1 : list) { // Tbuilding tb = (Tbuilding) tb1; // System.out.println("测试数据---------" + tb.getBuildingName()); // System.out.println("测试数据---------" + tb.getId()); // } return result; }
存储过程
USE [Test] GO /****** 对象: StoredProcedure [dbo].[proc_pages] 脚本日期: 07/18/2012 11:10:18 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[proc_pages] @strTable varchar(50), --表名 @strColumn varchar(50), --按该列来进行分页 @intColType int, --@strColumn列的类型,0-数字类型,1-字符类型,2-日期时间类型 @intOrder bit, --排序,0-顺序,1-倒序 @strColumnlist varchar(800), --要查询出的字段列表,*表示全部字段 @intPageSize int, --每页记录数 @intPageNum int, --指定页 @strWhere varchar(800), --查询条件 @intPageCount int OUTPUT --总页数 AS begin DECLARE @sql nvarchar(4000) --用于构造SQL语句 DECLARE @where1 varchar(800) --构造条件语句 DECLARE @where2 varchar(800) --构造条件语句 IF @strWhere is null or rtrim(@strWhere)='''' -- 为了避免SQL关键字与字段、表名等连在一起,首先为传入的变量添加空格 BEGIN --没有查询条件 print ''asdfasd'' SET @where1='' WHERE '' SET @where2='' '' END ELSE BEGIN --有查询条件 SET @where1='' WHERE (''+@strWhere+'') AND '' SET @where2='' WHERE (''+@strWhere+'') '' END set @strColumn = '' '' + @strColumn + '' '' set @strColumnlist = '' '' + @strColumnlist + '' '' --构造SQL语句,计算总页数。计算公式为 总页数 = Ceiling ( 记录个数 / 页大小 ) SET @sql=''SELECT @intPageCount=CEILING((COUNT(*)+0.0)/'' + CAST(@intPageSize AS varchar) + '') FROM '' + @strTable + @where2 --执行SQL语句,计算总页数,并将其放入@intPageCount变量中 EXEC sp_executesql @sql ,N''@intPageCount int OUTPUT'',@intPageCount OUTPUT --将总页数放到查询返回记录集的第一个字段前,此语句可省略 --SET @strColumnlist='' ''+Cast(@intPageCount as varchar(30)) + '' as PageCount,'' + @strColumnlist IF @intOrder=0 --构造升序的SQL SET @sql=''SELECT TOP ''+ CAST(@intPageSize AS varchar) + @strColumnlist + '' FROM '' + @strTable + @where1 + @strColumn + ''>(SELECT MAX(''+@strColumn+'') ''+ '' FROM (SELECT TOP ''+ CAST(@intPageSize*(@intPageNum - 1) AS varchar) + @strColumn + '' FROM ''+ @strTable+@where2+''ORDER BY ''+@strColumn+'') t) ORDER BY ''+ @strColumn ELSE --构造降序的SQL SET @sql=''SELECT TOP ''+ CAST(@intPageSize AS varchar) + @strColumnlist+ '' FROM ''+ @strTable + @where1 + @strColumn + ''<(SELECT MIN(''+@strColumn+'') ''+ '' FROM (SELECT TOP ''+ CAST(@intPageSize*(@intPageNum - 1) AS varchar) + @strColumn + '' FROM ''+ @strTable+@where2+''ORDER BY ''+@strColumn+'' DESC) t) ORDER BY ''+ @strColumn + '' DESC'' IF @intPageNum=1--第一页 SET @sql=''SELECT TOP ''+CAST(@intPageSize AS varchar) + @strColumnlist + '' FROM ''+@strTable+ @where2+''ORDER BY ''+@strColumn+CASE @intOrder WHEN 0 THEN '''' ELSE '' DESC'' END PRINT @sql print @intPageCount --EXEC(@sql) end
数据库名字是Test 表名是tBuilding 存储过程的名字是proc_pages
报错信息是:could not execute native bulk manipulation query; nested exception is org.hibernate.exception.SQLGrammarException: could not execute native bulk manipulation query
java – 无法使用JDBC连接到Sql Server数据库
使用连接向导我选择sql Server 2012并输入凭据和字段.
但是我收到无法建立连接的消息.
您可以看到输入字段的屏幕截图:
我也尝试使用“localhost”而不是“STIJN”这不起作用.我也尝试使用默认端口“1433”.也没用,但是这应该是什么端口?我在哪里可以看到我正在使用的端口?也许错误在于端口,否则我不知道我在哪里弄错了.
解决方法
在协议页面设置启用为是.
在“IP地址”页面上,滚动到底部.
TCP动态端口:54629
TCP端口:1433
申请并确定.
建立连接:
主持人:localhost
港口:1433
你的凭据
实例字段=空白.
这应该工作.
mssql server 创建数据库到存储过程与用户自定义函数
这里简单的笔记了关于mssql server 创建数据库到存储过程与用户自定义函数方法,有需要的朋友参考一下。
我们今天的关于无法使用存储过程pyodbc SQL SERVER创建数据库和无法使用com.mysql.jdbc的分享就到这里,谢谢您的阅读,如果想了解更多关于C#调用ODBC连接SQL Server数据库的存储过程、hibernate 调用存储过程 报错 数据库是sqlserver、java – 无法使用JDBC连接到Sql Server数据库、mssql server 创建数据库到存储过程与用户自定义函数的相关信息,可以在本站进行搜索。
本文标签: